// // sub_180018310 from 0x180018310 to 0x180018415 (261 bytes) // // 3 xrefs: // > sub_180017450 @ 0x180017450 // > cocos2d::extension::CCHttpClient::~CCHttpClient @ 0x18001775c // > @ 0x18004aac4 // // 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 // void __fastcall sub_180018310(__int64 a1, __int64 a2) { __int64 v3; // rcx __int64 v4; // rdi __int64 v5; // rcx _QWORD *v6; // rsi __int64 v7; // rdi void *v8; // rcx _QWORD *v9; // rcx void *v10; // rcx v3 = *(_QWORD *)(a1 + 32); if ( v3 ) { do { v4 = *(_QWORD *)(*(_QWORD *)(a1 + 8) + 8 * ((*(_QWORD *)(a1 + 16) - 1LL) & (*(_QWORD *)(a1 + 24) - 1LL + v3))); v5 = *(_QWORD *)(v4 + 56); if ( v5 ) { LOBYTE(a2) = v5 != v4; (*(void (__fastcall **)(__int64, __int64))(*(_QWORD *)v5 + 32LL))(v5, a2); *(_QWORD *)(v4 + 56) = 0; } v3 = *(_QWORD *)(a1 + 32) - 1LL; *(_QWORD *)(a1 + 32) = v3; } while ( v3 ); *(_QWORD *)(a1 + 24) = 0; } v6 = (_QWORD *)(a1 + 8); if ( *(_QWORD *)(a1 + 8) ) { v7 = *(_QWORD *)(a1 + 16); if ( v7 ) { do { --v7; v8 = *(void **)(*v6 + 8 * v7); if ( v8 ) j_j_free(v8); } while ( v7 ); v6 = (_QWORD *)(a1 + 8); } v9 = (_QWORD *)*v6; if ( (unsigned __int64)(8LL * *(_QWORD *)(a1 + 16)) >= 0x1000 ) { if ( (unsigned __int64)v9 - *(v9 - 1) - 8 > 0x1F ) invalid_parameter_noinfo_noreturn(); v9 = (_QWORD *)*(v9 - 1); } j_j_free(v9); } v10 = *(void **)a1; *(_QWORD *)a1 = 0; *(_QWORD *)(a1 + 16) = 0; *v6 = 0; j_j_free(v10); }