{"type": "func", "start": 6442467152, "end": 6442467431, "name": "sub_180003F50", "pseudocode": "// \n// sub_180003F50 from 0x180003f50 to 0x180004067 (279 bytes)\n// \n// 26 xrefs:\n// > cocos2d::extension::AssetsManager::AssetsManager @ 0x1800011f7\n// > cocos2d::extension::AssetsManager::AssetsManager @ 0x180001205\n// > cocos2d::extension::AssetsManager::AssetsManager @ 0x180001213\n// > cocos2d::extension::AssetsManager::AssetsManager @ 0x180001221\n// > cocos2d::extension::AssetsManager::AssetsManager @ 0x180001235\n// > sub_180003160 @ 0x180003266\n// > sub_180003320 @ 0x18000335c\n// > sub_180003320 @ 0x180003375\n// > sub_180003750 @ 0x1800037c6\n// > cocos2d::extension::CCControlButton::create @ 0x180005f7c\n// > cocos2d::extension::CCEditBoxImplWin::CCEditBoxImplWin @ 0x180011463\n// > cocos2d::extension::CCEditBoxImplWin::CCEditBoxImplWin @ 0x180011471\n// > cocos2d::extension::WebSocket::WebSocket @ 0x18001937d\n// > cocos2d::extension::WebSocket::WebSocket @ 0x180019391\n// > cocos2d::extension::WebSocket::init @ 0x180019ab3\n// > cocos2d::extension::CCEditBox::CCEditBox @ 0x18001cd1f\n// > cocos2d::extension::CCEditBox::CCEditBox @ 0x18001cd33\n// > cocos2d::extension::CCEditBox::CCEditBox @ 0x18001cd47\n// > cocos2d::extension::CCEditBox::CCEditBox @ 0x18001cd5b\n// > cocos2d::extension::CCHttpRequest::CCHttpRequest @ 0x18001d474\n// > cocos2d::extension::CCHttpRequest::CCHttpRequest @ 0x18001d490\n// > cocos2d::extension::CCHttpResponse::CCHttpResponse @ 0x18001d7c5\n// > sub_18001DB70 @ 0x18001dc56\n// > sub_18001DB70 @ 0x18001dcea\n// > <???> @ 0x180049390\n// > <???> @ 0x18004939c\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__int64 __fastcall sub_180003F50(__int64 a1, __int64 a2)\n{\n  _QWORD *v2; // rax\n  _OWORD *v4; // rbp\n  unsigned __int64 v5; // rsi\n  __int64 v6; // rdi\n  size_t v7; // rax\n  void *v8; // rax\n  void *v9; // rcx\n\n  v2 = nullptr;\n  *(_OWORD *)a1 = 0;\n  *(_QWORD *)(a1 + 16) = 0;\n  *(_QWORD *)(a1 + 24) = 0;\n  v4 = (_OWORD *)a2;\n  if ( *(_QWORD *)(a2 + 24) > 0xFu )\n    v4 = *(_OWORD **)a2;\n  v5 = *(_QWORD *)(a2 + 16);\n  v6 = 0x7FFFFFFFFFFFFFFFLL;\n  if ( v5 > 0x7FFFFFFFFFFFFFFFLL )\n    sub_180003D90();\n  *(_QWORD *)(a1 + 24) = 15;\n  if ( v5 > 0xF )\n  {\n    if ( (v5 | 0xF) <= 0x7FFFFFFFFFFFFFFFLL )\n    {\n      v6 = v5 | 0xF;\n      if ( (v5 | 0xF) < 0x16 )\n        v6 = 22;\n      if ( (unsigned __int64)(v6 + 1) < 0x1000 )\n      {\n        if ( v6 != -1 )\n          v2 = operator new(v6 + 1);\n        goto LABEL_18;\n      }\n      v7 = v6 + 40;\n      if ( v6 + 40 < (unsigned __int64)(v6 + 1) )\n        Concurrency::cancel_current_task();\n    }\n    else\n    {\n      v7 = 0x8000000000000027uLL;\n    }\n    v8 = operator new(v7);\n    v9 = v8;\n    if ( !v8 )\n      invalid_parameter_noinfo_noreturn();\n    v2 = (_QWORD *)(((unsigned __int64)v8 + 39) & 0xFFFFFFFFFFFFFFE0uLL);\n    *(v2 - 1) = v9;\nLABEL_18:\n    *(_QWORD *)a1 = v2;\n    *(_QWORD *)(a1 + 16) = v5;\n    *(_QWORD *)(a1 + 24) = v6;\n    memcpy(v2, v4, v5 + 1);\n    return a1;\n  }\n  *(_QWORD *)(a1 + 16) = v5;\n  *(_OWORD *)a1 = *v4;\n  return a1;\n}", "assembly": "; \n; sub_180003F50 from 0x180003f50 to 0x180004067 (279 bytes)\n; \n; 26 xrefs:\n; > cocos2d::extension::AssetsManager::AssetsManager @ 0x1800011f7\n; > cocos2d::extension::AssetsManager::AssetsManager @ 0x180001205\n; > cocos2d::extension::AssetsManager::AssetsManager @ 0x180001213\n; > cocos2d::extension::AssetsManager::AssetsManager @ 0x180001221\n; > cocos2d::extension::AssetsManager::AssetsManager @ 0x180001235\n; > sub_180003160 @ 0x180003266\n; > sub_180003320 @ 0x18000335c\n; > sub_180003320 @ 0x180003375\n; > sub_180003750 @ 0x1800037c6\n; > cocos2d::extension::CCControlButton::create @ 0x180005f7c\n; > cocos2d::extension::CCEditBoxImplWin::CCEditBoxImplWin @ 0x180011463\n; > cocos2d::extension::CCEditBoxImplWin::CCEditBoxImplWin @ 0x180011471\n; > cocos2d::extension::WebSocket::WebSocket @ 0x18001937d\n; > cocos2d::extension::WebSocket::WebSocket @ 0x180019391\n; > cocos2d::extension::WebSocket::init @ 0x180019ab3\n; > cocos2d::extension::CCEditBox::CCEditBox @ 0x18001cd1f\n; > cocos2d::extension::CCEditBox::CCEditBox @ 0x18001cd33\n; > cocos2d::extension::CCEditBox::CCEditBox @ 0x18001cd47\n; > cocos2d::extension::CCEditBox::CCEditBox @ 0x18001cd5b\n; > cocos2d::extension::CCHttpRequest::CCHttpRequest @ 0x18001d474\n; > cocos2d::extension::CCHttpRequest::CCHttpRequest @ 0x18001d490\n; > cocos2d::extension::CCHttpResponse::CCHttpResponse @ 0x18001d7c5\n; > sub_18001DB70 @ 0x18001dc56\n; > sub_18001DB70 @ 0x18001dcea\n; > <???> @ 0x180049390\n; > <???> @ 0x18004939c\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, 0x180003f50\nmov     [rsp+arg_8], rbp                                               ; +0x5, 0x180003f55\nmov     [rsp+arg_10], rsi                                              ; +0xa, 0x180003f5a\npush    rdi                                                            ; +0xf, 0x180003f5f\nsub     rsp, 20h                                                       ; +0x10, 0x180003f60\nxor     eax, eax                                                       ; +0x14, 0x180003f64\nxorps   xmm0, xmm0                                                     ; +0x16, 0x180003f66\nmovups  xmmword ptr [rcx], xmm0                                        ; +0x19, 0x180003f69\nmov     [rcx+10h], rax                                                 ; +0x1c, 0x180003f6c\nmov     rbx, rcx                                                       ; +0x20, 0x180003f70\nmov     [rcx+18h], rax                                                 ; +0x23, 0x180003f73\nmov     rbp, rdx                                                       ; +0x27, 0x180003f77\ncmp     qword ptr [rdx+18h], 0Fh                                       ; +0x2a, 0x180003f7a\njbe     short loc_180003F84                                            ; +0x2f, 0x180003f7f\nmov     rbp, [rdx]                                                     ; +0x31, 0x180003f81\nmov     rsi, [rdx+10h]                                                 ; +0x34, 0x180003f84\nmov     rdi, 7FFFFFFFFFFFFFFFh                                         ; +0x38, 0x180003f88\ncmp     rsi, rdi                                                       ; +0x42, 0x180003f92\nja      loc_18000405B                                                  ; +0x45, 0x180003f95\nmov     qword ptr [rcx+18h], 0Fh                                       ; +0x4b, 0x180003f9b\ncmp     rsi, 0Fh                                                       ; +0x53, 0x180003fa3\nja      short loc_180003FB9                                            ; +0x57, 0x180003fa7\nmov     [rcx+10h], rsi                                                 ; +0x59, 0x180003fa9\nmovups  xmm0, xmmword ptr [rbp+0]                                      ; +0x5d, 0x180003fad\nmovups  xmmword ptr [rcx], xmm0                                        ; +0x61, 0x180003fb1\njmp     loc_180004043                                                  ; +0x64, 0x180003fb4\nmov     rcx, rsi                                                       ; +0x69, 0x180003fb9\nor      rcx, 0Fh                                                       ; +0x6c, 0x180003fbc\ncmp     rcx, rdi                                                       ; +0x70, 0x180003fc0\njbe     short loc_180003FF1                                            ; +0x73, 0x180003fc3\nmov     rax, 8000000000000000h                                         ; +0x75, 0x180003fc5\nadd     rax, 27h ; '''                                                 ; +0x7f, 0x180003fcf\nmov     rcx, rax; Size                                                 ; +0x83, 0x180003fd3\ncall    ??2@YAPEAX_K@Z; operator new(unsigned __int64)                 ; +0x86, 0x180003fd6\nmov     rcx, rax                                                       ; +0x8b, 0x180003fdb\ntest    rax, rax                                                       ; +0x8e, 0x180003fde\njz      short loc_180004018                                            ; +0x91, 0x180003fe1\nadd     rax, 27h ; '''                                                 ; +0x93, 0x180003fe3\nand     rax, 0FFFFFFFFFFFFFFE0h                                        ; +0x97, 0x180003fe7\nmov     [rax-8], rcx                                                   ; +0x9b, 0x180003feb\njmp     short loc_180004029                                            ; +0x9f, 0x180003fef\nmov     edx, 16h                                                       ; +0xa1, 0x180003ff1\nmov     rdi, rcx                                                       ; +0xa6, 0x180003ff6\ncmp     rcx, rdx                                                       ; +0xa9, 0x180003ff9\ncmovb   rdi, rdx                                                       ; +0xac, 0x180003ffc\nlea     rcx, [rdi+1]; Size                                             ; +0xb0, 0x180004000\ncmp     rcx, 1000h                                                     ; +0xb4, 0x180004004\njb      short loc_18000401F                                            ; +0xbb, 0x18000400b\nlea     rax, [rcx+27h]                                                 ; +0xbd, 0x18000400d\ncmp     rax, rcx                                                       ; +0xc1, 0x180004011\njbe     short loc_180004061                                            ; +0xc4, 0x180004014\njmp     short loc_180003FD3                                            ; +0xc6, 0x180004016\ncall    cs:_invalid_parameter_noinfo_noreturn                          ; +0xc8, 0x180004018\ndb 0CCh                                                                ; +0xce, 0x18000401e\ntest    rcx, rcx                                                       ; +0xcf, 0x18000401f\njz      short loc_180004029                                            ; +0xd2, 0x180004022\ncall    ??2@YAPEAX_K@Z; operator new(unsigned __int64)                 ; +0xd4, 0x180004024\nlea     r8, [rsi+1]; Size                                              ; +0xd9, 0x180004029\nmov     [rbx], rax                                                     ; +0xdd, 0x18000402d\nmov     rdx, rbp; Src                                                  ; +0xe0, 0x180004030\nmov     [rbx+10h], rsi                                                 ; +0xe3, 0x180004033\nmov     rcx, rax; void *                                               ; +0xe7, 0x180004037\nmov     [rbx+18h], rdi                                                 ; +0xea, 0x18000403a\ncall    memcpy                                                         ; +0xee, 0x18000403e\nmov     rbp, [rsp+28h+arg_8]                                           ; +0xf3, 0x180004043\nmov     rax, rbx                                                       ; +0xf8, 0x180004048\nmov     rbx, [rsp+28h+arg_0]                                           ; +0xfb, 0x18000404b\nmov     rsi, [rsp+28h+arg_10]                                          ; +0x100, 0x180004050\nadd     rsp, 20h                                                       ; +0x105, 0x180004055\npop     rdi                                                            ; +0x109, 0x180004059\nretn                                                                   ; +0x10a, 0x18000405a\ncall    sub_180003D90                                                  ; +0x10b, 0x18000405b\ndb 0CCh                                                                ; +0x110, 0x180004060\ncall    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) ; +0x111, 0x180004061\ndb 0CCh                                                                ; +0x116, 0x180004066", "xrefs": ["cocos2d::extension::AssetsManager::AssetsManager @ 0x1800011f7", "cocos2d::extension::AssetsManager::AssetsManager @ 0x180001205", "cocos2d::extension::AssetsManager::AssetsManager @ 0x180001213", "cocos2d::extension::AssetsManager::AssetsManager @ 0x180001221", "cocos2d::extension::AssetsManager::AssetsManager @ 0x180001235", "sub_180003160 @ 0x180003266", "sub_180003320 @ 0x18000335c", "sub_180003320 @ 0x180003375", "sub_180003750 @ 0x1800037c6", "cocos2d::extension::CCControlButton::create @ 0x180005f7c", "cocos2d::extension::CCEditBoxImplWin::CCEditBoxImplWin @ 0x180011463", "cocos2d::extension::CCEditBoxImplWin::CCEditBoxImplWin @ 0x180011471", "cocos2d::extension::WebSocket::WebSocket @ 0x18001937d", "cocos2d::extension::WebSocket::WebSocket @ 0x180019391", "cocos2d::extension::WebSocket::init @ 0x180019ab3", "cocos2d::extension::CCEditBox::CCEditBox @ 0x18001cd1f", "cocos2d::extension::CCEditBox::CCEditBox @ 0x18001cd33", "cocos2d::extension::CCEditBox::CCEditBox @ 0x18001cd47", "cocos2d::extension::CCEditBox::CCEditBox @ 0x18001cd5b", "cocos2d::extension::CCHttpRequest::CCHttpRequest @ 0x18001d474", "cocos2d::extension::CCHttpRequest::CCHttpRequest @ 0x18001d490", "cocos2d::extension::CCHttpResponse::CCHttpResponse @ 0x18001d7c5", "sub_18001DB70 @ 0x18001dc56", "sub_18001DB70 @ 0x18001dcea", "<???> @ 0x180049390", "<???> @ 0x18004939c"], "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"}