// // cocos2d::extension::CCHttpClient::send from 0x180017a10 to 0x180017b9b (395 bytes) // // 2 xrefs: // > @ 0x18002fdf8 // > @ 0x18004aa94 // // 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=3 void __fastcall cocos2d::extension::CCHttpClient::send( cocos2d::extension::CCHttpClient *this, struct cocos2d::extension::CCHttpRequest *a2) { __int64 v4; // rsi __int64 v5; // r8 __int64 v6; // rbp __int64 v7; // rbp _QWORD *v8; // rdx _QWORD v9[7]; // [rsp+40h] [rbp-68h] BYREF _QWORD *v10; // [rsp+78h] [rbp-30h] if ( a2 ) { cocos2d::CCObject::retain(a2); v9[0] = &std::_Func_impl_no_alloc<_lambda_ad044ab4199c6678eabf6fbd29b3d029_,void,>::`vftable'; v9[1] = a2; v10 = v9; v4 = *((_QWORD *)this + 7); if ( Mtx_lock((_Mtx_t)(v4 + 64)) ) { std::_Throw_Cpp_error(5); __debugbreak(); } if ( *(_DWORD *)(v4 + 140) == 0x7FFFFFFF ) { *(_DWORD *)(v4 + 140) = 2147483646; std::_Throw_Cpp_error(6); __debugbreak(); } if ( *(_BYTE *)(v4 + 216) ) { Mtx_unlock((_Mtx_t)(v4 + 64)); } else { if ( *(_QWORD *)(v4 + 40) <= (unsigned __int64)(*(_QWORD *)(v4 + 56) + 1LL) ) sub_180018530(v4 + 24); v5 = *(_QWORD *)(v4 + 40) - 1LL; *(_QWORD *)(v4 + 48) &= v5; v6 = 8 * ((*(_QWORD *)(v4 + 56) + *(_QWORD *)(v4 + 48)) & v5); if ( !*(_QWORD *)(*(_QWORD *)(v4 + 32) + v6) ) *(_QWORD *)(*(_QWORD *)(v4 + 32) + v6) = operator new(0x40u); v7 = *(_QWORD *)(*(_QWORD *)(v4 + 32) + v6); *(_QWORD *)(v7 + 56) = 0; if ( v10 ) *(_QWORD *)(v7 + 56) = (*(__int64 (__fastcall **)(_QWORD *, __int64))*v10)(v10, v7); ++*(_QWORD *)(v4 + 56); Mtx_unlock((_Mtx_t)(v4 + 64)); Cnd_signal((_Cnd_t)(v4 + 144)); } if ( v10 ) { v8 = v9; LOBYTE(v8) = v10 != v9; (*(void (__fastcall **)(_QWORD *, _QWORD *))(*v10 + 32LL))(v10, v8); } } }