{"type": "func", "start": 6442465696, "end": 6442465824, "name": "sub_1800039A0", "pseudocode": "// \n// sub_1800039A0 from 0x1800039a0 to 0x180003a20 (128 bytes)\n// \n// 8 xrefs:\n// > cocos2d::extension::AssetsManager::AssetsManager @ 0x1800015ba\n// > cocos2d::extension::AssetsManager::checkStoragePath @ 0x18000186e\n// > cocos2d::extension::AssetsManager::setStoragePath @ 0x1800028d7\n// > cocos2d::extension::CCEditBoxImplWin::setText @ 0x180011b52\n// > cocos2d::extension::WebSocket::onSubThreadStarted @ 0x18001a693\n// > <???> @ 0x18002d304\n// > <???> @ 0x18002d314\n// > <???> @ 0x180049288\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_QWORD *__fastcall sub_1800039A0(_QWORD *Src, const void *a2, unsigned __int64 a3)\n{\n  __int64 v5; // rcx\n  unsigned __int64 v6; // r8\n  _QWORD *v7; // rax\n  char *v8; // rbx\n\n  v5 = Src[2];\n  v6 = Src[3];\n  if ( a3 > v6 - v5 )\n    return sub_180003810(Src, a3, v6, a2, a3);\n  Src[2] = v5 + a3;\n  v7 = Src;\n  if ( v6 > 0xF )\n    v7 = (_QWORD *)*Src;\n  v8 = (char *)v7 + v5;\n  memmove((char *)v7 + v5, a2, a3);\n  v8[a3] = 0;\n  return Src;\n}", "assembly": "; \n; sub_1800039A0 from 0x1800039a0 to 0x180003a20 (128 bytes)\n; \n; 8 xrefs:\n; > cocos2d::extension::AssetsManager::AssetsManager @ 0x1800015ba\n; > cocos2d::extension::AssetsManager::checkStoragePath @ 0x18000186e\n; > cocos2d::extension::AssetsManager::setStoragePath @ 0x1800028d7\n; > cocos2d::extension::CCEditBoxImplWin::setText @ 0x180011b52\n; > cocos2d::extension::WebSocket::onSubThreadStarted @ 0x18001a693\n; > <???> @ 0x18002d304\n; > <???> @ 0x18002d314\n; > <???> @ 0x180049288\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], rsi                                               ; +0x0, 0x1800039a0\npush    rdi                                                            ; +0x5, 0x1800039a5\nsub     rsp, 30h                                                       ; +0x6, 0x1800039a6\nmov     rdi, rcx                                                       ; +0xa, 0x1800039aa\nmov     rsi, r8                                                        ; +0xd, 0x1800039ad\nmov     rcx, [rcx+10h]                                                 ; +0x10, 0x1800039b0\nmov     r8, [rdi+18h]                                                  ; +0x14, 0x1800039b4\nmov     rax, r8                                                        ; +0x18, 0x1800039b8\nsub     rax, rcx                                                       ; +0x1b, 0x1800039bb\ncmp     rsi, rax                                                       ; +0x1e, 0x1800039be\nja      short loc_180003A02                                            ; +0x21, 0x1800039c1\nmov     [rsp+38h+arg_0], rbx                                           ; +0x23, 0x1800039c3\nlea     rax, [rcx+rsi]                                                 ; +0x28, 0x1800039c8\nmov     [rdi+10h], rax                                                 ; +0x2c, 0x1800039cc\nmov     rax, rdi                                                       ; +0x30, 0x1800039d0\ncmp     r8, 0Fh                                                        ; +0x33, 0x1800039d3\njbe     short loc_1800039DC                                            ; +0x37, 0x1800039d7\nmov     rax, [rdi]                                                     ; +0x39, 0x1800039d9\nlea     rbx, [rax+rcx]                                                 ; +0x3c, 0x1800039dc\nmov     r8, rsi; Size                                                  ; +0x40, 0x1800039e0\nmov     rcx, rbx; void *                                               ; +0x43, 0x1800039e3\ncall    memmove                                                        ; +0x46, 0x1800039e6\nmov     byte ptr [rbx+rsi], 0                                          ; +0x4b, 0x1800039eb\nmov     rax, rdi                                                       ; +0x4f, 0x1800039ef\nmov     rbx, [rsp+38h+arg_0]                                           ; +0x52, 0x1800039f2\nmov     rsi, [rsp+38h+arg_8]                                           ; +0x57, 0x1800039f7\nadd     rsp, 30h                                                       ; +0x5c, 0x1800039fc\npop     rdi                                                            ; +0x60, 0x180003a00\nretn                                                                   ; +0x61, 0x180003a01\nmov     r9, rdx                                                        ; +0x62, 0x180003a02\nmov     [rsp+38h+Size], rsi; Size                                      ; +0x65, 0x180003a05\nmov     rdx, rsi                                                       ; +0x6a, 0x180003a0a\nmov     rcx, rdi; Src                                                  ; +0x6d, 0x180003a0d\ncall    sub_180003810                                                  ; +0x70, 0x180003a10\nmov     rsi, [rsp+38h+arg_8]                                           ; +0x75, 0x180003a15\nadd     rsp, 30h                                                       ; +0x7a, 0x180003a1a\npop     rdi                                                            ; +0x7e, 0x180003a1e\nretn                                                                   ; +0x7f, 0x180003a1f", "xrefs": ["cocos2d::extension::AssetsManager::AssetsManager @ 0x1800015ba", "cocos2d::extension::AssetsManager::checkStoragePath @ 0x18000186e", "cocos2d::extension::AssetsManager::setStoragePath @ 0x1800028d7", "cocos2d::extension::CCEditBoxImplWin::setText @ 0x180011b52", "cocos2d::extension::WebSocket::onSubThreadStarted @ 0x18001a693", "<???> @ 0x18002d304", "<???> @ 0x18002d314", "<???> @ 0x180049288"], "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"}