{"type": "func", "start": 6442462064, "end": 6442462220, "name": "sub_180002B70", "pseudocode": "// \n// sub_180002B70 from 0x180002b70 to 0x180002c0c (156 bytes)\n// \n// 10 xrefs:\n// > cocos2d::extension::AssetsManager::checkUpdate @ 0x180001a2f\n// > cocos2d::extension::AssetsManager::checkUpdate @ 0x180001af9\n// > sub_180001B60 @ 0x180001bdf\n// > sub_180001B60 @ 0x180001c34\n// > sub_180001B60 @ 0x180001c5a\n// > sub_180002480 @ 0x1800024f2\n// > cocos2d::extension::AssetsManager::downLoad @ 0x180002697\n// > cocos2d::extension::AssetsManager::downLoad @ 0x180002792\n// > cocos2d::extension::AssetsManager::sendErrorMessage @ 0x180002a98\n// > <???> @ 0x18004918c\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// Hidden C++ exception states: #wind=1\n__int64 __fastcall sub_180002B70(__int64 a1, __int64 a2)\n{\n  __int64 v4; // rsi\n  __int64 *v5; // rbx\n  __int64 v6; // rdi\n  _QWORD *v7; // rax\n  _QWORD *v8; // rdx\n\n  v4 = a1 + 64;\n  pthread_mutex_lock(a1 + 64);\n  v5 = *(__int64 **)(a1 + 56);\n  v6 = *v5;\n  if ( v5[1] == 0xAAAAAAAAAAAAAAALL )\n    std::_Xlength_error(\"list too long\");\n  v7 = operator new(0x18u);\n  v7[2] = a2;\n  ++v5[1];\n  v8 = *(_QWORD **)(v6 + 8);\n  *v7 = v6;\n  v7[1] = v8;\n  *(_QWORD *)(v6 + 8) = v7;\n  *v8 = v7;\n  return pthread_mutex_unlock(v4);\n}", "assembly": "; \n; sub_180002B70 from 0x180002b70 to 0x180002c0c (156 bytes)\n; \n; 10 xrefs:\n; > cocos2d::extension::AssetsManager::checkUpdate @ 0x180001a2f\n; > cocos2d::extension::AssetsManager::checkUpdate @ 0x180001af9\n; > sub_180001B60 @ 0x180001bdf\n; > sub_180001B60 @ 0x180001c34\n; > sub_180001B60 @ 0x180001c5a\n; > sub_180002480 @ 0x1800024f2\n; > cocos2d::extension::AssetsManager::downLoad @ 0x180002697\n; > cocos2d::extension::AssetsManager::downLoad @ 0x180002792\n; > cocos2d::extension::AssetsManager::sendErrorMessage @ 0x180002a98\n; > <???> @ 0x18004918c\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, 0x180002b70\nmov     [rsp+arg_8], rbp                                               ; +0x5, 0x180002b75\nmov     [rsp+arg_10], rsi                                              ; +0xa, 0x180002b7a\npush    rdi                                                            ; +0xf, 0x180002b7f\nsub     rsp, 30h                                                       ; +0x10, 0x180002b80\nmov     rbp, rdx                                                       ; +0x14, 0x180002b84\nmov     rbx, rcx                                                       ; +0x17, 0x180002b87\nlea     rsi, [rcx+40h]                                                 ; +0x1a, 0x180002b8a\nmov     rcx, rsi                                                       ; +0x1e, 0x180002b8e\ncall    cs:pthread_mutex_lock                                          ; +0x21, 0x180002b91\nmov     rbx, [rbx+38h]                                                 ; +0x27, 0x180002b97\nmov     rdi, [rbx]                                                     ; +0x2b, 0x180002b9b\nmov     rax, 0AAAAAAAAAAAAAAAh                                         ; +0x2e, 0x180002b9e\ncmp     [rbx+8], rax                                                   ; +0x38, 0x180002ba8\njnz     short loc_180002BBC                                            ; +0x3c, 0x180002bac\nlea     rcx, aListTooLong; \"list too long\"                             ; +0x3e, 0x180002bae\ncall    cs:?_Xlength_error@std@@YAXPEBD@Z; std::_Xlength_error(char const *) ; +0x45, 0x180002bb5\nalign 4                                                                ; +0x4b, 0x180002bbb\nmov     [rsp+38h+var_18], rbx                                          ; +0x4c, 0x180002bbc\nmov     [rsp+38h+var_10], 0                                            ; +0x51, 0x180002bc1\nmov     ecx, 18h; Size                                                 ; +0x5a, 0x180002bca\ncall    ??2@YAPEAX_K@Z; operator new(unsigned __int64)                 ; +0x5f, 0x180002bcf\nmov     [rax+10h], rbp                                                 ; +0x64, 0x180002bd4\ninc     qword ptr [rbx+8]                                              ; +0x68, 0x180002bd8\nmov     rdx, [rdi+8]                                                   ; +0x6c, 0x180002bdc\nmov     [rax], rdi                                                     ; +0x70, 0x180002be0\nmov     [rax+8], rdx                                                   ; +0x73, 0x180002be3\nmov     [rdi+8], rax                                                   ; +0x77, 0x180002be7\nmov     [rdx], rax                                                     ; +0x7b, 0x180002beb\nmov     rcx, rsi                                                       ; +0x7e, 0x180002bee\nmov     rbx, [rsp+38h+arg_0]                                           ; +0x81, 0x180002bf1\nmov     rbp, [rsp+38h+arg_8]                                           ; +0x86, 0x180002bf6\nmov     rsi, [rsp+38h+arg_10]                                          ; +0x8b, 0x180002bfb\nadd     rsp, 30h                                                       ; +0x90, 0x180002c00\npop     rdi                                                            ; +0x94, 0x180002c04\njmp     cs:pthread_mutex_unlock                                        ; +0x95, 0x180002c05", "xrefs": ["cocos2d::extension::AssetsManager::checkUpdate @ 0x180001a2f", "cocos2d::extension::AssetsManager::checkUpdate @ 0x180001af9", "sub_180001B60 @ 0x180001bdf", "sub_180001B60 @ 0x180001c34", "sub_180001B60 @ 0x180001c5a", "sub_180002480 @ 0x1800024f2", "cocos2d::extension::AssetsManager::downLoad @ 0x180002697", "cocos2d::extension::AssetsManager::downLoad @ 0x180002792", "cocos2d::extension::AssetsManager::sendErrorMessage @ 0x180002a98", "<???> @ 0x18004918c"], "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"}