// // cocos2d::extension::WebSocket::onSubThreadStarted from 0x18001a5a0 to 0x18001a7af (527 bytes) // // 3 xrefs: // > @ 0x180029030 // > @ 0x18002fdf8 // > @ 0x18004acf8 // // This function is hookable on this platform! // // Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA // Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings // // Hidden C++ exception states: #wind=1 void __fastcall cocos2d::extension::WebSocket::onSubThreadStarted(cocos2d::extension::WebSocket *this) { __int64 context; // rax __int64 v3; // rdi __int64 v4; // rax __int64 v5; // rcx __int64 v6; // rsi __int64 v7; // rdx __int64 v8; // r8 __int64 v9; // r9 __int64 v10; // rcx _QWORD *v11; // rax _QWORD *v12; // rax void **v13; // rax void *v14; // rcx _QWORD v15[2]; // [rsp+20h] [rbp-E0h] BYREF int v16; // [rsp+30h] [rbp-D0h] int v17; // [rsp+34h] [rbp-CCh] _QWORD *v18; // [rsp+38h] [rbp-C8h] __int64 v19; // [rsp+40h] [rbp-C0h] __int64 v20; // [rsp+48h] [rbp-B8h] void **v21; // [rsp+50h] [rbp-B0h] _BYTE v22[192]; // [rsp+58h] [rbp-A8h] BYREF _QWORD v23[84]; // [rsp+120h] [rbp+20h] BYREF void *Block[2]; // [rsp+3C0h] [rbp+2C0h] BYREF __m128i si128; // [rsp+3D0h] [rbp+2D0h] memset(v23, 0, 0x298u); LODWORD(v23[12]) = -1; v23[1] = *((_QWORD *)this + 16); *(_QWORD *)((char *)&v23[51] + 4) = -1; v23[54] = this; context = lws_create_context(v23); *((_QWORD *)this + 13) = context; if ( context ) { v3 = 0; *((_DWORD *)this + 2) = 0; *(_OWORD *)Block = 0; si128 = _mm_load_si128((const __m128i *)&xmmword_1800295E0); LOBYTE(Block[0]) = 0; v4 = *((_QWORD *)this + 16); if ( *(_QWORD *)(v4 + 8) ) { v5 = 0; v6 = 56; do { sub_180003A20(Block, *(_BYTE **)(v5 + v4)); if ( *(_QWORD *)(*((_QWORD *)this + 16) + v6 + 8) ) sub_1800039A0(Block, &unk_180028FB4, 2u); ++v3; v6 += 56; v5 = 56 * v3; v4 = *((_QWORD *)this + 16); } while ( *(_QWORD *)(v4 + 56 * v3 + 8) ); } v19 = 0; memset(v22, 0, sizeof(v22)); v10 = *((_QWORD *)this + 13); v15[0] = v10; v11 = (_QWORD *)((char *)this + 16); if ( *((_QWORD *)this + 5) > 0xFu ) v11 = (_QWORD *)*v11; v15[1] = v11; v16 = *((_DWORD *)this + 12); v12 = (_QWORD *)((char *)this + 56); if ( *((_QWORD *)this + 10) > 0xFu ) v12 = (_QWORD *)*v12; v18 = v12; v19 = lws_canonical_hostname(v10, v7, v8, v9, v15[0]); v20 = v19; v13 = Block; if ( si128.m128i_i64[1] > 0xFuLL ) v13 = (void **)Block[0]; v21 = v13; v17 = *((_DWORD *)this + 30); *((_QWORD *)this + 12) = lws_client_connect_via_info(v15); if ( si128.m128i_i64[1] > 0xFuLL ) { v14 = Block[0]; if ( (unsigned __int64)(si128.m128i_i64[1] + 1) >= 0x1000 ) { v14 = *((void **)Block[0] - 1); if ( (unsigned __int64)((char *)Block[0] - (char *)v14 - 8) > 0x1F ) invalid_parameter_noinfo_noreturn(); } j_j_free(v14); } } }