{"type": "func", "start": 6442572320, "end": 6442572649, "name": "sub_18001DA20", "pseudocode": "// \n// sub_18001DA20 from 0x18001da20 to 0x18001db69 (329 bytes)\n// \n// 4 xrefs:\n// > cocos2d::extension::CCTableView::operator= @ 0x18001cb1e\n// > <???> @ 0x18002f994\n// > <???> @ 0x18002f9a4\n// > <???> @ 0x18004b070\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\nchar *__fastcall sub_18001DA20(void **a1, char *a2, unsigned __int64 a3)\n{\n  char *v3; // rdi\n  char *v6; // r15\n  unsigned __int64 v7; // rcx\n  size_t v8; // rbx\n  void *v9; // rcx\n  unsigned __int64 v10; // rsi\n\n  v3 = (char *)*a1;\n  v6 = a2;\n  v7 = ((_BYTE *)a1[2] - (_BYTE *)*a1) >> 2;\n  if ( a3 <= v7 )\n  {\n    v9 = v3;\n    v10 = ((_BYTE *)a1[1] - v3) >> 2;\n    if ( a3 <= v10 )\n    {\n      v8 = 4 * a3;\n    }\n    else\n    {\n      memmove(v3, a2, 4 * v10);\n      v3 = (char *)a1[1];\n      a2 = &v6[4 * v10];\n      v9 = v3;\n      v8 = 4 * (a3 - v10);\n    }\n    memmove(v9, a2, v8);\n  }\n  else\n  {\n    if ( a3 > 0x3FFFFFFFFFFFFFFFLL )\n      sub_180003530();\n    if ( v3 )\n    {\n      if ( 4 * v7 >= 0x1000 )\n      {\n        if ( (unsigned __int64)&v3[-*((_QWORD *)v3 - 1) - 8] > 0x1F )\n          invalid_parameter_noinfo_noreturn();\n        v3 = *((char **)v3 - 1);\n      }\n      j_j_free(v3);\n      *a1 = nullptr;\n      a1[1] = nullptr;\n      a1[2] = nullptr;\n    }\n    sub_18001DE50(a1);\n    v3 = (char *)*a1;\n    v8 = 4 * a3;\n    memmove(*a1, v6, 4 * a3);\n  }\n  a1[1] = &v3[v8];\n  return &v3[v8];\n}", "assembly": "; \n; sub_18001DA20 from 0x18001da20 to 0x18001db69 (329 bytes)\n; \n; 4 xrefs:\n; > cocos2d::extension::CCTableView::operator= @ 0x18001cb1e\n; > <???> @ 0x18002f994\n; > <???> @ 0x18002f9a4\n; > <???> @ 0x18004b070\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_8], rbx                                               ; +0x0, 0x18001da20\nmov     [rsp+arg_10], rbp                                              ; +0x5, 0x18001da25\npush    rdi                                                            ; +0xa, 0x18001da2a\npush    r14                                                            ; +0xb, 0x18001da2b\npush    r15                                                            ; +0xd, 0x18001da2d\nsub     rsp, 20h                                                       ; +0xf, 0x18001da2f\nmov     rdi, [rcx]                                                     ; +0x13, 0x18001da33\nmov     r14, rcx                                                       ; +0x16, 0x18001da36\nmov     rcx, [rcx+10h]                                                 ; +0x19, 0x18001da39\nmov     rbp, r8                                                        ; +0x1d, 0x18001da3d\nsub     rcx, rdi                                                       ; +0x20, 0x18001da40\nmov     r15, rdx                                                       ; +0x23, 0x18001da43\nsar     rcx, 2                                                         ; +0x26, 0x18001da46\ncmp     r8, rcx                                                        ; +0x2a, 0x18001da4a\njbe     loc_18001DAF2                                                  ; +0x2d, 0x18001da4d\nmov     rbx, 3FFFFFFFFFFFFFFFh                                         ; +0x33, 0x18001da53\ncmp     r8, rbx                                                        ; +0x3d, 0x18001da5d\nja      loc_18001DB63                                                  ; +0x40, 0x18001da60\nmov     rdx, rcx                                                       ; +0x46, 0x18001da66\nmov     rax, rbx                                                       ; +0x49, 0x18001da69\nshr     rdx, 1                                                         ; +0x4c, 0x18001da6c\nsub     rax, rdx                                                       ; +0x4f, 0x18001da6f\ncmp     rcx, rax                                                       ; +0x52, 0x18001da72\nja      short loc_18001DA82                                            ; +0x55, 0x18001da75\nlea     rbx, [rdx+rcx]                                                 ; +0x57, 0x18001da77\ncmp     rbx, r8                                                        ; +0x5b, 0x18001da7b\ncmovb   rbx, r8                                                        ; +0x5e, 0x18001da7e\ntest    rdi, rdi                                                       ; +0x62, 0x18001da82\njz      short loc_18001DAC5                                            ; +0x65, 0x18001da85\nlea     rdx, ds:0[rcx*4]                                               ; +0x67, 0x18001da87\ncmp     rdx, 1000h                                                     ; +0x6f, 0x18001da8f\njb      short loc_18001DAB0                                            ; +0x76, 0x18001da96\nmov     rcx, [rdi-8]                                                   ; +0x78, 0x18001da98\nadd     rdx, 27h ; '''                                                 ; +0x7c, 0x18001da9c\nsub     rdi, rcx                                                       ; +0x80, 0x18001daa0\nlea     rax, [rdi-8]                                                   ; +0x83, 0x18001daa3\ncmp     rax, 1Fh                                                       ; +0x87, 0x18001daa7\nja      short loc_18001DAEB                                            ; +0x8b, 0x18001daab\nmov     rdi, rcx                                                       ; +0x8d, 0x18001daad\nmov     rcx, rdi; Block                                                ; +0x90, 0x18001dab0\ncall    j_j_free                                                       ; +0x93, 0x18001dab3\nxor     eax, eax                                                       ; +0x98, 0x18001dab8\nmov     [r14], rax                                                     ; +0x9a, 0x18001daba\nmov     [r14+8], rax                                                   ; +0x9d, 0x18001dabd\nmov     [r14+10h], rax                                                 ; +0xa1, 0x18001dac1\nmov     rdx, rbx                                                       ; +0xa5, 0x18001dac5\nmov     rcx, r14                                                       ; +0xa8, 0x18001dac8\ncall    sub_18001DE50                                                  ; +0xab, 0x18001dacb\nmov     rdi, [r14]                                                     ; +0xb0, 0x18001dad0\nlea     rbx, ds:0[rbp*4]                                               ; +0xb3, 0x18001dad3\nmov     r8, rbx; Size                                                  ; +0xbb, 0x18001dadb\nmov     rcx, rdi; void *                                               ; +0xbe, 0x18001dade\nmov     rdx, r15; Src                                                  ; +0xc1, 0x18001dae1\ncall    memmove                                                        ; +0xc4, 0x18001dae4\njmp     short loc_18001DB47                                            ; +0xc9, 0x18001dae9\ncall    cs:_invalid_parameter_noinfo_noreturn                          ; +0xcb, 0x18001daeb\nalign 2                                                                ; +0xd1, 0x18001daf1\nmov     [rsp+38h+arg_0], rsi                                           ; +0xd2, 0x18001daf2\nmov     rcx, rdi; void *                                               ; +0xd7, 0x18001daf7\nmov     rsi, [r14+8]                                                   ; +0xda, 0x18001dafa\nsub     rsi, rdi                                                       ; +0xde, 0x18001dafe\nsar     rsi, 2                                                         ; +0xe1, 0x18001db01\ncmp     rbp, rsi                                                       ; +0xe5, 0x18001db05\njbe     short loc_18001DB32                                            ; +0xe8, 0x18001db08\nlea     rbx, ds:0[rsi*4]                                               ; +0xea, 0x18001db0a\nmov     r8, rbx; Size                                                  ; +0xf2, 0x18001db12\ncall    memmove                                                        ; +0xf5, 0x18001db15\nmov     rdi, [r14+8]                                                   ; +0xfa, 0x18001db1a\nlea     rdx, [rbx+r15]; Src                                            ; +0xfe, 0x18001db1e\nsub     rbp, rsi                                                       ; +0x102, 0x18001db22\nmov     rcx, rdi                                                       ; +0x105, 0x18001db25\nlea     rbx, ds:0[rbp*4]                                               ; +0x108, 0x18001db28\njmp     short loc_18001DB3A                                            ; +0x110, 0x18001db30\nlea     rbx, ds:0[r8*4]                                                ; +0x112, 0x18001db32\nmov     r8, rbx; Size                                                  ; +0x11a, 0x18001db3a\ncall    memmove                                                        ; +0x11d, 0x18001db3d\nmov     rsi, [rsp+38h+arg_0]                                           ; +0x122, 0x18001db42\nmov     rbp, [rsp+38h+arg_10]                                          ; +0x127, 0x18001db47\nlea     rax, [rbx+rdi]                                                 ; +0x12c, 0x18001db4c\nmov     rbx, [rsp+38h+arg_8]                                           ; +0x130, 0x18001db50\nmov     [r14+8], rax                                                   ; +0x135, 0x18001db55\nadd     rsp, 20h                                                       ; +0x139, 0x18001db59\npop     r15                                                            ; +0x13d, 0x18001db5d\npop     r14                                                            ; +0x13f, 0x18001db5f\npop     rdi                                                            ; +0x141, 0x18001db61\nretn                                                                   ; +0x142, 0x18001db62\ncall    sub_180003530                                                  ; +0x143, 0x18001db63\ndb 0CCh                                                                ; +0x148, 0x18001db68", "xrefs": ["cocos2d::extension::CCTableView::operator= @ 0x18001cb1e", "<???> @ 0x18002f994", "<???> @ 0x18002f9a4", "<???> @ 0x18004b070"], "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"}