// // sub_180018D70 from 0x180018d70 to 0x180018ea2 (306 bytes) // // 8 xrefs: // > sub_180017BA0 @ 0x18001805e // > sub_180017BA0 @ 0x180018075 // > cocos2d::extension::CCHttpResponse::setResponseData @ 0x180018ce4 // > cocos2d::extension::CCHttpResponse::setResponseHeader @ 0x180018eb4 // > cocos2d::extension::CCHttpRequest::operator= @ 0x18001d567 // > cocos2d::extension::CCHttpResponse::operator= @ 0x18001d80d // > cocos2d::extension::CCHttpResponse::operator= @ 0x18001d81a // > @ 0x18004ab9c // // 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 // __int64 __fastcall sub_180018D70(__int64 a1, char **a2) { char *v3; // r14 size_t v4; // rsi _QWORD *v5; // rbx unsigned __int64 v6; // rdx size_t v7; // rbp unsigned __int64 v8; // rcx char *v9; // rax unsigned __int64 v11; // rbp char *v12; // rbx size_t v13; // rsi if ( (char **)a1 != a2 ) { v3 = *a2; v4 = a2[1] - *a2; v5 = *(_QWORD **)a1; v6 = *(_QWORD *)(a1 + 16) - *(_QWORD *)a1; if ( v4 <= v6 ) { v11 = *(_QWORD *)(a1 + 8) - (_QWORD)v5; if ( v4 > v11 ) { memmove(*(void **)a1, v3, *(_QWORD *)(a1 + 8) - (_QWORD)v5); v12 = *(char **)(a1 + 8); v13 = v4 - v11; memmove(v12, &v3[v11], v13); v9 = &v12[v13]; goto LABEL_14; } } else { v7 = 0x7FFFFFFFFFFFFFFFLL; if ( v4 > 0x7FFFFFFFFFFFFFFFLL ) sub_180003530(); v8 = v6 >> 1; if ( v6 <= 0x7FFFFFFFFFFFFFFFLL - (v6 >> 1) ) { v7 = v8 + v6; if ( v8 + v6 < v4 ) v7 = v4; } if ( v5 ) { if ( v6 >= 0x1000 ) { if ( (unsigned __int64)v5 - *(v5 - 1) - 8 > 0x1F ) invalid_parameter_noinfo_noreturn(); v5 = (_QWORD *)*(v5 - 1); } j_j_free(v5); *(_QWORD *)a1 = 0; *(_QWORD *)(a1 + 8) = 0; *(_QWORD *)(a1 + 16) = 0; } sub_180018CF0((_QWORD *)a1, v7); v5 = *(_QWORD **)a1; } memmove(v5, v3, v4); v9 = (char *)v5 + v4; LABEL_14: *(_QWORD *)(a1 + 8) = v9; } return a1; }