{"type": "func", "start": 6442458816, "end": 6442460106, "name": "cocos2d::extension::AssetsManager::uncompress", "pseudocode": "// \n// cocos2d::extension::AssetsManager::uncompress from 0x180001ec0 to 0x1800023ca (1290 bytes)\n// \n// 3 xrefs:\n// > sub_180001B60 @ 0x180001be7\n// > <???> @ 0x18002fdf8\n// > <???> @ 0x180049114\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=2\n__int64 __fastcall cocos2d::extension::AssetsManager::uncompress(cocos2d::extension::AssetsManager *this)\n{\n  char *v1; // r12\n  size_t v2; // rsi\n  char *v3; // r15\n  size_t v4; // r14\n  unsigned __int64 v5; // rbx\n  char *v6; // rdi\n  size_t v7; // rax\n  void *v8; // rax\n  const char *v9; // rdx\n  void **v10; // rcx\n  cocos2d *v11; // rax\n  struct cocos2d::unz_global_info_s *v12; // r8\n  cocos2d *v13; // r14\n  void *v14; // rdx\n  unsigned __int8 v15; // bl\n  void *v16; // rcx\n  size_t v17; // r13\n  size_t v18; // rbx\n  size_t v19; // r15\n  unsigned __int64 v20; // rdi\n  char *v21; // rsi\n  size_t v22; // rax\n  void *v23; // rax\n  void *v24; // rdx\n  __int64 v25; // rax\n  const CHAR *v26; // rcx\n  void *v27; // rdx\n  const char *v28; // rcx\n  void *v29; // rdx\n  FILE *v30; // rbx\n  unsigned int v31; // r9d\n  int CurrentFile; // eax\n  void *v33; // rdx\n  CHAR *v34; // rcx\n  CHAR *v35; // rcx\n  void *v37; // [rsp+28h] [rbp-D8h]\n  char *v38; // [rsp+38h] [rbp-C8h]\n  unsigned int v39; // [rsp+40h] [rbp-C0h]\n  int v40; // [rsp+40h] [rbp-C0h]\n  unsigned int v41; // [rsp+48h] [rbp-B8h] BYREF\n  char *v42; // [rsp+50h] [rbp-B0h]\n  LPCSTR lpPathName[2]; // [rsp+58h] [rbp-A8h] BYREF\n  size_t v44; // [rsp+68h] [rbp-98h]\n  unsigned __int64 v45; // [rsp+70h] [rbp-90h]\n  void *Block[2]; // [rsp+78h] [rbp-88h] BYREF\n  __int128 v47; // [rsp+88h] [rbp-78h]\n  _BYTE v48[80]; // [rsp+A0h] [rbp-60h] BYREF\n  _BYTE Src[512]; // [rsp+F0h] [rbp-10h] BYREF\n  _BYTE Buffer[8192]; // [rsp+2F0h] [rbp+1F0h] BYREF\n\n  v1 = (char *)this + 8;\n  v42 = (char *)this + 8;\n  v2 = *((_QWORD *)this + 3);\n  if ( 0x7FFFFFFFFFFFFFFFLL - v2 < 0x20 )\n    sub_180003D90();\n  v3 = (char *)this + 8;\n  if ( *((_QWORD *)this + 4) > 0xFu )\n    v3 = *(char **)v1;\n  *(_OWORD *)Block = 0;\n  v47 = 0;\n  v4 = v2 + 32;\n  v5 = 15;\n  v6 = (char *)Block;\n  if ( v2 + 32 > 0xF )\n  {\n    v5 = v4 | 0xF;\n    if ( (v4 | 0xF) <= 0x7FFFFFFFFFFFFFFFLL )\n    {\n      if ( v5 < 0x16 )\n        v5 = 22;\n      if ( v5 + 1 < 0x1000 )\n      {\n        if ( v5 == -1 )\n          v6 = nullptr;\n        else\n          v6 = (char *)operator new(v5 + 1);\nLABEL_17:\n        Block[0] = v6;\n        goto LABEL_18;\n      }\n      v7 = v5 + 40;\n      if ( v5 + 40 < v5 + 1 )\n        Concurrency::cancel_current_task();\n    }\n    else\n    {\n      v5 = 0x7FFFFFFFFFFFFFFFLL;\n      v7 = 0x8000000000000027uLL;\n    }\n    v8 = operator new(v7);\n    if ( !v8 )\n      goto LABEL_27;\n    v6 = (char *)(((unsigned __int64)v8 + 39) & 0xFFFFFFFFFFFFFFE0uLL);\n    *((_QWORD *)v6 - 1) = v8;\n    goto LABEL_17;\n  }\nLABEL_18:\n  *(_QWORD *)&v47 = v2 + 32;\n  *((_QWORD *)&v47 + 1) = v5;\n  memcpy(v6, v3, v2);\n  qmemcpy(&v6[v2], \"cocos2dx-update-temp-package.zip\", 32);\n  v6[v4] = 0;\n  v10 = Block;\n  if ( *((_QWORD *)&v47 + 1) > 0xFu )\n    v10 = (void **)Block[0];\n  v11 = (cocos2d *)cocos2d::unzOpen((cocos2d *)v10, v9);\n  v13 = v11;\n  if ( !v11 )\n    goto LABEL_23;\n  if ( cocos2d::unzGetGlobalInfo(v11, &v41, v12) )\n  {\nLABEL_22:\n    cocos2d::unzClose(v13, v14);\nLABEL_23:\n    v15 = 0;\n    goto LABEL_24;\n  }\n  v39 = 0;\n  if ( v41 )\n  {\n    while ( 1 )\n    {\n      LODWORD(v38) = 0;\n      LODWORD(v37) = 0;\n      if ( cocos2d::unzGetCurrentFileInfo(\n             v13,\n             v48,\n             (struct cocos2d::unz_file_info_s *)Src,\n             (char *)0x200,\n             0,\n             v37,\n             0,\n             v38,\n             v39) )\n      {\n        goto LABEL_22;\n      }\n      v17 = *((_QWORD *)v1 + 2);\n      v18 = -1;\n      do\n        ++v18;\n      while ( Src[v18] );\n      if ( 0x7FFFFFFFFFFFFFFFLL - v17 < v18 )\n        sub_180003D90();\n      if ( *((_QWORD *)v42 + 3) > 0xFu )\n        v1 = *(char **)v42;\n      *(_OWORD *)lpPathName = 0;\n      v44 = 0;\n      v45 = 0;\n      v19 = v18 + v17;\n      v20 = 15;\n      v21 = (char *)lpPathName;\n      if ( v18 + v17 > 0xF )\n        break;\nLABEL_48:\n      v44 = v18 + v17;\n      v45 = v20;\n      memcpy(v21, v1, v17);\n      memcpy(&v21[v17], Src, v18);\n      v21[v19] = 0;\n      v25 = -1;\n      do\n        ++v25;\n      while ( Src[v25] );\n      if ( v48[v25 + 79] == 47 )\n      {\n        v26 = (const CHAR *)lpPathName;\n        if ( v45 > 0xF )\n          v26 = lpPathName[0];\n        if ( !CreateDirectoryA(v26, nullptr) && GetLastError() != 183 )\n          goto LABEL_73;\n      }\n      else\n      {\n        if ( cocos2d::unzOpenCurrentFile(v13, v24) )\n          goto LABEL_73;\n        v28 = (const char *)lpPathName;\n        if ( v45 > 0xF )\n          v28 = lpPathName[0];\n        v30 = fopen(v28, \"wb\");\n        if ( !v30 )\n        {\nLABEL_72:\n          cocos2d::unzCloseCurrentFile(v13, v29);\nLABEL_73:\n          cocos2d::unzClose(v13, v27);\n          if ( v45 > 0xF )\n          {\n            v35 = (CHAR *)lpPathName[0];\n            if ( v45 + 1 >= 0x1000 )\n            {\n              v35 = *((CHAR **)lpPathName[0] - 1);\n              if ( (unsigned __int64)(lpPathName[0] - (LPCSTR)v35 - 8) > 0x1F )\nLABEL_76:\n                invalid_parameter_noinfo_noreturn();\n            }\n            j_j_free(v35);\n          }\n          goto LABEL_23;\n        }\n        while ( 1 )\n        {\n          CurrentFile = cocos2d::unzReadCurrentFile(v13, Buffer, (void *)0x2000, v31);\n          if ( CurrentFile < 0 )\n            goto LABEL_72;\n          if ( CurrentFile <= 0 )\n            break;\n          fwrite(Buffer, CurrentFile, 1u, v30);\n        }\n        fclose(v30);\n      }\n      cocos2d::unzCloseCurrentFile(v13, v27);\n      v39 = v40 + 1;\n      if ( v39 < v41 && cocos2d::unzGoToNextFile(v13, v33) )\n        goto LABEL_73;\n      if ( v45 > 0xF )\n      {\n        v34 = (CHAR *)lpPathName[0];\n        if ( v45 + 1 >= 0x1000 )\n        {\n          v34 = *((CHAR **)lpPathName[0] - 1);\n          if ( (unsigned __int64)(lpPathName[0] - (LPCSTR)v34 - 8) > 0x1F )\n            goto LABEL_76;\n        }\n        j_j_free(v34);\n      }\n      if ( v39 >= v41 )\n        goto LABEL_78;\n      v1 = v42;\n    }\n    v20 = v19 | 0xF;\n    if ( (v19 | 0xF) <= 0x7FFFFFFFFFFFFFFFLL )\n    {\n      if ( v20 < 0x16 )\n        v20 = 22;\n      if ( v20 + 1 < 0x1000 )\n      {\n        if ( v20 == -1 )\n          v21 = nullptr;\n        else\n          v21 = (char *)operator new(v20 + 1);\nLABEL_47:\n        lpPathName[0] = v21;\n        goto LABEL_48;\n      }\n      v22 = v20 + 40;\n      if ( v20 + 40 < v20 + 1 )\n        Concurrency::cancel_current_task();\n    }\n    else\n    {\n      v20 = 0x7FFFFFFFFFFFFFFFLL;\n      v22 = 0x8000000000000027uLL;\n    }\n    v23 = operator new(v22);\n    if ( !v23 )\n      goto LABEL_76;\n    v21 = (char *)(((unsigned __int64)v23 + 39) & 0xFFFFFFFFFFFFFFE0uLL);\n    *((_QWORD *)v21 - 1) = v23;\n    goto LABEL_47;\n  }\nLABEL_78:\n  v15 = 1;\nLABEL_24:\n  if ( *((_QWORD *)&v47 + 1) > 0xFu )\n  {\n    v16 = Block[0];\n    if ( (unsigned __int64)(*((_QWORD *)&v47 + 1) + 1LL) >= 0x1000 )\n    {\n      v16 = *((void **)Block[0] - 1);\n      if ( (unsigned __int64)((char *)Block[0] - (char *)v16 - 8) > 0x1F )\nLABEL_27:\n        invalid_parameter_noinfo_noreturn();\n    }\n    j_j_free(v16);\n  }\n  return v15;\n}", "assembly": "; \n; cocos2d::extension::AssetsManager::uncompress from 0x180001ec0 to 0x1800023ca (1290 bytes)\n; \n; 3 xrefs:\n; > sub_180001B60 @ 0x180001be7\n; > <???> @ 0x18002fdf8\n; > <???> @ 0x180049114\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-8+arg_8], rbx                                             ; +0x0, 0x180001ec0\nmov     [rsp-8+arg_10], rsi                                            ; +0x5, 0x180001ec5\nmov     [rsp-8+arg_18], rdi                                            ; +0xa, 0x180001eca\npush    rbp                                                            ; +0xf, 0x180001ecf\npush    r12                                                            ; +0x10, 0x180001ed0\npush    r13                                                            ; +0x12, 0x180001ed2\npush    r14                                                            ; +0x14, 0x180001ed4\npush    r15                                                            ; +0x16, 0x180001ed6\nlea     rbp, [rsp-2200h]                                               ; +0x18, 0x180001ed8\nmov     eax, 2300h                                                     ; +0x20, 0x180001ee0\ncall    __alloca_probe                                                 ; +0x25, 0x180001ee5\nsub     rsp, rax                                                       ; +0x2a, 0x180001eea\nmov     rax, cs:__security_cookie                                      ; +0x2d, 0x180001eed\nxor     rax, rsp                                                       ; +0x34, 0x180001ef4\nmov     [rbp+2220h+var_30], rax                                        ; +0x37, 0x180001ef7\nlea     r12, [rcx+8]                                                   ; +0x3e, 0x180001efe\nmov     [rsp+2320h+var_22D0], r12                                      ; +0x42, 0x180001f02\nmov     rsi, [r12+10h]                                                 ; +0x47, 0x180001f07\nmov     rcx, 7FFFFFFFFFFFFFFFh                                         ; +0x4c, 0x180001f0c\nmov     rax, rcx                                                       ; +0x56, 0x180001f16\nsub     rax, rsi                                                       ; +0x59, 0x180001f19\ncmp     rax, 20h ; ' '                                                 ; +0x5c, 0x180001f1c\njb      loc_1800023BE                                                  ; +0x60, 0x180001f20\nmov     r15, r12                                                       ; +0x66, 0x180001f26\ncmp     qword ptr [r12+18h], 0Fh                                       ; +0x69, 0x180001f29\njbe     short loc_180001F35                                            ; +0x6f, 0x180001f2f\nmov     r15, [r12]                                                     ; +0x71, 0x180001f31\nxorps   xmm0, xmm0                                                     ; +0x75, 0x180001f35\nmovups  xmmword ptr [rsp+2320h+Block], xmm0                            ; +0x78, 0x180001f38\nxorps   xmm1, xmm1                                                     ; +0x7d, 0x180001f3d\nmovdqu  [rbp+2220h+var_2298], xmm1                                     ; +0x80, 0x180001f40\nlea     r14, [rsi+20h]                                                 ; +0x85, 0x180001f45\nmov     ebx, 0Fh                                                       ; +0x89, 0x180001f49\nlea     rdi, [rsp+2320h+Block]                                         ; +0x8e, 0x180001f4e\nmov     rax, 8000000000000000h                                         ; +0x93, 0x180001f53\nlea     edx, [rbx+7]                                                   ; +0x9d, 0x180001f5d\ncmp     r14, rbx                                                       ; +0xa0, 0x180001f60\njbe     short loc_180001FD0                                            ; +0xa3, 0x180001f63\nmov     rbx, r14                                                       ; +0xa5, 0x180001f65\nor      rbx, 0Fh                                                       ; +0xa8, 0x180001f68\ncmp     rbx, rcx                                                       ; +0xac, 0x180001f6c\njbe     short loc_180001F97                                            ; +0xaf, 0x180001f6f\nmov     rbx, rcx                                                       ; +0xb1, 0x180001f71\nadd     rax, 27h ; '''                                                 ; +0xb4, 0x180001f74\nmov     rcx, rax; Size                                                 ; +0xb8, 0x180001f78\ncall    ??2@YAPEAX_K@Z; operator new(unsigned __int64)                 ; +0xbb, 0x180001f7b\ntest    rax, rax                                                       ; +0xc0, 0x180001f80\njz      loc_18000207C                                                  ; +0xc3, 0x180001f83\nlea     rdi, [rax+27h]                                                 ; +0xc9, 0x180001f89\nand     rdi, 0FFFFFFFFFFFFFFE0h                                        ; +0xcd, 0x180001f8d\nmov     [rdi-8], rax                                                   ; +0xd1, 0x180001f91\njmp     short loc_180001FCB                                            ; +0xd5, 0x180001f95\ncmp     rbx, rdx                                                       ; +0xd7, 0x180001f97\ncmovb   rbx, rdx                                                       ; +0xda, 0x180001f9a\nlea     rcx, [rbx+1]; Size                                             ; +0xde, 0x180001f9e\ncmp     rcx, 1000h                                                     ; +0xe2, 0x180001fa2\njb      short loc_180001FBA                                            ; +0xe9, 0x180001fa9\nlea     rax, [rcx+27h]                                                 ; +0xeb, 0x180001fab\ncmp     rax, rcx                                                       ; +0xef, 0x180001faf\njbe     loc_1800023B8                                                  ; +0xf2, 0x180001fb2\njmp     short loc_180001F78                                            ; +0xf8, 0x180001fb8\ntest    rcx, rcx                                                       ; +0xfa, 0x180001fba\njz      short loc_180001FC9                                            ; +0xfd, 0x180001fbd\ncall    ??2@YAPEAX_K@Z; operator new(unsigned __int64)                 ; +0xff, 0x180001fbf\nmov     rdi, rax                                                       ; +0x104, 0x180001fc4\njmp     short loc_180001FCB                                            ; +0x107, 0x180001fc7\nxor     edi, edi                                                       ; +0x109, 0x180001fc9\nmov     [rsp+2320h+Block], rdi                                         ; +0x10b, 0x180001fcb\nmov     qword ptr [rbp+2220h+var_2298], r14                            ; +0x110, 0x180001fd0\nmov     qword ptr [rbp+2220h+var_2298+8], rbx                          ; +0x114, 0x180001fd4\nmov     r8, rsi; Size                                                  ; +0x118, 0x180001fd8\nmov     rdx, r15; Src                                                  ; +0x11b, 0x180001fdb\nmov     rcx, rdi; void *                                               ; +0x11e, 0x180001fde\ncall    memcpy                                                         ; +0x121, 0x180001fe1\nmovups  xmm0, cs:xmmword_1800233C8                                     ; +0x126, 0x180001fe6\nmovups  xmmword ptr [rdi+rsi], xmm0                                    ; +0x12d, 0x180001fed\nmovups  xmm1, cs:xmmword_1800233D8                                     ; +0x131, 0x180001ff1\nmovups  xmmword ptr [rdi+rsi+10h], xmm1                                ; +0x138, 0x180001ff8\nmov     byte ptr [rdi+r14], 0                                          ; +0x13d, 0x180001ffd\nlea     rcx, [rsp+2320h+Block]                                         ; +0x142, 0x180002002\ncmp     qword ptr [rbp+2220h+var_2298+8], 0Fh                          ; +0x147, 0x180002007\ncmova   rcx, [rsp+2320h+Block]                                         ; +0x14c, 0x18000200c\ncall    cs:?unzOpen@cocos2d@@YAPEAXPEBD@Z; cocos2d::unzOpen(char const *) ; +0x152, 0x180002012\nmov     r14, rax                                                       ; +0x158, 0x180002018\ntest    rax, rax                                                       ; +0x15b, 0x18000201b\njz      short loc_18000203B                                            ; +0x15e, 0x18000201e\nlea     rdx, [rsp+2320h+var_22D8]                                      ; +0x160, 0x180002020\nmov     rcx, rax                                                       ; +0x165, 0x180002025\ncall    cs:?unzGetGlobalInfo@cocos2d@@YAHPEAXPEAUunz_global_info_s@1@@Z; cocos2d::unzGetGlobalInfo(void *,cocos2d::unz_global_info_s *) ; +0x168, 0x180002028\ntest    eax, eax                                                       ; +0x16e, 0x18000202e\njz      short loc_180002083                                            ; +0x170, 0x180002030\nmov     rcx, r14                                                       ; +0x172, 0x180002032\ncall    cs:?unzClose@cocos2d@@YAHPEAX@Z; cocos2d::unzClose(void *)     ; +0x175, 0x180002035\nxor     bl, bl                                                         ; +0x17b, 0x18000203b\nmov     rdx, qword ptr [rbp+2220h+var_2298+8]                          ; +0x17d, 0x18000203d\ncmp     rdx, 0Fh                                                       ; +0x181, 0x180002041\njbe     loc_18000237F                                                  ; +0x185, 0x180002045\ninc     rdx                                                            ; +0x18b, 0x18000204b\nmov     rcx, [rsp+2320h+Block]; Block                                  ; +0x18e, 0x18000204e\nmov     rax, rcx                                                       ; +0x193, 0x180002053\ncmp     rdx, 1000h                                                     ; +0x196, 0x180002056\njb      loc_18000237A                                                  ; +0x19d, 0x18000205d\nadd     rdx, 27h ; '''                                                 ; +0x1a3, 0x180002063\nmov     rcx, [rcx-8]                                                   ; +0x1a7, 0x180002067\nsub     rax, rcx                                                       ; +0x1ab, 0x18000206b\nadd     rax, 0FFFFFFFFFFFFFFF8h                                        ; +0x1ae, 0x18000206e\ncmp     rax, 1Fh                                                       ; +0x1b2, 0x180002072\njbe     loc_18000237A                                                  ; +0x1b6, 0x180002076\ncall    cs:_invalid_parameter_noinfo_noreturn                          ; +0x1bc, 0x18000207c\ndb 90h                                                                 ; +0x1c2, 0x180002082\nxor     edi, edi                                                       ; +0x1c3, 0x180002083\nmov     [rsp+2320h+var_22E0], edi                                      ; +0x1c5, 0x180002085\ncmp     [rsp+2320h+var_22D8], edi                                      ; +0x1c9, 0x180002089\njbe     loc_180002373                                                  ; +0x1cd, 0x18000208d\nmov     dword ptr [rsp+2320h+var_22E8], edi                            ; +0x1d3, 0x180002093\nmov     [rsp+2320h+var_22F0], rdi                                      ; +0x1d7, 0x180002097\nmov     dword ptr [rsp+2320h+var_22F8], edi                            ; +0x1dc, 0x18000209c\nmov     [rsp+2320h+var_2300], rdi                                      ; +0x1e0, 0x1800020a0\nmov     r9d, 200h                                                      ; +0x1e5, 0x1800020a5\nlea     r8, [rbp+2220h+Src]                                            ; +0x1eb, 0x1800020ab\nlea     rdx, [rbp+2220h+var_2280]                                      ; +0x1ef, 0x1800020af\nmov     rcx, r14                                                       ; +0x1f3, 0x1800020b3\ncall    cs:?unzGetCurrentFileInfo@cocos2d@@YAHPEAXPEAUunz_file_info_s@1@PEADK0K2K@Z; cocos2d::unzGetCurrentFileInfo(void *,cocos2d::unz_file_info_s *,char *,ulong,void *,ulong,char *,ulong) ; +0x1f6, 0x1800020b6\ntest    eax, eax                                                       ; +0x1fc, 0x1800020bc\njnz     loc_180002032                                                  ; +0x1fe, 0x1800020be\nmov     r13, [r12+10h]                                                 ; +0x204, 0x1800020c4\nlea     rax, [rbp+2220h+Src]                                           ; +0x209, 0x1800020c9\nmov     rbx, 0FFFFFFFFFFFFFFFFh                                        ; +0x20d, 0x1800020cd\ninc     rbx                                                            ; +0x214, 0x1800020d4\ncmp     byte ptr [rax+rbx], 0                                          ; +0x217, 0x1800020d7\njnz     short loc_1800020D4                                            ; +0x21b, 0x1800020db\nmov     rcx, 7FFFFFFFFFFFFFFFh                                         ; +0x21d, 0x1800020dd\nmov     rax, rcx                                                       ; +0x227, 0x1800020e7\nsub     rax, r13                                                       ; +0x22a, 0x1800020ea\ncmp     rax, rbx                                                       ; +0x22d, 0x1800020ed\njb      loc_1800023B2                                                  ; +0x230, 0x1800020f0\nmov     rax, [rsp+2320h+var_22D0]                                      ; +0x236, 0x1800020f6\ncmp     qword ptr [rax+18h], 0Fh                                       ; +0x23b, 0x1800020fb\njbe     short loc_180002105                                            ; +0x240, 0x180002100\nmov     r12, [rax]                                                     ; +0x242, 0x180002102\nxorps   xmm0, xmm0                                                     ; +0x245, 0x180002105\nmovups  xmmword ptr [rsp+2320h+lpPathName], xmm0                       ; +0x248, 0x180002108\nmov     [rsp+2320h+var_22B8], rdi                                      ; +0x24d, 0x18000210d\nmov     [rsp+2320h+var_22B0], rdi                                      ; +0x252, 0x180002112\nlea     r15, [rbx+r13]                                                 ; +0x257, 0x180002117\nmov     edi, 0Fh                                                       ; +0x25b, 0x18000211b\nlea     rsi, [rsp+2320h+lpPathName]                                    ; +0x260, 0x180002120\ncmp     r15, rdi                                                       ; +0x265, 0x180002125\njbe     short loc_1800021A5                                            ; +0x268, 0x180002128\nmov     rdi, r15                                                       ; +0x26a, 0x18000212a\nor      rdi, 0Fh                                                       ; +0x26d, 0x18000212d\ncmp     rdi, rcx                                                       ; +0x271, 0x180002131\njbe     short loc_180002149                                            ; +0x274, 0x180002134\nmov     rdi, rcx                                                       ; +0x276, 0x180002136\nmov     rax, 8000000000000000h                                         ; +0x279, 0x180002139\nadd     rax, 27h ; '''                                                 ; +0x283, 0x180002143\njmp     short loc_180002170                                            ; +0x287, 0x180002147\ncmp     rdi, 16h                                                       ; +0x289, 0x180002149\nmov     eax, 16h                                                       ; +0x28d, 0x18000214d\ncmovb   rdi, rax                                                       ; +0x292, 0x180002152\nlea     rcx, [rdi+1]; Size                                             ; +0x296, 0x180002156\ncmp     rcx, 1000h                                                     ; +0x29a, 0x18000215a\njb      short loc_18000218F                                            ; +0x2a1, 0x180002161\nlea     rax, [rcx+27h]                                                 ; +0x2a3, 0x180002163\ncmp     rax, rcx                                                       ; +0x2a7, 0x180002167\njbe     loc_1800023C4                                                  ; +0x2aa, 0x18000216a\nmov     rcx, rax; Size                                                 ; +0x2b0, 0x180002170\ncall    ??2@YAPEAX_K@Z; operator new(unsigned __int64)                 ; +0x2b3, 0x180002173\ntest    rax, rax                                                       ; +0x2b8, 0x180002178\njz      loc_180002362                                                  ; +0x2bb, 0x18000217b\nlea     rsi, [rax+27h]                                                 ; +0x2c1, 0x180002181\nand     rsi, 0FFFFFFFFFFFFFFE0h                                        ; +0x2c5, 0x180002185\nmov     [rsi-8], rax                                                   ; +0x2c9, 0x180002189\njmp     short loc_1800021A0                                            ; +0x2cd, 0x18000218d\ntest    rcx, rcx                                                       ; +0x2cf, 0x18000218f\njz      short loc_18000219E                                            ; +0x2d2, 0x180002192\ncall    ??2@YAPEAX_K@Z; operator new(unsigned __int64)                 ; +0x2d4, 0x180002194\nmov     rsi, rax                                                       ; +0x2d9, 0x180002199\njmp     short loc_1800021A0                                            ; +0x2dc, 0x18000219c\nxor     esi, esi                                                       ; +0x2de, 0x18000219e\nmov     [rsp+2320h+lpPathName], rsi                                    ; +0x2e0, 0x1800021a0\nmov     [rsp+2320h+var_22B8], r15                                      ; +0x2e5, 0x1800021a5\nmov     [rsp+2320h+var_22B0], rdi                                      ; +0x2ea, 0x1800021aa\nmov     r8, r13; Size                                                  ; +0x2ef, 0x1800021af\nmov     rdx, r12; Src                                                  ; +0x2f2, 0x1800021b2\nmov     rcx, rsi; void *                                               ; +0x2f5, 0x1800021b5\ncall    memcpy                                                         ; +0x2f8, 0x1800021b8\nlea     rcx, [rsi+r13]; void *                                         ; +0x2fd, 0x1800021bd\nmov     r8, rbx; Size                                                  ; +0x301, 0x1800021c1\nlea     rdx, [rbp+2220h+Src]; Src                                      ; +0x304, 0x1800021c4\ncall    memcpy                                                         ; +0x308, 0x1800021c8\nmov     byte ptr [rsi+r15], 0                                          ; +0x30d, 0x1800021cd\nlea     rcx, [rbp+2220h+Src]                                           ; +0x312, 0x1800021d2\nmov     rax, 0FFFFFFFFFFFFFFFFh                                        ; +0x316, 0x1800021d6\nnop     dword ptr [rax]                                                ; +0x31d, 0x1800021dd\nlea     rax, [rax+1]                                                   ; +0x320, 0x1800021e0\ncmp     byte ptr [rcx+rax], 0                                          ; +0x324, 0x1800021e4\njnz     short loc_1800021E0                                            ; +0x328, 0x1800021e8\ncmp     [rbp+rax+2220h+var_2231], 2Fh ; '/'                            ; +0x32a, 0x1800021ea\njnz     short loc_180002225                                            ; +0x32f, 0x1800021ef\nlea     rcx, [rsp+2320h+lpPathName]                                    ; +0x331, 0x1800021f1\ncmp     [rsp+2320h+var_22B0], 0Fh                                      ; +0x336, 0x1800021f6\ncmova   rcx, [rsp+2320h+lpPathName]; lpPathName                        ; +0x33c, 0x1800021fc\nxor     edx, edx; lpSecurityAttributes                                 ; +0x342, 0x180002202\ncall    cs:CreateDirectoryA                                            ; +0x344, 0x180002204\ntest    eax, eax                                                       ; +0x34a, 0x18000220a\njnz     loc_1800022A4                                                  ; +0x34c, 0x18000220c\ncall    cs:GetLastError                                                ; +0x352, 0x180002212\ncmp     eax, 0B7h                                                      ; +0x358, 0x180002218\njnz     loc_180002320                                                  ; +0x35d, 0x18000221d\njmp     short loc_1800022A4                                            ; +0x363, 0x180002223\nmov     rcx, r14                                                       ; +0x365, 0x180002225\ncall    cs:?unzOpenCurrentFile@cocos2d@@YAHPEAX@Z; cocos2d::unzOpenCurrentFile(void *) ; +0x368, 0x180002228\ntest    eax, eax                                                       ; +0x36e, 0x18000222e\njnz     loc_180002320                                                  ; +0x370, 0x180002230\nlea     rcx, [rsp+2320h+lpPathName]                                    ; +0x376, 0x180002236\ncmp     [rsp+2320h+var_22B0], 0Fh                                      ; +0x37b, 0x18000223b\ncmova   rcx, [rsp+2320h+lpPathName]; FileName                          ; +0x381, 0x180002241\nlea     rdx, Mode; \"wb\"                                                ; +0x387, 0x180002247\ncall    cs:fopen                                                       ; +0x38e, 0x18000224e\nmov     rbx, rax                                                       ; +0x394, 0x180002254\ntest    rax, rax                                                       ; +0x397, 0x180002257\njz      loc_180002317                                                  ; +0x39a, 0x18000225a\nmov     r8d, 2000h                                                     ; +0x3a0, 0x180002260\nlea     rdx, [rbp+2220h+Buffer]                                        ; +0x3a6, 0x180002266\nmov     rcx, r14                                                       ; +0x3ad, 0x18000226d\ncall    cs:?unzReadCurrentFile@cocos2d@@YAHPEAX0I@Z; cocos2d::unzReadCurrentFile(void *,void *,uint) ; +0x3b0, 0x180002270\ntest    eax, eax                                                       ; +0x3b6, 0x180002276\njs      loc_180002317                                                  ; +0x3b8, 0x180002278\njle     short loc_18000229B                                            ; +0x3be, 0x18000227e\nmovsxd  rdx, eax; ElementSize                                          ; +0x3c0, 0x180002280\nmov     r9, rbx; Stream                                                ; +0x3c3, 0x180002283\nmov     r8d, 1; ElementCount                                           ; +0x3c6, 0x180002286\nlea     rcx, [rbp+2220h+Buffer]; Buffer                                ; +0x3cc, 0x18000228c\ncall    cs:__imp_fwrite                                                ; +0x3d3, 0x180002293\njmp     short loc_180002260                                            ; +0x3d9, 0x180002299\nmov     rcx, rbx; Stream                                               ; +0x3db, 0x18000229b\ncall    cs:fclose                                                      ; +0x3de, 0x18000229e\nmov     rcx, r14                                                       ; +0x3e4, 0x1800022a4\ncall    cs:?unzCloseCurrentFile@cocos2d@@YAHPEAX@Z; cocos2d::unzCloseCurrentFile(void *) ; +0x3e7, 0x1800022a7\nmov     eax, [rsp+2320h+var_22E0]                                      ; +0x3ed, 0x1800022ad\ninc     eax                                                            ; +0x3f1, 0x1800022b1\nmov     ebx, eax                                                       ; +0x3f3, 0x1800022b3\nmov     [rsp+2320h+var_22E0], eax                                      ; +0x3f5, 0x1800022b5\ncmp     eax, [rsp+2320h+var_22D8]                                      ; +0x3f9, 0x1800022b9\njnb     short loc_1800022CC                                            ; +0x3fd, 0x1800022bd\nmov     rcx, r14                                                       ; +0x3ff, 0x1800022bf\ncall    cs:?unzGoToNextFile@cocos2d@@YAHPEAX@Z; cocos2d::unzGoToNextFile(void *) ; +0x402, 0x1800022c2\ntest    eax, eax                                                       ; +0x408, 0x1800022c8\njnz     short loc_180002320                                            ; +0x40a, 0x1800022ca\nmov     rdx, [rsp+2320h+var_22B0]                                      ; +0x40c, 0x1800022cc\ncmp     rdx, 0Fh                                                       ; +0x411, 0x1800022d1\njbe     short loc_180002305                                            ; +0x415, 0x1800022d5\ninc     rdx                                                            ; +0x417, 0x1800022d7\nmov     rcx, [rsp+2320h+lpPathName]                                    ; +0x41a, 0x1800022da\nmov     rax, rcx                                                       ; +0x41f, 0x1800022df\ncmp     rdx, 1000h                                                     ; +0x422, 0x1800022e2\njb      short loc_180002300                                            ; +0x429, 0x1800022e9\nadd     rdx, 27h ; '''                                                 ; +0x42b, 0x1800022eb\nmov     rcx, [rcx-8]; Block                                            ; +0x42f, 0x1800022ef\nsub     rax, rcx                                                       ; +0x433, 0x1800022f3\nadd     rax, 0FFFFFFFFFFFFFFF8h                                        ; +0x436, 0x1800022f6\ncmp     rax, 1Fh                                                       ; +0x43a, 0x1800022fa\nja      short loc_180002362                                            ; +0x43e, 0x1800022fe\ncall    j_j_free                                                       ; +0x440, 0x180002300\ncmp     ebx, [rsp+2320h+var_22D8]                                      ; +0x445, 0x180002305\njnb     short loc_180002373                                            ; +0x449, 0x180002309\nmov     r12, [rsp+2320h+var_22D0]                                      ; +0x44b, 0x18000230b\nxor     edi, edi                                                       ; +0x450, 0x180002310\njmp     loc_180002093                                                  ; +0x452, 0x180002312\nmov     rcx, r14                                                       ; +0x457, 0x180002317\ncall    cs:?unzCloseCurrentFile@cocos2d@@YAHPEAX@Z; cocos2d::unzCloseCurrentFile(void *) ; +0x45a, 0x18000231a\nmov     rcx, r14                                                       ; +0x460, 0x180002320\ncall    cs:?unzClose@cocos2d@@YAHPEAX@Z; cocos2d::unzClose(void *)     ; +0x463, 0x180002323\nnop                                                                    ; +0x469, 0x180002329\nmov     rdx, [rsp+2320h+var_22B0]                                      ; +0x46a, 0x18000232a\ncmp     rdx, 0Fh                                                       ; +0x46f, 0x18000232f\njbe     loc_18000203B                                                  ; +0x473, 0x180002333\ninc     rdx                                                            ; +0x479, 0x180002339\nmov     rcx, [rsp+2320h+lpPathName]; Block                             ; +0x47c, 0x18000233c\nmov     rax, rcx                                                       ; +0x481, 0x180002341\ncmp     rdx, 1000h                                                     ; +0x484, 0x180002344\njb      short loc_180002369                                            ; +0x48b, 0x18000234b\nadd     rdx, 27h ; '''                                                 ; +0x48d, 0x18000234d\nmov     rcx, [rcx-8]                                                   ; +0x491, 0x180002351\nsub     rax, rcx                                                       ; +0x495, 0x180002355\nadd     rax, 0FFFFFFFFFFFFFFF8h                                        ; +0x498, 0x180002358\ncmp     rax, 1Fh                                                       ; +0x49c, 0x18000235c\njbe     short loc_180002369                                            ; +0x4a0, 0x180002360\ncall    cs:_invalid_parameter_noinfo_noreturn                          ; +0x4a2, 0x180002362\ndb 0CCh                                                                ; +0x4a8, 0x180002368\ncall    j_j_free                                                       ; +0x4a9, 0x180002369\njmp     loc_18000203B                                                  ; +0x4ae, 0x18000236e\nmov     bl, 1                                                          ; +0x4b3, 0x180002373\njmp     loc_18000203D                                                  ; +0x4b5, 0x180002375\ncall    j_j_free                                                       ; +0x4ba, 0x18000237a\nmovzx   eax, bl                                                        ; +0x4bf, 0x18000237f\nmov     rcx, [rbp+2220h+var_30]                                        ; +0x4c2, 0x180002382\nxor     rcx, rsp; StackCookie                                          ; +0x4c9, 0x180002389\ncall    __security_check_cookie                                        ; +0x4cc, 0x18000238c\nlea     r11, [rsp+2320h+var_20]                                        ; +0x4d1, 0x180002391\nmov     rbx, [r11+38h]                                                 ; +0x4d9, 0x180002399\nmov     rsi, [r11+40h]                                                 ; +0x4dd, 0x18000239d\nmov     rdi, [r11+48h]                                                 ; +0x4e1, 0x1800023a1\nmov     rsp, r11                                                       ; +0x4e5, 0x1800023a5\npop     r15                                                            ; +0x4e8, 0x1800023a8\npop     r14                                                            ; +0x4ea, 0x1800023aa\npop     r13                                                            ; +0x4ec, 0x1800023ac\npop     r12                                                            ; +0x4ee, 0x1800023ae\npop     rbp                                                            ; +0x4f0, 0x1800023b0\nretn                                                                   ; +0x4f1, 0x1800023b1\ncall    sub_180003D90                                                  ; +0x4f2, 0x1800023b2\nalign 8                                                                ; +0x4f7, 0x1800023b7\ncall    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) ; +0x4f8, 0x1800023b8\nalign 2                                                                ; +0x4fd, 0x1800023bd\ncall    sub_180003D90                                                  ; +0x4fe, 0x1800023be\nalign 4                                                                ; +0x503, 0x1800023c3\ncall    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) ; +0x504, 0x1800023c4\ndb 0CCh                                                                ; +0x509, 0x1800023c9", "xrefs": ["sub_180001B60 @ 0x180001be7", "<???> @ 0x18002fdf8", "<???> @ 0x180049114"], "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"}