{"type": "func", "start": 6442466240, "end": 6442466593, "name": "sub_180003BC0", "pseudocode": "// \n// sub_180003BC0 from 0x180003bc0 to 0x180003d21 (353 bytes)\n// \n// 41 xrefs:\n// > cocos2d::extension::AssetsManager::operator= @ 0x1800012be\n// > cocos2d::extension::AssetsManager::operator= @ 0x1800012e1\n// > cocos2d::extension::AssetsManager::operator= @ 0x180001304\n// > cocos2d::extension::AssetsManager::operator= @ 0x180001327\n// > cocos2d::extension::AssetsManager::operator= @ 0x180001350\n// > cocos2d::extension::AssetsManager::setPackageUrl @ 0x18000285e\n// > cocos2d::extension::AssetsManager::setStoragePath @ 0x1800028a2\n// > cocos2d::extension::AssetsManager::setVersionFileUrl @ 0x18000291e\n// > cocos2d::extension::CCEditBox::setText @ 0x180010bc1\n// > cocos2d::extension::CCEditBox::setFont @ 0x180010c61\n// > cocos2d::extension::CCEditBox::setFontName @ 0x180010cd1\n// > cocos2d::extension::CCEditBox::setPlaceholderFont @ 0x180010db1\n// > cocos2d::extension::CCEditBox::setPlaceholderFontName @ 0x180010e21\n// > cocos2d::extension::CCEditBox::setPlaceHolder @ 0x180010f01\n// > cocos2d::extension::CCEditBoxImplWin::operator= @ 0x180011530\n// > cocos2d::extension::CCEditBoxImplWin::operator= @ 0x180011553\n// > cocos2d::extension::CCEditBoxImplWin::setText @ 0x180011ae1\n// > cocos2d::extension::CCEditBoxImplWin::setText @ 0x180011b7f\n// > cocos2d::extension::CCEditBoxImplWin::setPlaceHolder @ 0x180011c5d\n// > cocos2d::extension::WebSocket::operator= @ 0x180019414\n// > cocos2d::extension::WebSocket::operator= @ 0x18001943d\n// > cocos2d::extension::WebSocket::init @ 0x18001a049\n// > cocos2d::extension::WebSocket::init @ 0x18001a071\n// > cocos2d::extension::CCEditBox::operator= @ 0x18001ce69\n// > cocos2d::extension::CCEditBox::operator= @ 0x18001ce92\n// > cocos2d::extension::CCEditBox::operator= @ 0x18001cebb\n// > cocos2d::extension::CCEditBox::operator= @ 0x18001cee4\n// > cocos2d::extension::CCHttpRequest::setUrl @ 0x18001d1be\n// > cocos2d::extension::CCHttpRequest::setTag @ 0x18001d31e\n// > cocos2d::extension::CCHttpRequest::operator= @ 0x18001d55a\n// > cocos2d::extension::CCHttpRequest::operator= @ 0x18001d58a\n// > cocos2d::extension::CCHttpResponse::setErrorBuffer @ 0x18001d74d\n// > cocos2d::extension::CCHttpResponse::operator= @ 0x18001d849\n// > sub_18001DB70 @ 0x18001dcba\n// > sub_18001DB70 @ 0x18001dd2f\n// > CWin32InputBox::AnsiToUtf8 @ 0x18001e968\n// > CWin32InputBox::Utf8ToAnsi @ 0x18001eb58\n// > <???> @ 0x18002d3b8\n// > <???> @ 0x18002d3c8\n// > <???> @ 0x18002d3dc\n// > <???> @ 0x180049300\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_180003BC0(void **a1, void *Src, size_t Size)\n{\n  unsigned __int64 v3; // rbp\n  void *v7; // rdi\n  size_t v8; // rdi\n  __int64 v9; // rdx\n  size_t v10; // rcx\n  void *v11; // rax\n  _QWORD *v12; // r14\n  void *v13; // rcx\n\n  v3 = (unsigned __int64)a1[3];\n  if ( Size > v3 )\n  {\n    v8 = 0x7FFFFFFFFFFFFFFFLL;\n    if ( Size > 0x7FFFFFFFFFFFFFFFLL )\n      sub_180003D90();\n    if ( (Size | 0xF) > 0x7FFFFFFFFFFFFFFFLL || (v9 = v3 >> 1, v3 > 0x7FFFFFFFFFFFFFFFLL - (v3 >> 1)) )\n    {\n      v10 = 0x8000000000000027uLL;\n    }\n    else\n    {\n      v8 = Size | 0xF;\n      if ( (Size | 0xF) < v9 + v3 )\n        v8 = v9 + v3;\n      if ( v8 + 1 < 0x1000 )\n      {\n        if ( v8 == -1 )\n          v12 = nullptr;\n        else\n          v12 = operator new(v8 + 1);\n        goto LABEL_19;\n      }\n      v10 = v8 + 40;\n      if ( v8 + 40 < v8 + 1 )\n        Concurrency::cancel_current_task();\n    }\n    v11 = operator new(v10);\n    if ( !v11 )\n      goto LABEL_26;\n    v12 = (_QWORD *)(((unsigned __int64)v11 + 39) & 0xFFFFFFFFFFFFFFE0uLL);\n    *(v12 - 1) = v11;\nLABEL_19:\n    a1[2] = (void *)Size;\n    a1[3] = (void *)v8;\n    memcpy(v12, Src, Size);\n    *((_BYTE *)v12 + Size) = 0;\n    if ( v3 <= 0xF )\n    {\nLABEL_24:\n      *a1 = v12;\n      return a1;\n    }\n    v13 = *a1;\n    if ( v3 + 1 < 0x1000 )\n    {\nLABEL_23:\n      j_j_free(v13);\n      goto LABEL_24;\n    }\n    if ( (unsigned __int64)v13 - *((_QWORD *)v13 - 1) - 8 <= 0x1F )\n    {\n      v13 = *((void **)v13 - 1);\n      goto LABEL_23;\n    }\nLABEL_26:\n    invalid_parameter_noinfo_noreturn();\n  }\n  v7 = a1;\n  if ( v3 > 0xF )\n    v7 = *a1;\n  a1[2] = (void *)Size;\n  memmove(v7, Src, Size);\n  *((_BYTE *)v7 + Size) = 0;\n  return a1;\n}", "assembly": "; \n; sub_180003BC0 from 0x180003bc0 to 0x180003d21 (353 bytes)\n; \n; 41 xrefs:\n; > cocos2d::extension::AssetsManager::operator= @ 0x1800012be\n; > cocos2d::extension::AssetsManager::operator= @ 0x1800012e1\n; > cocos2d::extension::AssetsManager::operator= @ 0x180001304\n; > cocos2d::extension::AssetsManager::operator= @ 0x180001327\n; > cocos2d::extension::AssetsManager::operator= @ 0x180001350\n; > cocos2d::extension::AssetsManager::setPackageUrl @ 0x18000285e\n; > cocos2d::extension::AssetsManager::setStoragePath @ 0x1800028a2\n; > cocos2d::extension::AssetsManager::setVersionFileUrl @ 0x18000291e\n; > cocos2d::extension::CCEditBox::setText @ 0x180010bc1\n; > cocos2d::extension::CCEditBox::setFont @ 0x180010c61\n; > cocos2d::extension::CCEditBox::setFontName @ 0x180010cd1\n; > cocos2d::extension::CCEditBox::setPlaceholderFont @ 0x180010db1\n; > cocos2d::extension::CCEditBox::setPlaceholderFontName @ 0x180010e21\n; > cocos2d::extension::CCEditBox::setPlaceHolder @ 0x180010f01\n; > cocos2d::extension::CCEditBoxImplWin::operator= @ 0x180011530\n; > cocos2d::extension::CCEditBoxImplWin::operator= @ 0x180011553\n; > cocos2d::extension::CCEditBoxImplWin::setText @ 0x180011ae1\n; > cocos2d::extension::CCEditBoxImplWin::setText @ 0x180011b7f\n; > cocos2d::extension::CCEditBoxImplWin::setPlaceHolder @ 0x180011c5d\n; > cocos2d::extension::WebSocket::operator= @ 0x180019414\n; > cocos2d::extension::WebSocket::operator= @ 0x18001943d\n; > cocos2d::extension::WebSocket::init @ 0x18001a049\n; > cocos2d::extension::WebSocket::init @ 0x18001a071\n; > cocos2d::extension::CCEditBox::operator= @ 0x18001ce69\n; > cocos2d::extension::CCEditBox::operator= @ 0x18001ce92\n; > cocos2d::extension::CCEditBox::operator= @ 0x18001cebb\n; > cocos2d::extension::CCEditBox::operator= @ 0x18001cee4\n; > cocos2d::extension::CCHttpRequest::setUrl @ 0x18001d1be\n; > cocos2d::extension::CCHttpRequest::setTag @ 0x18001d31e\n; > cocos2d::extension::CCHttpRequest::operator= @ 0x18001d55a\n; > cocos2d::extension::CCHttpRequest::operator= @ 0x18001d58a\n; > cocos2d::extension::CCHttpResponse::setErrorBuffer @ 0x18001d74d\n; > cocos2d::extension::CCHttpResponse::operator= @ 0x18001d849\n; > sub_18001DB70 @ 0x18001dcba\n; > sub_18001DB70 @ 0x18001dd2f\n; > CWin32InputBox::AnsiToUtf8 @ 0x18001e968\n; > CWin32InputBox::Utf8ToAnsi @ 0x18001eb58\n; > <???> @ 0x18002d3b8\n; > <???> @ 0x18002d3c8\n; > <???> @ 0x18002d3dc\n; > <???> @ 0x180049300\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, 0x180003bc0\nmov     [rsp+arg_10], rbp                                              ; +0x5, 0x180003bc5\npush    rsi                                                            ; +0xa, 0x180003bca\npush    rdi                                                            ; +0xb, 0x180003bcb\npush    r15                                                            ; +0xc, 0x180003bcc\nsub     rsp, 20h                                                       ; +0xe, 0x180003bce\nmov     rbp, [rcx+18h]                                                 ; +0x12, 0x180003bd2\nmov     rsi, r8                                                        ; +0x16, 0x180003bd6\nmov     r15, rdx                                                       ; +0x19, 0x180003bd9\nmov     rbx, rcx                                                       ; +0x1c, 0x180003bdc\ncmp     r8, rbp                                                        ; +0x1f, 0x180003bdf\nja      short loc_180003C05                                            ; +0x22, 0x180003be2\nmov     rdi, rcx                                                       ; +0x24, 0x180003be4\ncmp     rbp, 0Fh                                                       ; +0x27, 0x180003be7\njbe     short loc_180003BF0                                            ; +0x2b, 0x180003beb\nmov     rdi, [rcx]                                                     ; +0x2d, 0x180003bed\nmov     [rcx+10h], rsi                                                 ; +0x30, 0x180003bf0\nmov     rcx, rdi; void *                                               ; +0x34, 0x180003bf4\ncall    memmove                                                        ; +0x37, 0x180003bf7\nmov     byte ptr [rdi+rsi], 0                                          ; +0x3c, 0x180003bfc\njmp     loc_180003CF8                                                  ; +0x40, 0x180003c00\nmov     rdi, 7FFFFFFFFFFFFFFFh                                         ; +0x45, 0x180003c05\ncmp     rsi, rdi                                                       ; +0x4f, 0x180003c0f\nja      loc_180003D15                                                  ; +0x52, 0x180003c12\nmov     rcx, rsi                                                       ; +0x58, 0x180003c18\nmov     [rsp+38h+arg_0], r14                                           ; +0x5b, 0x180003c1b\nor      rcx, 0Fh                                                       ; +0x60, 0x180003c20\ncmp     rcx, rdi                                                       ; +0x64, 0x180003c24\nja      short loc_180003C63                                            ; +0x67, 0x180003c27\nmov     rdx, rbp                                                       ; +0x69, 0x180003c29\nmov     rax, rdi                                                       ; +0x6c, 0x180003c2c\nshr     rdx, 1                                                         ; +0x6f, 0x180003c2f\nsub     rax, rdx                                                       ; +0x72, 0x180003c32\ncmp     rbp, rax                                                       ; +0x75, 0x180003c35\nja      short loc_180003C63                                            ; +0x78, 0x180003c38\nlea     rax, [rdx+rbp]                                                 ; +0x7a, 0x180003c3a\nmov     rdi, rcx                                                       ; +0x7e, 0x180003c3e\ncmp     rcx, rax                                                       ; +0x81, 0x180003c41\ncmovb   rdi, rax                                                       ; +0x84, 0x180003c44\nlea     rax, [rdi+1]                                                   ; +0x88, 0x180003c48\ncmp     rax, 1000h                                                     ; +0x8c, 0x180003c4c\njb      short loc_180003C8D                                            ; +0x92, 0x180003c52\nlea     rcx, [rax+27h]                                                 ; +0x94, 0x180003c54\ncmp     rcx, rax                                                       ; +0x98, 0x180003c58\njbe     loc_180003D1B                                                  ; +0x9b, 0x180003c5b\njmp     short loc_180003C71                                            ; +0xa1, 0x180003c61\nmov     rcx, 8000000000000000h                                         ; +0xa3, 0x180003c63\nadd     rcx, 27h ; '''; Size                                           ; +0xad, 0x180003c6d\ncall    ??2@YAPEAX_K@Z; operator new(unsigned __int64)                 ; +0xb1, 0x180003c71\ntest    rax, rax                                                       ; +0xb6, 0x180003c76\njz      loc_180003D0E                                                  ; +0xb9, 0x180003c79\nlea     r14, [rax+27h]                                                 ; +0xbf, 0x180003c7f\nand     r14, 0FFFFFFFFFFFFFFE0h                                        ; +0xc3, 0x180003c83\nmov     [r14-8], rax                                                   ; +0xc7, 0x180003c87\njmp     short loc_180003CA2                                            ; +0xcb, 0x180003c8b\ntest    rax, rax                                                       ; +0xcd, 0x180003c8d\njz      short loc_180003C9F                                            ; +0xd0, 0x180003c90\nmov     rcx, rax; Size                                                 ; +0xd2, 0x180003c92\ncall    ??2@YAPEAX_K@Z; operator new(unsigned __int64)                 ; +0xd5, 0x180003c95\nmov     r14, rax                                                       ; +0xda, 0x180003c9a\njmp     short loc_180003CA2                                            ; +0xdd, 0x180003c9d\nxor     r14d, r14d                                                     ; +0xdf, 0x180003c9f\nmov     r8, rsi; Size                                                  ; +0xe2, 0x180003ca2\nmov     [rbx+10h], rsi                                                 ; +0xe5, 0x180003ca5\nmov     rdx, r15; Src                                                  ; +0xe9, 0x180003ca9\nmov     [rbx+18h], rdi                                                 ; +0xec, 0x180003cac\nmov     rcx, r14; void *                                               ; +0xf0, 0x180003cb0\ncall    memcpy                                                         ; +0xf3, 0x180003cb3\nmov     byte ptr [r14+rsi], 0                                          ; +0xf8, 0x180003cb8\ncmp     rbp, 0Fh                                                       ; +0xfd, 0x180003cbd\njbe     short loc_180003CF0                                            ; +0x101, 0x180003cc1\nmov     rcx, [rbx]                                                     ; +0x103, 0x180003cc3\nlea     rdx, [rbp+1]                                                   ; +0x106, 0x180003cc6\ncmp     rdx, 1000h                                                     ; +0x10a, 0x180003cca\njb      short loc_180003CEB                                            ; +0x111, 0x180003cd1\nmov     r8, [rcx-8]                                                    ; +0x113, 0x180003cd3\nadd     rdx, 27h ; '''                                                 ; +0x117, 0x180003cd7\nsub     rcx, r8                                                        ; +0x11b, 0x180003cdb\nlea     rax, [rcx-8]                                                   ; +0x11e, 0x180003cde\ncmp     rax, 1Fh                                                       ; +0x122, 0x180003ce2\nja      short loc_180003D0E                                            ; +0x126, 0x180003ce6\nmov     rcx, r8; Block                                                 ; +0x128, 0x180003ce8\ncall    j_j_free                                                       ; +0x12b, 0x180003ceb\nmov     [rbx], r14                                                     ; +0x130, 0x180003cf0\nmov     r14, [rsp+38h+arg_0]                                           ; +0x133, 0x180003cf3\nmov     rbp, [rsp+38h+arg_10]                                          ; +0x138, 0x180003cf8\nmov     rax, rbx                                                       ; +0x13d, 0x180003cfd\nmov     rbx, [rsp+38h+arg_8]                                           ; +0x140, 0x180003d00\nadd     rsp, 20h                                                       ; +0x145, 0x180003d05\npop     r15                                                            ; +0x149, 0x180003d09\npop     rdi                                                            ; +0x14b, 0x180003d0b\npop     rsi                                                            ; +0x14c, 0x180003d0c\nretn                                                                   ; +0x14d, 0x180003d0d\ncall    cs:_invalid_parameter_noinfo_noreturn                          ; +0x14e, 0x180003d0e\ndb 0CCh                                                                ; +0x154, 0x180003d14\ncall    sub_180003D90                                                  ; +0x155, 0x180003d15\ndb 0CCh                                                                ; +0x15a, 0x180003d1a\ncall    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) ; +0x15b, 0x180003d1b\ndb 0CCh                                                                ; +0x160, 0x180003d20", "xrefs": ["cocos2d::extension::AssetsManager::operator= @ 0x1800012be", "cocos2d::extension::AssetsManager::operator= @ 0x1800012e1", "cocos2d::extension::AssetsManager::operator= @ 0x180001304", "cocos2d::extension::AssetsManager::operator= @ 0x180001327", "cocos2d::extension::AssetsManager::operator= @ 0x180001350", "cocos2d::extension::AssetsManager::setPackageUrl @ 0x18000285e", "cocos2d::extension::AssetsManager::setStoragePath @ 0x1800028a2", "cocos2d::extension::AssetsManager::setVersionFileUrl @ 0x18000291e", "cocos2d::extension::CCEditBox::setText @ 0x180010bc1", "cocos2d::extension::CCEditBox::setFont @ 0x180010c61", "cocos2d::extension::CCEditBox::setFontName @ 0x180010cd1", "cocos2d::extension::CCEditBox::setPlaceholderFont @ 0x180010db1", "cocos2d::extension::CCEditBox::setPlaceholderFontName @ 0x180010e21", "cocos2d::extension::CCEditBox::setPlaceHolder @ 0x180010f01", "cocos2d::extension::CCEditBoxImplWin::operator= @ 0x180011530", "cocos2d::extension::CCEditBoxImplWin::operator= @ 0x180011553", "cocos2d::extension::CCEditBoxImplWin::setText @ 0x180011ae1", "cocos2d::extension::CCEditBoxImplWin::setText @ 0x180011b7f", "cocos2d::extension::CCEditBoxImplWin::setPlaceHolder @ 0x180011c5d", "cocos2d::extension::WebSocket::operator= @ 0x180019414", "cocos2d::extension::WebSocket::operator= @ 0x18001943d", "cocos2d::extension::WebSocket::init @ 0x18001a049", "cocos2d::extension::WebSocket::init @ 0x18001a071", "cocos2d::extension::CCEditBox::operator= @ 0x18001ce69", "cocos2d::extension::CCEditBox::operator= @ 0x18001ce92", "cocos2d::extension::CCEditBox::operator= @ 0x18001cebb", "cocos2d::extension::CCEditBox::operator= @ 0x18001cee4", "cocos2d::extension::CCHttpRequest::setUrl @ 0x18001d1be", "cocos2d::extension::CCHttpRequest::setTag @ 0x18001d31e", "cocos2d::extension::CCHttpRequest::operator= @ 0x18001d55a", "cocos2d::extension::CCHttpRequest::operator= @ 0x18001d58a", "cocos2d::extension::CCHttpResponse::setErrorBuffer @ 0x18001d74d", "cocos2d::extension::CCHttpResponse::operator= @ 0x18001d849", "sub_18001DB70 @ 0x18001dcba", "sub_18001DB70 @ 0x18001dd2f", "CWin32InputBox::AnsiToUtf8 @ 0x18001e968", "CWin32InputBox::Utf8ToAnsi @ 0x18001eb58", "<???> @ 0x18002d3b8", "<???> @ 0x18002d3c8", "<???> @ 0x18002d3dc", "<???> @ 0x180049300"], "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"}