// // sub_18001DA20 from 0x18001da20 to 0x18001db69 (329 bytes) // // 4 xrefs: // > cocos2d::extension::CCTableView::operator= @ 0x18001cb1e // > @ 0x18002f994 // > @ 0x18002f9a4 // > @ 0x18004b070 // // 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 // char *__fastcall sub_18001DA20(void **a1, char *a2, unsigned __int64 a3) { char *v3; // rdi char *v6; // r15 unsigned __int64 v7; // rcx size_t v8; // rbx void *v9; // rcx unsigned __int64 v10; // rsi v3 = (char *)*a1; v6 = a2; v7 = ((_BYTE *)a1[2] - (_BYTE *)*a1) >> 2; if ( a3 <= v7 ) { v9 = v3; v10 = ((_BYTE *)a1[1] - v3) >> 2; if ( a3 <= v10 ) { v8 = 4 * a3; } else { memmove(v3, a2, 4 * v10); v3 = (char *)a1[1]; a2 = &v6[4 * v10]; v9 = v3; v8 = 4 * (a3 - v10); } memmove(v9, a2, v8); } else { if ( a3 > 0x3FFFFFFFFFFFFFFFLL ) sub_180003530(); if ( v3 ) { if ( 4 * v7 >= 0x1000 ) { if ( (unsigned __int64)&v3[-*((_QWORD *)v3 - 1) - 8] > 0x1F ) invalid_parameter_noinfo_noreturn(); v3 = *((char **)v3 - 1); } j_j_free(v3); *a1 = nullptr; a1[1] = nullptr; a1[2] = nullptr; } sub_18001DE50(a1); v3 = (char *)*a1; v8 = 4 * a3; memmove(*a1, v6, 4 * a3); } a1[1] = &v3[v8]; return &v3[v8]; }