{"type": "func", "start": 6442464032, "end": 6442464535, "name": "sub_180003320", "pseudocode": "// \n// sub_180003320 from 0x180003320 to 0x180003517 (503 bytes)\n// \n// 4 xrefs:\n// > cocos2d::extension::AssetsManager::setSearchPath @ 0x18000243c\n// > <???> @ 0x18002d1f4\n// > <???> @ 0x18002d204\n// > <???> @ 0x1800491c8\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_180003320(__int64 *a1, _QWORD *a2, __int64 a3, __int64 a4)\n{\n  _OWORD *v4; // rsi\n  _OWORD *v8; // rax\n  char *v9; // rdi\n  _QWORD *v10; // r15\n  char *v11; // rsi\n  void **v12; // r14\n  _QWORD *v13; // rcx\n  unsigned __int64 v14; // rdx\n  _QWORD *v15; // rcx\n  __int128 v16; // xmm0\n  __m128i v17; // xmm1\n  void *v18; // rcx\n  void *Block[2]; // [rsp+28h] [rbp-40h] BYREF\n  __m128i si128; // [rsp+38h] [rbp-30h]\n\n  v4 = (_OWORD *)a1[1];\n  if ( v4 != (_OWORD *)a1[2] )\n  {\n    if ( (_OWORD *)a3 == v4 )\n    {\n      sub_180003F50(v4, a4);\n      a1[1] += 32;\nLABEL_26:\n      *a2 = a3;\n      return a2;\n    }\n    sub_180003F50(Block, a4);\n    v8 = v4 - 2;\n    *v4 = *(v4 - 2);\n    v4[1] = *(v4 - 1);\n    *((_QWORD *)v8 + 2) = 0;\n    *((_QWORD *)v8 + 3) = 15;\n    *(_BYTE *)v8 = 0;\n    a1[1] += 32;\n    if ( (_OWORD *)a3 != v4 - 2 )\n    {\n      v9 = (char *)v4 - 8;\n      do\n      {\n        v10 = v9;\n        v9 -= 32;\n        v11 = v9 - 24;\n        v12 = (void **)(v9 + 8);\n        if ( v9 + 8 != v9 - 24 )\n        {\n          if ( *v10 > 0xFu )\n          {\n            v13 = *v12;\n            if ( (unsigned __int64)(*v10 + 1LL) >= 0x1000 )\n            {\n              if ( (unsigned __int64)v13 - *(v13 - 1) - 8 > 0x1F )\n                goto LABEL_24;\n              v13 = (_QWORD *)*(v13 - 1);\n            }\n            j_j_free(v13);\n          }\n          *v10 = 15;\n          *(_OWORD *)v12 = *(_OWORD *)v11;\n          *(_OWORD *)(v9 + 24) = *((_OWORD *)v11 + 1);\n          *((_QWORD *)v9 - 1) = 0;\n          *(_QWORD *)v9 = 15;\n          *v11 = 0;\n        }\n      }\n      while ( (char *)a3 != v11 );\n    }\n    if ( (void **)a3 != Block )\n    {\n      v14 = *(_QWORD *)(a3 + 24);\n      if ( v14 > 0xF )\n      {\n        v15 = *(_QWORD **)a3;\n        if ( v14 + 1 >= 0x1000 )\n        {\n          if ( (unsigned __int64)v15 - *(v15 - 1) - 8 > 0x1F )\n            goto LABEL_24;\n          v15 = (_QWORD *)*(v15 - 1);\n        }\n        j_j_free(v15);\n      }\n      v16 = *(_OWORD *)Block;\n      LOBYTE(Block[0]) = 0;\n      v17 = si128;\n      *(_OWORD *)a3 = v16;\n      si128 = _mm_load_si128((const __m128i *)&xmmword_1800295E0);\n      *(__m128i *)(a3 + 16) = v17;\n    }\n    if ( si128.m128i_i64[1] <= 0xFuLL )\n      goto LABEL_26;\n    v18 = Block[0];\n    if ( (unsigned __int64)(si128.m128i_i64[1] + 1) < 0x1000\n      || (v18 = *((void **)Block[0] - 1), (unsigned __int64)((char *)Block[0] - (char *)v18 - 8) <= 0x1F) )\n    {\n      j_j_free(v18);\n      goto LABEL_26;\n    }\nLABEL_24:\n    invalid_parameter_noinfo_noreturn();\n  }\n  *a2 = sub_180003160(a1, a3, a4);\n  return a2;\n}", "assembly": "; \n; sub_180003320 from 0x180003320 to 0x180003517 (503 bytes)\n; \n; 4 xrefs:\n; > cocos2d::extension::AssetsManager::setSearchPath @ 0x18000243c\n; > <???> @ 0x18002d1f4\n; > <???> @ 0x18002d204\n; > <???> @ 0x1800491c8\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     rax, rsp                                                       ; +0x0, 0x180003320\nmov     [rax+20h], rbx                                                 ; +0x3, 0x180003323\npush    rbp                                                            ; +0x7, 0x180003327\npush    rsi                                                            ; +0x8, 0x180003328\npush    rdi                                                            ; +0x9, 0x180003329\nsub     rsp, 50h                                                       ; +0xa, 0x18000332a\nmov     rsi, [rcx+8]                                                   ; +0xe, 0x18000332e\nmov     rbx, r8                                                        ; +0x12, 0x180003332\nmov     rbp, rdx                                                       ; +0x15, 0x180003335\nmov     rdi, rcx                                                       ; +0x18, 0x180003338\ncmp     rsi, [rcx+10h]                                                 ; +0x1b, 0x18000333b\njz      loc_1800034F5                                                  ; +0x1f, 0x18000333f\nmov     [rax+8], r12                                                   ; +0x25, 0x180003345\nmov     rdx, r9                                                        ; +0x29, 0x180003349\nmov     [rax+10h], r14                                                 ; +0x2c, 0x18000334c\nmov     [rax+18h], r15                                                 ; +0x30, 0x180003350\ncmp     rbx, rsi                                                       ; +0x34, 0x180003354\njnz     short loc_18000336B                                            ; +0x37, 0x180003357\nmov     rcx, rsi                                                       ; +0x39, 0x180003359\ncall    sub_180003F50                                                  ; +0x3c, 0x18000335c\nadd     qword ptr [rdi+8], 20h ; ' '                                   ; +0x41, 0x180003361\njmp     loc_1800034CC                                                  ; +0x46, 0x180003366\nlea     rcx, [rsp+68h+Block]                                           ; +0x4b, 0x18000336b\nmov     [rsp+68h+var_48], rdi                                          ; +0x50, 0x180003370\ncall    sub_180003F50                                                  ; +0x55, 0x180003375\nmovups  xmm0, xmmword ptr [rsi-20h]                                    ; +0x5a, 0x18000337a\nlea     rax, [rsi-20h]                                                 ; +0x5e, 0x18000337e\nxor     r12d, r12d                                                     ; +0x62, 0x180003382\nmovups  xmmword ptr [rsi], xmm0                                        ; +0x65, 0x180003385\nmovups  xmm1, xmmword ptr [rax+10h]                                    ; +0x68, 0x180003388\nmovups  xmmword ptr [rsi+10h], xmm1                                    ; +0x6c, 0x18000338c\nmov     [rax+10h], r12                                                 ; +0x70, 0x180003390\nmov     qword ptr [rax+18h], 0Fh                                       ; +0x74, 0x180003394\nmov     [rax], r12b                                                    ; +0x7c, 0x18000339c\nadd     qword ptr [rdi+8], 20h ; ' '                                   ; +0x7f, 0x18000339f\ncmp     rbx, rax                                                       ; +0x84, 0x1800033a4\njz      loc_180003428                                                  ; +0x87, 0x1800033a7\nlea     rdi, [rsi-8]                                                   ; +0x8d, 0x1800033ad\nmov     r15, rdi                                                       ; +0x91, 0x1800033b1\nsub     rdi, 20h ; ' '                                                 ; +0x94, 0x1800033b4\nlea     rsi, [rdi-18h]                                                 ; +0x98, 0x1800033b8\nlea     r14, [rdi+8]                                                   ; +0x9c, 0x1800033bc\ncmp     r14, rsi                                                       ; +0xa0, 0x1800033c0\njz      short loc_180003423                                            ; +0xa3, 0x1800033c3\nmov     rdx, [r15]                                                     ; +0xa5, 0x1800033c5\ncmp     rdx, 0Fh                                                       ; +0xa8, 0x1800033c8\njbe     short loc_1800033FE                                            ; +0xac, 0x1800033cc\nmov     rcx, [r14]                                                     ; +0xae, 0x1800033ce\ninc     rdx                                                            ; +0xb1, 0x1800033d1\ncmp     rdx, 1000h                                                     ; +0xb4, 0x1800033d4\njb      short loc_1800033F9                                            ; +0xbb, 0x1800033db\nmov     r8, [rcx-8]                                                    ; +0xbd, 0x1800033dd\nadd     rdx, 27h ; '''                                                 ; +0xc1, 0x1800033e1\nsub     rcx, r8                                                        ; +0xc5, 0x1800033e5\nlea     rax, [rcx-8]                                                   ; +0xc8, 0x1800033e8\ncmp     rax, 1Fh                                                       ; +0xcc, 0x1800033ec\nja      loc_1800034C0                                                  ; +0xd0, 0x1800033f0\nmov     rcx, r8; Block                                                 ; +0xd6, 0x1800033f6\ncall    j_j_free                                                       ; +0xd9, 0x1800033f9\nmov     qword ptr [r15], 0Fh                                           ; +0xde, 0x1800033fe\nmovups  xmm0, xmmword ptr [rsi]                                        ; +0xe5, 0x180003405\nmovups  xmmword ptr [r14], xmm0                                        ; +0xe8, 0x180003408\nmovups  xmm1, xmmword ptr [rsi+10h]                                    ; +0xec, 0x18000340c\nmovups  xmmword ptr [r14+10h], xmm1                                    ; +0xf0, 0x180003410\nmov     [rdi-8], r12                                                   ; +0xf5, 0x180003415\nmov     qword ptr [rdi], 0Fh                                           ; +0xf9, 0x180003419\nmov     [rsi], r12b                                                    ; +0x100, 0x180003420\ncmp     rbx, rsi                                                       ; +0x103, 0x180003423\njnz     short loc_1800033B1                                            ; +0x106, 0x180003426\nlea     rax, [rsp+68h+Block]                                           ; +0x108, 0x180003428\ncmp     rbx, rax                                                       ; +0x10d, 0x18000342d\njz      short loc_18000348C                                            ; +0x110, 0x180003430\nmov     rdx, [rbx+18h]                                                 ; +0x112, 0x180003432\ncmp     rdx, 0Fh                                                       ; +0x116, 0x180003436\njbe     short loc_180003468                                            ; +0x11a, 0x18000343a\nmov     rcx, [rbx]                                                     ; +0x11c, 0x18000343c\ninc     rdx                                                            ; +0x11f, 0x18000343f\ncmp     rdx, 1000h                                                     ; +0x122, 0x180003442\njb      short loc_180003463                                            ; +0x129, 0x180003449\nmov     r8, [rcx-8]                                                    ; +0x12b, 0x18000344b\nadd     rdx, 27h ; '''                                                 ; +0x12f, 0x18000344f\nsub     rcx, r8                                                        ; +0x133, 0x180003453\nlea     rax, [rcx-8]                                                   ; +0x136, 0x180003456\ncmp     rax, 1Fh                                                       ; +0x13a, 0x18000345a\nja      short loc_1800034C0                                            ; +0x13e, 0x18000345e\nmov     rcx, r8; Block                                                 ; +0x140, 0x180003460\ncall    j_j_free                                                       ; +0x143, 0x180003463\nmovups  xmm0, xmmword ptr [rsp+68h+Block]                              ; +0x148, 0x180003468\nmov     byte ptr [rsp+68h+Block], r12b                                 ; +0x14d, 0x18000346d\nmovups  xmm1, [rsp+68h+var_30]                                         ; +0x152, 0x180003472\nmovups  xmmword ptr [rbx], xmm0                                        ; +0x157, 0x180003477\nmovdqa  xmm0, cs:xmmword_1800295E0                                     ; +0x15a, 0x18000347a\nmovdqu  [rsp+68h+var_30], xmm0                                         ; +0x162, 0x180003482\nmovups  xmmword ptr [rbx+10h], xmm1                                    ; +0x168, 0x180003488\nmov     rdx, qword ptr [rsp+68h+var_30+8]                              ; +0x16c, 0x18000348c\ncmp     rdx, 0Fh                                                       ; +0x171, 0x180003491\njbe     short loc_1800034CC                                            ; +0x175, 0x180003495\nmov     rcx, [rsp+68h+Block]; Block                                    ; +0x177, 0x180003497\ninc     rdx                                                            ; +0x17c, 0x18000349c\nmov     rax, rcx                                                       ; +0x17f, 0x18000349f\ncmp     rdx, 1000h                                                     ; +0x182, 0x1800034a2\njb      short loc_1800034C7                                            ; +0x189, 0x1800034a9\nmov     rcx, [rcx-8]                                                   ; +0x18b, 0x1800034ab\nadd     rdx, 27h ; '''                                                 ; +0x18f, 0x1800034af\nsub     rax, rcx                                                       ; +0x193, 0x1800034b3\nadd     rax, 0FFFFFFFFFFFFFFF8h                                        ; +0x196, 0x1800034b6\ncmp     rax, 1Fh                                                       ; +0x19a, 0x1800034ba\njbe     short loc_1800034C7                                            ; +0x19e, 0x1800034be\ncall    cs:_invalid_parameter_noinfo_noreturn                          ; +0x1a0, 0x1800034c0\ndb 0CCh                                                                ; +0x1a6, 0x1800034c6\ncall    j_j_free                                                       ; +0x1a7, 0x1800034c7\nmov     r14, [rsp+68h+arg_8]                                           ; +0x1ac, 0x1800034cc\nmov     rax, rbp                                                       ; +0x1b1, 0x1800034d1\nmov     r12, [rsp+68h+arg_0]                                           ; +0x1b4, 0x1800034d4\nmov     r15, [rsp+68h+arg_10]                                          ; +0x1b9, 0x1800034d9\nmov     [rbp+0], rbx                                                   ; +0x1c1, 0x1800034e1\nmov     rbx, [rsp+68h+arg_18]                                          ; +0x1c5, 0x1800034e5\nadd     rsp, 50h                                                       ; +0x1cd, 0x1800034ed\npop     rdi                                                            ; +0x1d1, 0x1800034f1\npop     rsi                                                            ; +0x1d2, 0x1800034f2\npop     rbp                                                            ; +0x1d3, 0x1800034f3\nretn                                                                   ; +0x1d4, 0x1800034f4\nmov     r8, r9                                                         ; +0x1d5, 0x1800034f5\nmov     rdx, rbx                                                       ; +0x1d8, 0x1800034f8\ncall    sub_180003160                                                  ; +0x1db, 0x1800034fb\nmov     rbx, [rsp+68h+arg_18]                                          ; +0x1e0, 0x180003500\nmov     [rbp+0], rax                                                   ; +0x1e8, 0x180003508\nmov     rax, rbp                                                       ; +0x1ec, 0x18000350c\nadd     rsp, 50h                                                       ; +0x1ef, 0x18000350f\npop     rdi                                                            ; +0x1f3, 0x180003513\npop     rsi                                                            ; +0x1f4, 0x180003514\npop     rbp                                                            ; +0x1f5, 0x180003515\nretn                                                                   ; +0x1f6, 0x180003516", "xrefs": ["cocos2d::extension::AssetsManager::setSearchPath @ 0x18000243c", "<???> @ 0x18002d1f4", "<???> @ 0x18002d204", "<???> @ 0x1800491c8"], "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"}