{"type": "func", "start": 6442572656, "end": 6442573169, "name": "sub_18001DB70", "pseudocode": "// \n// sub_18001DB70 from 0x18001db70 to 0x18001dd71 (513 bytes)\n// \n// 3 xrefs:\n// > cocos2d::extension::CCHttpRequest::setHeaders @ 0x18001d3f7\n// > cocos2d::extension::CCHttpRequest::operator= @ 0x18001d5da\n// > <???> @ 0x18004b094\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\n// Hidden C++ exception states: #wind=1\nvoid __fastcall sub_18001DB70(void ***a1, void **a2, unsigned __int64 a3)\n{\n  unsigned __int64 v3; // rbp\n  void **v6; // rdi\n  unsigned __int64 v7; // rcx\n  unsigned __int64 v8; // rsi\n  unsigned __int64 v9; // rdx\n  void **v10; // rcx\n  __int64 j; // rdi\n  __int64 v12; // rsi\n  unsigned __int64 v13; // r15\n  void *v14; // rdx\n  unsigned __int64 i; // rbp\n  __int64 v16; // rdx\n  void *v17; // rdx\n\n  v3 = a3;\n  v6 = *a1;\n  v7 = ((char *)a1[2] - (char *)*a1) >> 5;\n  if ( a3 <= v7 )\n  {\n    v12 = (__int64)a1[1];\n    v13 = (v12 - (__int64)v6) >> 5;\n    if ( a3 <= v13 )\n    {\n      v12 = (__int64)&v6[4 * a3];\n      if ( a3 )\n      {\n        do\n        {\n          if ( v6 != a2 )\n          {\n            v17 = a2;\n            if ( (unsigned __int64)a2[3] > 0xF )\n              v17 = *a2;\n            sub_180003BC0(v6, v17, (size_t)a2[2]);\n          }\n          v6 += 4;\n          a2 += 4;\n          --v3;\n        }\n        while ( v3 );\n      }\n      v16 = (__int64)a1[1];\n    }\n    else\n    {\n      for ( ; v6 != (void **)v12; v12 = (__int64)a1[1] )\n      {\n        if ( v6 != a2 )\n        {\n          v14 = a2;\n          if ( (unsigned __int64)a2[3] > 0xF )\n            v14 = *a2;\n          sub_180003BC0(v6, v14, (size_t)a2[2]);\n        }\n        v6 += 4;\n        a2 += 4;\n      }\n      for ( i = v3 - v13; i; --i )\n      {\n        sub_180003F50(v12, (__int64)a2);\n        v12 += 32;\n        a2 += 4;\n      }\n      v16 = v12;\n    }\n    sub_1800036B0(v12, v16);\n    a1[1] = (void **)v12;\n  }\n  else\n  {\n    v8 = 0x7FFFFFFFFFFFFFFLL;\n    if ( a3 > 0x7FFFFFFFFFFFFFFLL )\n      sub_180003530();\n    v9 = v7 >> 1;\n    if ( v7 <= 0x7FFFFFFFFFFFFFFLL - (v7 >> 1) )\n    {\n      v8 = v9 + v7;\n      if ( v9 + v7 < a3 )\n        v8 = a3;\n    }\n    if ( v6 )\n    {\n      sub_1800036B0((__int64)v6, (__int64)a1[1]);\n      v10 = *a1;\n      if ( (((char *)a1[2] - (char *)*a1) & 0xFFFFFFFFFFFFFFE0uLL) >= 0x1000 )\n      {\n        if ( (unsigned __int64)((char *)v10 - (_BYTE *)*(v10 - 1) - 8) > 0x1F )\n          invalid_parameter_noinfo_noreturn();\n        v10 = (void **)*(v10 - 1);\n      }\n      j_j_free(v10);\n      *a1 = nullptr;\n      a1[1] = nullptr;\n      a1[2] = nullptr;\n    }\n    sub_180003550(a1, v8);\n    for ( j = (__int64)*a1; v3; --v3 )\n    {\n      sub_180003F50(j, (__int64)a2);\n      j += 32;\n      a2 += 4;\n    }\n    sub_1800036B0(j, j);\n    a1[1] = (void **)j;\n  }\n}", "assembly": "; \n; sub_18001DB70 from 0x18001db70 to 0x18001dd71 (513 bytes)\n; \n; 3 xrefs:\n; > cocos2d::extension::CCHttpRequest::setHeaders @ 0x18001d3f7\n; > cocos2d::extension::CCHttpRequest::operator= @ 0x18001d5da\n; > <???> @ 0x18004b094\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\nmov     [rsp+arg_0], rbx                                               ; +0x0, 0x18001db70\nmov     [rsp+arg_8], rbp                                               ; +0x5, 0x18001db75\nmov     [rsp+arg_10], rsi                                              ; +0xa, 0x18001db7a\npush    rdi                                                            ; +0xf, 0x18001db7f\npush    r14                                                            ; +0x10, 0x18001db80\npush    r15                                                            ; +0x12, 0x18001db82\nsub     rsp, 40h                                                       ; +0x14, 0x18001db84\nmov     rbp, r8                                                        ; +0x18, 0x18001db88\nmov     rbx, rdx                                                       ; +0x1b, 0x18001db8b\nmov     r14, rcx                                                       ; +0x1e, 0x18001db8e\nmov     rdi, [rcx]                                                     ; +0x21, 0x18001db91\nmov     rcx, [rcx+10h]                                                 ; +0x24, 0x18001db94\nsub     rcx, rdi                                                       ; +0x28, 0x18001db98\nsar     rcx, 5                                                         ; +0x2b, 0x18001db9b\ncmp     r8, rcx                                                        ; +0x2f, 0x18001db9f\njbe     loc_18001DC89                                                  ; +0x32, 0x18001dba2\nmov     rsi, 7FFFFFFFFFFFFFFh                                          ; +0x38, 0x18001dba8\ncmp     r8, rsi                                                        ; +0x42, 0x18001dbb2\nja      loc_18001DD6B                                                  ; +0x45, 0x18001dbb5\nmov     rdx, rcx                                                       ; +0x4b, 0x18001dbbb\nshr     rdx, 1                                                         ; +0x4e, 0x18001dbbe\nmov     rax, rsi                                                       ; +0x51, 0x18001dbc1\nsub     rax, rdx                                                       ; +0x54, 0x18001dbc4\ncmp     rcx, rax                                                       ; +0x57, 0x18001dbc7\nja      short loc_18001DBD7                                            ; +0x5a, 0x18001dbca\nlea     rsi, [rdx+rcx]                                                 ; +0x5c, 0x18001dbcc\ncmp     rsi, r8                                                        ; +0x60, 0x18001dbd0\ncmovb   rsi, r8                                                        ; +0x63, 0x18001dbd3\ntest    rdi, rdi                                                       ; +0x67, 0x18001dbd7\njz      short loc_18001DC29                                            ; +0x6a, 0x18001dbda\nmov     rdx, [r14+8]                                                   ; +0x6c, 0x18001dbdc\nmov     rcx, rdi                                                       ; +0x70, 0x18001dbe0\ncall    sub_1800036B0                                                  ; +0x73, 0x18001dbe3\nmov     rcx, [r14]                                                     ; +0x78, 0x18001dbe8\nmov     rdx, [r14+10h]                                                 ; +0x7b, 0x18001dbeb\nsub     rdx, rcx                                                       ; +0x7f, 0x18001dbef\nand     rdx, 0FFFFFFFFFFFFFFE0h                                        ; +0x82, 0x18001dbf2\ncmp     rdx, 1000h                                                     ; +0x86, 0x18001dbf6\njb      short loc_18001DC17                                            ; +0x8d, 0x18001dbfd\nadd     rdx, 27h ; '''                                                 ; +0x8f, 0x18001dbff\nmov     r8, [rcx-8]                                                    ; +0x93, 0x18001dc03\nsub     rcx, r8                                                        ; +0x97, 0x18001dc07\nlea     rax, [rcx-8]                                                   ; +0x9a, 0x18001dc0a\ncmp     rax, 1Fh                                                       ; +0x9e, 0x18001dc0e\nja      short loc_18001DC82                                            ; +0xa2, 0x18001dc12\nmov     rcx, r8; Block                                                 ; +0xa4, 0x18001dc14\ncall    j_j_free                                                       ; +0xa7, 0x18001dc17\nxor     eax, eax                                                       ; +0xac, 0x18001dc1c\nmov     [r14], rax                                                     ; +0xae, 0x18001dc1e\nmov     [r14+8], rax                                                   ; +0xb1, 0x18001dc21\nmov     [r14+10h], rax                                                 ; +0xb5, 0x18001dc25\nmov     rdx, rsi                                                       ; +0xb9, 0x18001dc29\nmov     rcx, r14                                                       ; +0xbc, 0x18001dc2c\ncall    sub_180003550                                                  ; +0xbf, 0x18001dc2f\nmov     rdi, [r14]                                                     ; +0xc4, 0x18001dc34\nmov     [rsp+58h+var_38], rdi                                          ; +0xc7, 0x18001dc37\nmov     [rsp+58h+var_30], rdi                                          ; +0xcc, 0x18001dc3c\nmov     [rsp+58h+var_28], r14                                          ; +0xd1, 0x18001dc41\ntest    rbp, rbp                                                       ; +0xd6, 0x18001dc46\njz      short loc_18001DC6E                                            ; +0xd9, 0x18001dc49\nnop     dword ptr [rax+rax+00h]                                        ; +0xdb, 0x18001dc4b\nmov     rdx, rbx                                                       ; +0xe0, 0x18001dc50\nmov     rcx, rdi                                                       ; +0xe3, 0x18001dc53\ncall    sub_180003F50                                                  ; +0xe6, 0x18001dc56\nadd     rdi, 20h ; ' '                                                 ; +0xeb, 0x18001dc5b\nmov     [rsp+58h+var_30], rdi                                          ; +0xef, 0x18001dc5f\nadd     rbx, 20h ; ' '                                                 ; +0xf4, 0x18001dc64\nsub     rbp, 1                                                         ; +0xf8, 0x18001dc68\njnz     short loc_18001DC50                                            ; +0xfc, 0x18001dc6c\nmov     rdx, rdi                                                       ; +0xfe, 0x18001dc6e\nmov     rcx, rdi                                                       ; +0x101, 0x18001dc71\ncall    sub_1800036B0                                                  ; +0x104, 0x18001dc74\nmov     [r14+8], rdi                                                   ; +0x109, 0x18001dc79\njmp     loc_18001DD52                                                  ; +0x10d, 0x18001dc7d\ncall    cs:_invalid_parameter_noinfo_noreturn                          ; +0x112, 0x18001dc82\ndb 0CCh                                                                ; +0x118, 0x18001dc88\nmov     rsi, [r14+8]                                                   ; +0x119, 0x18001dc89\nmov     r15, rsi                                                       ; +0x11d, 0x18001dc8d\nsub     r15, rdi                                                       ; +0x120, 0x18001dc90\nsar     r15, 5                                                         ; +0x123, 0x18001dc93\ncmp     rbp, r15                                                       ; +0x127, 0x18001dc97\njbe     short loc_18001DD07                                            ; +0x12a, 0x18001dc9a\ncmp     rdi, rsi                                                       ; +0x12c, 0x18001dc9c\njz      short loc_18001DCD0                                            ; +0x12f, 0x18001dc9f\ncmp     rdi, rbx                                                       ; +0x131, 0x18001dca1\njz      short loc_18001DCBF                                            ; +0x134, 0x18001dca4\nmov     rdx, rbx                                                       ; +0x136, 0x18001dca6\ncmp     qword ptr [rbx+18h], 0Fh                                       ; +0x139, 0x18001dca9\njbe     short loc_18001DCB3                                            ; +0x13e, 0x18001dcae\nmov     rdx, [rbx]; Src                                                ; +0x140, 0x18001dcb0\nmov     r8, [rbx+10h]; Size                                            ; +0x143, 0x18001dcb3\nmov     rcx, rdi; void *                                               ; +0x147, 0x18001dcb7\ncall    sub_180003BC0                                                  ; +0x14a, 0x18001dcba\nadd     rdi, 20h ; ' '                                                 ; +0x14f, 0x18001dcbf\nadd     rbx, 20h ; ' '                                                 ; +0x153, 0x18001dcc3\nmov     rsi, [r14+8]                                                   ; +0x157, 0x18001dcc7\ncmp     rdi, rsi                                                       ; +0x15b, 0x18001dccb\njnz     short loc_18001DCA1                                            ; +0x15e, 0x18001dcce\nsub     rbp, r15                                                       ; +0x160, 0x18001dcd0\nmov     [rsp+58h+var_38], rsi                                          ; +0x163, 0x18001dcd3\nmov     [rsp+58h+var_30], rsi                                          ; +0x168, 0x18001dcd8\nmov     [rsp+58h+var_28], r14                                          ; +0x16d, 0x18001dcdd\njz      short loc_18001DD02                                            ; +0x172, 0x18001dce2\nmov     rdx, rbx                                                       ; +0x174, 0x18001dce4\nmov     rcx, rsi                                                       ; +0x177, 0x18001dce7\ncall    sub_180003F50                                                  ; +0x17a, 0x18001dcea\nadd     rsi, 20h ; ' '                                                 ; +0x17f, 0x18001dcef\nmov     [rsp+58h+var_30], rsi                                          ; +0x183, 0x18001dcf3\nadd     rbx, 20h ; ' '                                                 ; +0x188, 0x18001dcf8\nsub     rbp, 1                                                         ; +0x18c, 0x18001dcfc\njnz     short loc_18001DCE4                                            ; +0x190, 0x18001dd00\nmov     rdx, rsi                                                       ; +0x192, 0x18001dd02\njmp     short loc_18001DD46                                            ; +0x195, 0x18001dd05\nmov     rsi, rbp                                                       ; +0x197, 0x18001dd07\nshl     rsi, 5                                                         ; +0x19a, 0x18001dd0a\nadd     rsi, rdi                                                       ; +0x19e, 0x18001dd0e\ntest    rbp, rbp                                                       ; +0x1a1, 0x18001dd11\njz      short loc_18001DD42                                            ; +0x1a4, 0x18001dd14\ncmp     rdi, rbx                                                       ; +0x1a6, 0x18001dd16\njz      short loc_18001DD34                                            ; +0x1a9, 0x18001dd19\nmov     rdx, rbx                                                       ; +0x1ab, 0x18001dd1b\ncmp     qword ptr [rbx+18h], 0Fh                                       ; +0x1ae, 0x18001dd1e\njbe     short loc_18001DD28                                            ; +0x1b3, 0x18001dd23\nmov     rdx, [rbx]; Src                                                ; +0x1b5, 0x18001dd25\nmov     r8, [rbx+10h]; Size                                            ; +0x1b8, 0x18001dd28\nmov     rcx, rdi; void *                                               ; +0x1bc, 0x18001dd2c\ncall    sub_180003BC0                                                  ; +0x1bf, 0x18001dd2f\nadd     rdi, 20h ; ' '                                                 ; +0x1c4, 0x18001dd34\nadd     rbx, 20h ; ' '                                                 ; +0x1c8, 0x18001dd38\nsub     rbp, 1                                                         ; +0x1cc, 0x18001dd3c\njnz     short loc_18001DD16                                            ; +0x1d0, 0x18001dd40\nmov     rdx, [r14+8]                                                   ; +0x1d2, 0x18001dd42\nmov     rcx, rsi                                                       ; +0x1d6, 0x18001dd46\ncall    sub_1800036B0                                                  ; +0x1d9, 0x18001dd49\nmov     [r14+8], rsi                                                   ; +0x1de, 0x18001dd4e\nmov     rbx, [rsp+58h+arg_0]                                           ; +0x1e2, 0x18001dd52\nmov     rbp, [rsp+58h+arg_8]                                           ; +0x1e7, 0x18001dd57\nmov     rsi, [rsp+58h+arg_10]                                          ; +0x1ec, 0x18001dd5c\nadd     rsp, 40h                                                       ; +0x1f1, 0x18001dd61\npop     r15                                                            ; +0x1f5, 0x18001dd65\npop     r14                                                            ; +0x1f7, 0x18001dd67\npop     rdi                                                            ; +0x1f9, 0x18001dd69\nretn                                                                   ; +0x1fa, 0x18001dd6a\ncall    sub_180003530                                                  ; +0x1fb, 0x18001dd6b\ndb 0CCh                                                                ; +0x200, 0x18001dd70", "xrefs": ["cocos2d::extension::CCHttpRequest::setHeaders @ 0x18001d3f7", "cocos2d::extension::CCHttpRequest::operator= @ 0x18001d5da", "<???> @ 0x18004b094"], "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"}