{"type": "func", "start": 6442550304, "end": 6442550433, "name": "sub_180018420", "pseudocode": "// \n// sub_180018420 from 0x180018420 to 0x1800184a1 (129 bytes)\n// \n// 4 xrefs:\n// > cocos2d::extension::CCHttpClient::~CCHttpClient @ 0x180017764\n// > int `std::locale::_Locimp::_Makeloc @ 0x180020da5\n// > <???> @ 0x18002f106\n// > <???> @ 0x18004aad0\n// \n// This function is hookable on this platform!\n// \n// Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA\n// Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings\n// \n\nvoid __fastcall sub_180018420(__int64 a1)\n{\n  _QWORD *v2; // rcx\n  _QWORD *v3; // rdx\n  _QWORD *i; // rax\n\n  v2 = *(_QWORD **)a1;\n  if ( v2 )\n  {\n    v3 = *(_QWORD **)(a1 + 8);\n    for ( i = v2; i != v3; i += 2 )\n    {\n      if ( *((_DWORD *)i + 2) )\n        terminate();\n    }\n    if ( ((*(_QWORD *)(a1 + 16) - (_QWORD)v2) & 0xFFFFFFFFFFFFFFF0uLL) >= 0x1000 )\n    {\n      if ( (unsigned __int64)v2 - *(v2 - 1) - 8 > 0x1F )\n        invalid_parameter_noinfo_noreturn();\n      v2 = (_QWORD *)*(v2 - 1);\n    }\n    j_j_free(v2);\n    *(_QWORD *)a1 = 0;\n    *(_QWORD *)(a1 + 8) = 0;\n    *(_QWORD *)(a1 + 16) = 0;\n  }\n}", "assembly": "; \n; sub_180018420 from 0x180018420 to 0x1800184a1 (129 bytes)\n; \n; 4 xrefs:\n; > cocos2d::extension::CCHttpClient::~CCHttpClient @ 0x180017764\n; > int `std::locale::_Locimp::_Makeloc @ 0x180020da5\n; > <???> @ 0x18002f106\n; > <???> @ 0x18004aad0\n; \n; This function is hookable on this platform!\n; \n; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA\n; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings\n; \n\npush    rbx                                                            ; +0x0, 0x180018420\nsub     rsp, 20h                                                       ; +0x2, 0x180018422\nmov     rbx, rcx                                                       ; +0x6, 0x180018426\nmov     rcx, [rcx]                                                     ; +0x9, 0x180018429\ntest    rcx, rcx                                                       ; +0xc, 0x18001842c\njz      short loc_18001848D                                            ; +0xf, 0x18001842f\nmov     rdx, [rbx+8]                                                   ; +0x11, 0x180018431\nmov     rax, rcx                                                       ; +0x15, 0x180018435\ncmp     rcx, rdx                                                       ; +0x18, 0x180018438\njz      short loc_18001844F                                            ; +0x1b, 0x18001843b\nnop     dword ptr [rax]                                                ; +0x1d, 0x18001843d\ncmp     dword ptr [rax+8], 0                                           ; +0x20, 0x180018440\njnz     short loc_180018493                                            ; +0x24, 0x180018444\nadd     rax, 10h                                                       ; +0x26, 0x180018446\ncmp     rax, rdx                                                       ; +0x2a, 0x18001844a\njnz     short loc_180018440                                            ; +0x2d, 0x18001844d\nmov     rdx, [rbx+10h]                                                 ; +0x2f, 0x18001844f\nsub     rdx, rcx                                                       ; +0x33, 0x180018453\nand     rdx, 0FFFFFFFFFFFFFFF0h                                        ; +0x36, 0x180018456\ncmp     rdx, 1000h                                                     ; +0x3a, 0x18001845a\njb      short loc_18001847B                                            ; +0x41, 0x180018461\nmov     r8, [rcx-8]                                                    ; +0x43, 0x180018463\nadd     rdx, 27h ; '''                                                 ; +0x47, 0x180018467\nsub     rcx, r8                                                        ; +0x4b, 0x18001846b\nlea     rax, [rcx-8]                                                   ; +0x4e, 0x18001846e\ncmp     rax, 1Fh                                                       ; +0x52, 0x180018472\nja      short loc_18001849A                                            ; +0x56, 0x180018476\nmov     rcx, r8; Block                                                 ; +0x58, 0x180018478\ncall    j_j_free                                                       ; +0x5b, 0x18001847b\nxor     eax, eax                                                       ; +0x60, 0x180018480\nmov     [rbx], rax                                                     ; +0x62, 0x180018482\nmov     [rbx+8], rax                                                   ; +0x65, 0x180018485\nmov     [rbx+10h], rax                                                 ; +0x69, 0x180018489\nadd     rsp, 20h                                                       ; +0x6d, 0x18001848d\npop     rbx                                                            ; +0x71, 0x180018491\nretn                                                                   ; +0x72, 0x180018492\ncall    cs:__imp_terminate                                             ; +0x73, 0x180018493\nalign 2                                                                ; +0x79, 0x180018499\ncall    cs:_invalid_parameter_noinfo_noreturn                          ; +0x7a, 0x18001849a\ndb 0CCh                                                                ; +0x80, 0x1800184a0", "xrefs": ["cocos2d::extension::CCHttpClient::~CCHttpClient @ 0x180017764", "int `std::locale::_Locimp::_Makeloc @ 0x180020da5", "<???> @ 0x18002f106", "<???> @ 0x18004aad0"], "is_objc": false, "is_arm32": false, "is_arm64": false, "bida_info": "8.0.0 @ https://github.com/Stazzical/BromaIDA", "bindings_info": "commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings"}