{"type": "func", "start": 6442457216, "end": 6442457337, "name": "sub_180001880", "pseudocode": "// \n// sub_180001880 from 0x180001880 to 0x1800018f9 (121 bytes)\n// \n// 4 xrefs:\n// > cocos2d::extension::AssetsManager::checkUpdate @ 0x180001992\n// > <???> @ 0x18002ce78\n// > <???> @ 0x18002ce88\n// > <???> @ 0x18004906c\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\nsize_t __fastcall sub_180001880(void *Src, __int64 a2, __int64 a3, _QWORD *a4)\n{\n  _QWORD *v5; // r10\n  __int64 v6; // rdx\n  size_t Size; // rdi\n  unsigned __int64 v8; // r8\n  char *v9; // rbx\n\n  v5 = a4;\n  v6 = a4[2];\n  Size = a3 * a2;\n  v8 = a4[3];\n  if ( Size > v8 - v6 )\n  {\n    sub_180003810(a4, Size);\n    return Size;\n  }\n  else\n  {\n    a4[2] = v6 + Size;\n    if ( v8 > 0xF )\n      v5 = (_QWORD *)*a4;\n    v9 = (char *)v5 + v6;\n    memmove((char *)v5 + v6, Src, Size);\n    v9[Size] = 0;\n    return Size;\n  }\n}", "assembly": "; \n; sub_180001880 from 0x180001880 to 0x1800018f9 (121 bytes)\n; \n; 4 xrefs:\n; > cocos2d::extension::AssetsManager::checkUpdate @ 0x180001992\n; > <???> @ 0x18002ce78\n; > <???> @ 0x18002ce88\n; > <???> @ 0x18004906c\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    rdi                                                            ; +0x0, 0x180001880\nsub     rsp, 30h                                                       ; +0x2, 0x180001882\nmov     rdi, rdx                                                       ; +0x6, 0x180001886\nmov     r10, r9                                                        ; +0x9, 0x180001889\nmov     rdx, [r9+10h]                                                  ; +0xc, 0x18000188c\nimul    rdi, r8                                                        ; +0x10, 0x180001890\nmov     r8, [r9+18h]                                                   ; +0x14, 0x180001894\nmov     rax, r8                                                        ; +0x18, 0x180001898\nsub     rax, rdx                                                       ; +0x1b, 0x18000189b\ncmp     rdi, rax                                                       ; +0x1e, 0x18000189e\nja      short loc_1800018DD                                            ; +0x21, 0x1800018a1\nmov     [rsp+38h+arg_0], rbx                                           ; +0x23, 0x1800018a3\nlea     rax, [rdx+rdi]                                                 ; +0x28, 0x1800018a8\nmov     [r9+10h], rax                                                  ; +0x2c, 0x1800018ac\ncmp     r8, 0Fh                                                        ; +0x30, 0x1800018b0\njbe     short loc_1800018B9                                            ; +0x34, 0x1800018b4\nmov     r10, [r9]                                                      ; +0x36, 0x1800018b6\nlea     rbx, [r10+rdx]                                                 ; +0x39, 0x1800018b9\nmov     r8, rdi; Size                                                  ; +0x3d, 0x1800018bd\nmov     rdx, rcx; Src                                                  ; +0x40, 0x1800018c0\nmov     rcx, rbx; void *                                               ; +0x43, 0x1800018c3\ncall    memmove                                                        ; +0x46, 0x1800018c6\nmov     byte ptr [rbx+rdi], 0                                          ; +0x4b, 0x1800018cb\nmov     rax, rdi                                                       ; +0x4f, 0x1800018cf\nmov     rbx, [rsp+38h+arg_0]                                           ; +0x52, 0x1800018d2\nadd     rsp, 30h                                                       ; +0x57, 0x1800018d7\npop     rdi                                                            ; +0x5b, 0x1800018db\nretn                                                                   ; +0x5c, 0x1800018dc\nmov     r9, rcx                                                        ; +0x5d, 0x1800018dd\nmov     [rsp+38h+Size], rdi; Size                                      ; +0x60, 0x1800018e0\nmov     rcx, r10; Src                                                  ; +0x65, 0x1800018e5\nmov     rdx, rdi                                                       ; +0x68, 0x1800018e8\ncall    sub_180003810                                                  ; +0x6b, 0x1800018eb\nmov     rax, rdi                                                       ; +0x70, 0x1800018f0\nadd     rsp, 30h                                                       ; +0x73, 0x1800018f3\npop     rdi                                                            ; +0x77, 0x1800018f7\nretn                                                                   ; +0x78, 0x1800018f8", "xrefs": ["cocos2d::extension::AssetsManager::checkUpdate @ 0x180001992", "<???> @ 0x18002ce78", "<???> @ 0x18002ce88", "<???> @ 0x18004906c"], "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"}