{"type": "func", "start": 6442558880, "end": 6442559407, "name": "cocos2d::extension::WebSocket::onSubThreadStarted", "pseudocode": "// \n// cocos2d::extension::WebSocket::onSubThreadStarted from 0x18001a5a0 to 0x18001a7af (527 bytes)\n// \n// 3 xrefs:\n// > <???> @ 0x180029030\n// > <???> @ 0x18002fdf8\n// > <???> @ 0x18004acf8\n// \n// This function is hookable on this platform!\n// \n// Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA\n// Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings\n// \n\n// Hidden C++ exception states: #wind=1\nvoid __fastcall cocos2d::extension::WebSocket::onSubThreadStarted(cocos2d::extension::WebSocket *this)\n{\n  __int64 context; // rax\n  __int64 v3; // rdi\n  __int64 v4; // rax\n  __int64 v5; // rcx\n  __int64 v6; // rsi\n  __int64 v7; // rdx\n  __int64 v8; // r8\n  __int64 v9; // r9\n  __int64 v10; // rcx\n  _QWORD *v11; // rax\n  _QWORD *v12; // rax\n  void **v13; // rax\n  void *v14; // rcx\n  _QWORD v15[2]; // [rsp+20h] [rbp-E0h] BYREF\n  int v16; // [rsp+30h] [rbp-D0h]\n  int v17; // [rsp+34h] [rbp-CCh]\n  _QWORD *v18; // [rsp+38h] [rbp-C8h]\n  __int64 v19; // [rsp+40h] [rbp-C0h]\n  __int64 v20; // [rsp+48h] [rbp-B8h]\n  void **v21; // [rsp+50h] [rbp-B0h]\n  _BYTE v22[192]; // [rsp+58h] [rbp-A8h] BYREF\n  _QWORD v23[84]; // [rsp+120h] [rbp+20h] BYREF\n  void *Block[2]; // [rsp+3C0h] [rbp+2C0h] BYREF\n  __m128i si128; // [rsp+3D0h] [rbp+2D0h]\n\n  memset(v23, 0, 0x298u);\n  LODWORD(v23[12]) = -1;\n  v23[1] = *((_QWORD *)this + 16);\n  *(_QWORD *)((char *)&v23[51] + 4) = -1;\n  v23[54] = this;\n  context = lws_create_context(v23);\n  *((_QWORD *)this + 13) = context;\n  if ( context )\n  {\n    v3 = 0;\n    *((_DWORD *)this + 2) = 0;\n    *(_OWORD *)Block = 0;\n    si128 = _mm_load_si128((const __m128i *)&xmmword_1800295E0);\n    LOBYTE(Block[0]) = 0;\n    v4 = *((_QWORD *)this + 16);\n    if ( *(_QWORD *)(v4 + 8) )\n    {\n      v5 = 0;\n      v6 = 56;\n      do\n      {\n        sub_180003A20(Block, *(_BYTE **)(v5 + v4));\n        if ( *(_QWORD *)(*((_QWORD *)this + 16) + v6 + 8) )\n          sub_1800039A0(Block, &unk_180028FB4, 2u);\n        ++v3;\n        v6 += 56;\n        v5 = 56 * v3;\n        v4 = *((_QWORD *)this + 16);\n      }\n      while ( *(_QWORD *)(v4 + 56 * v3 + 8) );\n    }\n    v19 = 0;\n    memset(v22, 0, sizeof(v22));\n    v10 = *((_QWORD *)this + 13);\n    v15[0] = v10;\n    v11 = (_QWORD *)((char *)this + 16);\n    if ( *((_QWORD *)this + 5) > 0xFu )\n      v11 = (_QWORD *)*v11;\n    v15[1] = v11;\n    v16 = *((_DWORD *)this + 12);\n    v12 = (_QWORD *)((char *)this + 56);\n    if ( *((_QWORD *)this + 10) > 0xFu )\n      v12 = (_QWORD *)*v12;\n    v18 = v12;\n    v19 = lws_canonical_hostname(v10, v7, v8, v9, v15[0]);\n    v20 = v19;\n    v13 = Block;\n    if ( si128.m128i_i64[1] > 0xFuLL )\n      v13 = (void **)Block[0];\n    v21 = v13;\n    v17 = *((_DWORD *)this + 30);\n    *((_QWORD *)this + 12) = lws_client_connect_via_info(v15);\n    if ( si128.m128i_i64[1] > 0xFuLL )\n    {\n      v14 = Block[0];\n      if ( (unsigned __int64)(si128.m128i_i64[1] + 1) >= 0x1000 )\n      {\n        v14 = *((void **)Block[0] - 1);\n        if ( (unsigned __int64)((char *)Block[0] - (char *)v14 - 8) > 0x1F )\n          invalid_parameter_noinfo_noreturn();\n      }\n      j_j_free(v14);\n    }\n  }\n}", "assembly": "; \n; cocos2d::extension::WebSocket::onSubThreadStarted from 0x18001a5a0 to 0x18001a7af (527 bytes)\n; \n; 3 xrefs:\n; > <???> @ 0x180029030\n; > <???> @ 0x18002fdf8\n; > <???> @ 0x18004acf8\n; \n; This function is hookable on this platform!\n; \n; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA\n; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings\n; \n\nmov     [rsp-8+arg_8], rbx                                             ; +0x0, 0x18001a5a0\nmov     [rsp-8+arg_10], rsi                                            ; +0x5, 0x18001a5a5\nmov     [rsp-8+arg_18], rdi                                            ; +0xa, 0x18001a5aa\npush    rbp                                                            ; +0xf, 0x18001a5af\nlea     rbp, [rsp-2F0h]                                                ; +0x10, 0x18001a5b0\nsub     rsp, 3F0h                                                      ; +0x18, 0x18001a5b8\nmov     rax, cs:__security_cookie                                      ; +0x1f, 0x18001a5bf\nxor     rax, rsp                                                       ; +0x26, 0x18001a5c6\nmov     [rbp+2F0h+var_10], rax                                         ; +0x29, 0x18001a5c9\nmov     rbx, rcx                                                       ; +0x30, 0x18001a5d0\nxor     edx, edx; Val                                                  ; +0x33, 0x18001a5d3\nmov     r8d, 298h; Size                                                ; +0x35, 0x18001a5d5\nlea     rcx, [rbp+2F0h+var_2D0]; void *                                ; +0x3b, 0x18001a5db\ncall    memset                                                         ; +0x3f, 0x18001a5df\nmov     [rbp+2F0h+var_270], 0FFFFFFFFh                                 ; +0x44, 0x18001a5e4\nmov     rax, [rbx+80h]                                                 ; +0x4e, 0x18001a5ee\nmov     [rbp+2F0h+var_2C8], rax                                        ; +0x55, 0x18001a5f5\nmov     [rbp+2F0h+var_134], 0FFFFFFFFFFFFFFFFh                         ; +0x59, 0x18001a5f9\nmov     [rbp+2F0h+var_120], rbx                                        ; +0x64, 0x18001a604\nlea     rcx, [rbp+2F0h+var_2D0]                                        ; +0x6b, 0x18001a60b\ncall    cs:lws_create_context                                          ; +0x6f, 0x18001a60f\nmov     [rbx+68h], rax                                                 ; +0x75, 0x18001a615\ntest    rax, rax                                                       ; +0x79, 0x18001a619\njz      loc_18001A787                                                  ; +0x7c, 0x18001a61c\nxor     edi, edi                                                       ; +0x82, 0x18001a622\nmov     [rbx+8], edi                                                   ; +0x84, 0x18001a624\nxorps   xmm0, xmm0                                                     ; +0x87, 0x18001a627\nmovups  xmmword ptr [rbp+2F0h+Block], xmm0                             ; +0x8a, 0x18001a62a\nmovdqa  xmm1, cs:xmmword_1800295E0                                     ; +0x91, 0x18001a631\nmovdqu  [rbp+2F0h+var_20], xmm1                                        ; +0x99, 0x18001a639\nmov     byte ptr [rbp+2F0h+Block], dil                                 ; +0xa1, 0x18001a641\nmov     rax, [rbx+80h]                                                 ; +0xa8, 0x18001a648\ncmp     [rax+8], rdi                                                   ; +0xaf, 0x18001a64f\njz      short loc_18001A6B2                                            ; +0xb3, 0x18001a653\nmov     ecx, edi                                                       ; +0xb5, 0x18001a655\nlea     esi, [rdi+38h]                                                 ; +0xb7, 0x18001a657\nnop     word ptr [rax+rax+00h]                                         ; +0xba, 0x18001a65a\nmov     rdx, [rcx+rax]                                                 ; +0xc0, 0x18001a660\nlea     rcx, [rbp+2F0h+Block]; Src                                     ; +0xc4, 0x18001a664\ncall    sub_180003A20                                                  ; +0xcb, 0x18001a66b\nmov     rax, [rbx+80h]                                                 ; +0xd0, 0x18001a670\ncmp     qword ptr [rax+rsi+8], 0                                       ; +0xd7, 0x18001a677\njz      short loc_18001A698                                            ; +0xdd, 0x18001a67d\nmov     r8d, 2                                                         ; +0xdf, 0x18001a67f\nlea     rdx, unk_180028FB4                                             ; +0xe5, 0x18001a685\nlea     rcx, [rbp+2F0h+Block]; Src                                     ; +0xec, 0x18001a68c\ncall    sub_1800039A0                                                  ; +0xf3, 0x18001a693\ninc     rdi                                                            ; +0xf8, 0x18001a698\nadd     rsi, 38h ; '8'                                                 ; +0xfb, 0x18001a69b\nimul    rcx, rdi, 38h ; '8'                                            ; +0xff, 0x18001a69f\nmov     rax, [rbx+80h]                                                 ; +0x103, 0x18001a6a3\ncmp     qword ptr [rax+rcx+8], 0                                       ; +0x10a, 0x18001a6aa\njnz     short loc_18001A660                                            ; +0x110, 0x18001a6b0\nxor     eax, eax                                                       ; +0x112, 0x18001a6b2\nmov     [rsp+3F0h+var_3B0], rax                                        ; +0x114, 0x18001a6b4\nxor     edx, edx; Val                                                  ; +0x119, 0x18001a6b9\nmov     r8d, 0C0h; Size                                                ; +0x11b, 0x18001a6bb\nlea     rcx, [rsp+3F0h+var_398]; void *                                ; +0x121, 0x18001a6c1\ncall    memset                                                         ; +0x126, 0x18001a6c6\nmov     rcx, [rbx+68h]                                                 ; +0x12b, 0x18001a6cb\nmov     [rsp+3F0h+var_3D0], rcx                                        ; +0x12f, 0x18001a6cf\nlea     rax, [rbx+10h]                                                 ; +0x134, 0x18001a6d4\ncmp     qword ptr [rax+18h], 0Fh                                       ; +0x138, 0x18001a6d8\njbe     short loc_18001A6E2                                            ; +0x13d, 0x18001a6dd\nmov     rax, [rax]                                                     ; +0x13f, 0x18001a6df\nmov     [rsp+3F0h+var_3C8], rax                                        ; +0x142, 0x18001a6e2\nmov     eax, [rbx+30h]                                                 ; +0x147, 0x18001a6e7\nmov     [rsp+3F0h+var_3C0], eax                                        ; +0x14a, 0x18001a6ea\nlea     rax, [rbx+38h]                                                 ; +0x14e, 0x18001a6ee\ncmp     qword ptr [rax+18h], 0Fh                                       ; +0x152, 0x18001a6f2\njbe     short loc_18001A6FC                                            ; +0x157, 0x18001a6f7\nmov     rax, [rax]                                                     ; +0x159, 0x18001a6f9\nmov     [rsp+3F0h+var_3B8], rax                                        ; +0x15c, 0x18001a6fc\ncall    cs:lws_canonical_hostname                                      ; +0x161, 0x18001a701\nmov     [rsp+3F0h+var_3B0], rax                                        ; +0x167, 0x18001a707\nmov     [rsp+3F0h+var_3A8], rax                                        ; +0x16c, 0x18001a70c\nlea     rax, [rbp+2F0h+Block]                                          ; +0x171, 0x18001a711\ncmp     qword ptr [rbp+2F0h+var_20+8], 0Fh                             ; +0x178, 0x18001a718\ncmova   rax, [rbp+2F0h+Block]                                          ; +0x180, 0x18001a720\nmov     [rsp+3F0h+var_3A0], rax                                        ; +0x188, 0x18001a728\nmov     eax, [rbx+78h]                                                 ; +0x18d, 0x18001a72d\nmov     [rsp+3F0h+var_3BC], eax                                        ; +0x190, 0x18001a730\nlea     rcx, [rsp+3F0h+var_3D0]                                        ; +0x194, 0x18001a734\ncall    cs:lws_client_connect_via_info                                 ; +0x199, 0x18001a739\nmov     [rbx+60h], rax                                                 ; +0x19f, 0x18001a73f\nmov     rdx, qword ptr [rbp+2F0h+var_20+8]                             ; +0x1a3, 0x18001a743\ncmp     rdx, 0Fh                                                       ; +0x1aa, 0x18001a74a\njbe     short loc_18001A787                                            ; +0x1ae, 0x18001a74e\ninc     rdx                                                            ; +0x1b0, 0x18001a750\nmov     rcx, [rbp+2F0h+Block]; Block                                   ; +0x1b3, 0x18001a753\nmov     rax, rcx                                                       ; +0x1ba, 0x18001a75a\ncmp     rdx, 1000h                                                     ; +0x1bd, 0x18001a75d\njb      short loc_18001A782                                            ; +0x1c4, 0x18001a764\nadd     rdx, 27h ; '''                                                 ; +0x1c6, 0x18001a766\nmov     rcx, [rcx-8]                                                   ; +0x1ca, 0x18001a76a\nsub     rax, rcx                                                       ; +0x1ce, 0x18001a76e\nadd     rax, 0FFFFFFFFFFFFFFF8h                                        ; +0x1d1, 0x18001a771\ncmp     rax, 1Fh                                                       ; +0x1d5, 0x18001a775\njbe     short loc_18001A782                                            ; +0x1d9, 0x18001a779\ncall    cs:_invalid_parameter_noinfo_noreturn                          ; +0x1db, 0x18001a77b\nalign 2                                                                ; +0x1e1, 0x18001a781\ncall    j_j_free                                                       ; +0x1e2, 0x18001a782\nmov     rcx, [rbp+2F0h+var_10]                                         ; +0x1e7, 0x18001a787\nxor     rcx, rsp; StackCookie                                          ; +0x1ee, 0x18001a78e\ncall    __security_check_cookie                                        ; +0x1f1, 0x18001a791\nlea     r11, [rsp+3F0h+var_s0]                                         ; +0x1f6, 0x18001a796\nmov     rbx, [r11+18h]                                                 ; +0x1fe, 0x18001a79e\nmov     rsi, [r11+20h]                                                 ; +0x202, 0x18001a7a2\nmov     rdi, [r11+28h]                                                 ; +0x206, 0x18001a7a6\nmov     rsp, r11                                                       ; +0x20a, 0x18001a7aa\npop     rbp                                                            ; +0x20d, 0x18001a7ad\nretn                                                                   ; +0x20e, 0x18001a7ae", "xrefs": ["<???> @ 0x180029030", "<???> @ 0x18002fdf8", "<???> @ 0x18004acf8"], "is_objc": false, "is_arm32": false, "is_arm64": false, "bida_info": "8.0.0 @ https://github.com/Stazzical/BromaIDA", "bindings_info": "commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings"}