; ; cocos2d::extension::AssetsManager::uncompress from 0x180001ec0 to 0x1800023ca (1290 bytes) ; ; 3 xrefs: ; > sub_180001B60 @ 0x180001be7 ; > @ 0x18002fdf8 ; > @ 0x180049114 ; ; This function is hookable on this platform! ; ; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA ; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings ; mov [rsp-8+arg_8], rbx ; +0x0, 0x180001ec0 mov [rsp-8+arg_10], rsi ; +0x5, 0x180001ec5 mov [rsp-8+arg_18], rdi ; +0xa, 0x180001eca push rbp ; +0xf, 0x180001ecf push r12 ; +0x10, 0x180001ed0 push r13 ; +0x12, 0x180001ed2 push r14 ; +0x14, 0x180001ed4 push r15 ; +0x16, 0x180001ed6 lea rbp, [rsp-2200h] ; +0x18, 0x180001ed8 mov eax, 2300h ; +0x20, 0x180001ee0 call __alloca_probe ; +0x25, 0x180001ee5 sub rsp, rax ; +0x2a, 0x180001eea mov rax, cs:__security_cookie ; +0x2d, 0x180001eed xor rax, rsp ; +0x34, 0x180001ef4 mov [rbp+2220h+var_30], rax ; +0x37, 0x180001ef7 lea r12, [rcx+8] ; +0x3e, 0x180001efe mov [rsp+2320h+var_22D0], r12 ; +0x42, 0x180001f02 mov rsi, [r12+10h] ; +0x47, 0x180001f07 mov rcx, 7FFFFFFFFFFFFFFFh ; +0x4c, 0x180001f0c mov rax, rcx ; +0x56, 0x180001f16 sub rax, rsi ; +0x59, 0x180001f19 cmp rax, 20h ; ' ' ; +0x5c, 0x180001f1c jb loc_1800023BE ; +0x60, 0x180001f20 mov r15, r12 ; +0x66, 0x180001f26 cmp qword ptr [r12+18h], 0Fh ; +0x69, 0x180001f29 jbe short loc_180001F35 ; +0x6f, 0x180001f2f mov r15, [r12] ; +0x71, 0x180001f31 xorps xmm0, xmm0 ; +0x75, 0x180001f35 movups xmmword ptr [rsp+2320h+Block], xmm0 ; +0x78, 0x180001f38 xorps xmm1, xmm1 ; +0x7d, 0x180001f3d movdqu [rbp+2220h+var_2298], xmm1 ; +0x80, 0x180001f40 lea r14, [rsi+20h] ; +0x85, 0x180001f45 mov ebx, 0Fh ; +0x89, 0x180001f49 lea rdi, [rsp+2320h+Block] ; +0x8e, 0x180001f4e mov rax, 8000000000000000h ; +0x93, 0x180001f53 lea edx, [rbx+7] ; +0x9d, 0x180001f5d cmp r14, rbx ; +0xa0, 0x180001f60 jbe short loc_180001FD0 ; +0xa3, 0x180001f63 mov rbx, r14 ; +0xa5, 0x180001f65 or rbx, 0Fh ; +0xa8, 0x180001f68 cmp rbx, rcx ; +0xac, 0x180001f6c jbe short loc_180001F97 ; +0xaf, 0x180001f6f mov rbx, rcx ; +0xb1, 0x180001f71 add rax, 27h ; ''' ; +0xb4, 0x180001f74 mov rcx, rax; Size ; +0xb8, 0x180001f78 call ??2@YAPEAX_K@Z; operator new(unsigned __int64) ; +0xbb, 0x180001f7b test rax, rax ; +0xc0, 0x180001f80 jz loc_18000207C ; +0xc3, 0x180001f83 lea rdi, [rax+27h] ; +0xc9, 0x180001f89 and rdi, 0FFFFFFFFFFFFFFE0h ; +0xcd, 0x180001f8d mov [rdi-8], rax ; +0xd1, 0x180001f91 jmp short loc_180001FCB ; +0xd5, 0x180001f95 cmp rbx, rdx ; +0xd7, 0x180001f97 cmovb rbx, rdx ; +0xda, 0x180001f9a lea rcx, [rbx+1]; Size ; +0xde, 0x180001f9e cmp rcx, 1000h ; +0xe2, 0x180001fa2 jb short loc_180001FBA ; +0xe9, 0x180001fa9 lea rax, [rcx+27h] ; +0xeb, 0x180001fab cmp rax, rcx ; +0xef, 0x180001faf jbe loc_1800023B8 ; +0xf2, 0x180001fb2 jmp short loc_180001F78 ; +0xf8, 0x180001fb8 test rcx, rcx ; +0xfa, 0x180001fba jz short loc_180001FC9 ; +0xfd, 0x180001fbd call ??2@YAPEAX_K@Z; operator new(unsigned __int64) ; +0xff, 0x180001fbf mov rdi, rax ; +0x104, 0x180001fc4 jmp short loc_180001FCB ; +0x107, 0x180001fc7 xor edi, edi ; +0x109, 0x180001fc9 mov [rsp+2320h+Block], rdi ; +0x10b, 0x180001fcb mov qword ptr [rbp+2220h+var_2298], r14 ; +0x110, 0x180001fd0 mov qword ptr [rbp+2220h+var_2298+8], rbx ; +0x114, 0x180001fd4 mov r8, rsi; Size ; +0x118, 0x180001fd8 mov rdx, r15; Src ; +0x11b, 0x180001fdb mov rcx, rdi; void * ; +0x11e, 0x180001fde call memcpy ; +0x121, 0x180001fe1 movups xmm0, cs:xmmword_1800233C8 ; +0x126, 0x180001fe6 movups xmmword ptr [rdi+rsi], xmm0 ; +0x12d, 0x180001fed movups xmm1, cs:xmmword_1800233D8 ; +0x131, 0x180001ff1 movups xmmword ptr [rdi+rsi+10h], xmm1 ; +0x138, 0x180001ff8 mov byte ptr [rdi+r14], 0 ; +0x13d, 0x180001ffd lea rcx, [rsp+2320h+Block] ; +0x142, 0x180002002 cmp qword ptr [rbp+2220h+var_2298+8], 0Fh ; +0x147, 0x180002007 cmova rcx, [rsp+2320h+Block] ; +0x14c, 0x18000200c call cs:?unzOpen@cocos2d@@YAPEAXPEBD@Z; cocos2d::unzOpen(char const *) ; +0x152, 0x180002012 mov r14, rax ; +0x158, 0x180002018 test rax, rax ; +0x15b, 0x18000201b jz short loc_18000203B ; +0x15e, 0x18000201e lea rdx, [rsp+2320h+var_22D8] ; +0x160, 0x180002020 mov rcx, rax ; +0x165, 0x180002025 call cs:?unzGetGlobalInfo@cocos2d@@YAHPEAXPEAUunz_global_info_s@1@@Z; cocos2d::unzGetGlobalInfo(void *,cocos2d::unz_global_info_s *) ; +0x168, 0x180002028 test eax, eax ; +0x16e, 0x18000202e jz short loc_180002083 ; +0x170, 0x180002030 mov rcx, r14 ; +0x172, 0x180002032 call cs:?unzClose@cocos2d@@YAHPEAX@Z; cocos2d::unzClose(void *) ; +0x175, 0x180002035 xor bl, bl ; +0x17b, 0x18000203b mov rdx, qword ptr [rbp+2220h+var_2298+8] ; +0x17d, 0x18000203d cmp rdx, 0Fh ; +0x181, 0x180002041 jbe loc_18000237F ; +0x185, 0x180002045 inc rdx ; +0x18b, 0x18000204b mov rcx, [rsp+2320h+Block]; Block ; +0x18e, 0x18000204e mov rax, rcx ; +0x193, 0x180002053 cmp rdx, 1000h ; +0x196, 0x180002056 jb loc_18000237A ; +0x19d, 0x18000205d add rdx, 27h ; ''' ; +0x1a3, 0x180002063 mov rcx, [rcx-8] ; +0x1a7, 0x180002067 sub rax, rcx ; +0x1ab, 0x18000206b add rax, 0FFFFFFFFFFFFFFF8h ; +0x1ae, 0x18000206e cmp rax, 1Fh ; +0x1b2, 0x180002072 jbe loc_18000237A ; +0x1b6, 0x180002076 call cs:_invalid_parameter_noinfo_noreturn ; +0x1bc, 0x18000207c db 90h ; +0x1c2, 0x180002082 xor edi, edi ; +0x1c3, 0x180002083 mov [rsp+2320h+var_22E0], edi ; +0x1c5, 0x180002085 cmp [rsp+2320h+var_22D8], edi ; +0x1c9, 0x180002089 jbe loc_180002373 ; +0x1cd, 0x18000208d mov dword ptr [rsp+2320h+var_22E8], edi ; +0x1d3, 0x180002093 mov [rsp+2320h+var_22F0], rdi ; +0x1d7, 0x180002097 mov dword ptr [rsp+2320h+var_22F8], edi ; +0x1dc, 0x18000209c mov [rsp+2320h+var_2300], rdi ; +0x1e0, 0x1800020a0 mov r9d, 200h ; +0x1e5, 0x1800020a5 lea r8, [rbp+2220h+Src] ; +0x1eb, 0x1800020ab lea rdx, [rbp+2220h+var_2280] ; +0x1ef, 0x1800020af mov rcx, r14 ; +0x1f3, 0x1800020b3 call 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 test eax, eax ; +0x1fc, 0x1800020bc jnz loc_180002032 ; +0x1fe, 0x1800020be mov r13, [r12+10h] ; +0x204, 0x1800020c4 lea rax, [rbp+2220h+Src] ; +0x209, 0x1800020c9 mov rbx, 0FFFFFFFFFFFFFFFFh ; +0x20d, 0x1800020cd inc rbx ; +0x214, 0x1800020d4 cmp byte ptr [rax+rbx], 0 ; +0x217, 0x1800020d7 jnz short loc_1800020D4 ; +0x21b, 0x1800020db mov rcx, 7FFFFFFFFFFFFFFFh ; +0x21d, 0x1800020dd mov rax, rcx ; +0x227, 0x1800020e7 sub rax, r13 ; +0x22a, 0x1800020ea cmp rax, rbx ; +0x22d, 0x1800020ed jb loc_1800023B2 ; +0x230, 0x1800020f0 mov rax, [rsp+2320h+var_22D0] ; +0x236, 0x1800020f6 cmp qword ptr [rax+18h], 0Fh ; +0x23b, 0x1800020fb jbe short loc_180002105 ; +0x240, 0x180002100 mov r12, [rax] ; +0x242, 0x180002102 xorps xmm0, xmm0 ; +0x245, 0x180002105 movups xmmword ptr [rsp+2320h+lpPathName], xmm0 ; +0x248, 0x180002108 mov [rsp+2320h+var_22B8], rdi ; +0x24d, 0x18000210d mov [rsp+2320h+var_22B0], rdi ; +0x252, 0x180002112 lea r15, [rbx+r13] ; +0x257, 0x180002117 mov edi, 0Fh ; +0x25b, 0x18000211b lea rsi, [rsp+2320h+lpPathName] ; +0x260, 0x180002120 cmp r15, rdi ; +0x265, 0x180002125 jbe short loc_1800021A5 ; +0x268, 0x180002128 mov rdi, r15 ; +0x26a, 0x18000212a or rdi, 0Fh ; +0x26d, 0x18000212d cmp rdi, rcx ; +0x271, 0x180002131 jbe short loc_180002149 ; +0x274, 0x180002134 mov rdi, rcx ; +0x276, 0x180002136 mov rax, 8000000000000000h ; +0x279, 0x180002139 add rax, 27h ; ''' ; +0x283, 0x180002143 jmp short loc_180002170 ; +0x287, 0x180002147 cmp rdi, 16h ; +0x289, 0x180002149 mov eax, 16h ; +0x28d, 0x18000214d cmovb rdi, rax ; +0x292, 0x180002152 lea rcx, [rdi+1]; Size ; +0x296, 0x180002156 cmp rcx, 1000h ; +0x29a, 0x18000215a jb short loc_18000218F ; +0x2a1, 0x180002161 lea rax, [rcx+27h] ; +0x2a3, 0x180002163 cmp rax, rcx ; +0x2a7, 0x180002167 jbe loc_1800023C4 ; +0x2aa, 0x18000216a mov rcx, rax; Size ; +0x2b0, 0x180002170 call ??2@YAPEAX_K@Z; operator new(unsigned __int64) ; +0x2b3, 0x180002173 test rax, rax ; +0x2b8, 0x180002178 jz loc_180002362 ; +0x2bb, 0x18000217b lea rsi, [rax+27h] ; +0x2c1, 0x180002181 and rsi, 0FFFFFFFFFFFFFFE0h ; +0x2c5, 0x180002185 mov [rsi-8], rax ; +0x2c9, 0x180002189 jmp short loc_1800021A0 ; +0x2cd, 0x18000218d test rcx, rcx ; +0x2cf, 0x18000218f jz short loc_18000219E ; +0x2d2, 0x180002192 call ??2@YAPEAX_K@Z; operator new(unsigned __int64) ; +0x2d4, 0x180002194 mov rsi, rax ; +0x2d9, 0x180002199 jmp short loc_1800021A0 ; +0x2dc, 0x18000219c xor esi, esi ; +0x2de, 0x18000219e mov [rsp+2320h+lpPathName], rsi ; +0x2e0, 0x1800021a0 mov [rsp+2320h+var_22B8], r15 ; +0x2e5, 0x1800021a5 mov [rsp+2320h+var_22B0], rdi ; +0x2ea, 0x1800021aa mov r8, r13; Size ; +0x2ef, 0x1800021af mov rdx, r12; Src ; +0x2f2, 0x1800021b2 mov rcx, rsi; void * ; +0x2f5, 0x1800021b5 call memcpy ; +0x2f8, 0x1800021b8 lea rcx, [rsi+r13]; void * ; +0x2fd, 0x1800021bd mov r8, rbx; Size ; +0x301, 0x1800021c1 lea rdx, [rbp+2220h+Src]; Src ; +0x304, 0x1800021c4 call memcpy ; +0x308, 0x1800021c8 mov byte ptr [rsi+r15], 0 ; +0x30d, 0x1800021cd lea rcx, [rbp+2220h+Src] ; +0x312, 0x1800021d2 mov rax, 0FFFFFFFFFFFFFFFFh ; +0x316, 0x1800021d6 nop dword ptr [rax] ; +0x31d, 0x1800021dd lea rax, [rax+1] ; +0x320, 0x1800021e0 cmp byte ptr [rcx+rax], 0 ; +0x324, 0x1800021e4 jnz short loc_1800021E0 ; +0x328, 0x1800021e8 cmp [rbp+rax+2220h+var_2231], 2Fh ; '/' ; +0x32a, 0x1800021ea jnz short loc_180002225 ; +0x32f, 0x1800021ef lea rcx, [rsp+2320h+lpPathName] ; +0x331, 0x1800021f1 cmp [rsp+2320h+var_22B0], 0Fh ; +0x336, 0x1800021f6 cmova rcx, [rsp+2320h+lpPathName]; lpPathName ; +0x33c, 0x1800021fc xor edx, edx; lpSecurityAttributes ; +0x342, 0x180002202 call cs:CreateDirectoryA ; +0x344, 0x180002204 test eax, eax ; +0x34a, 0x18000220a jnz loc_1800022A4 ; +0x34c, 0x18000220c call cs:GetLastError ; +0x352, 0x180002212 cmp eax, 0B7h ; +0x358, 0x180002218 jnz loc_180002320 ; +0x35d, 0x18000221d jmp short loc_1800022A4 ; +0x363, 0x180002223 mov rcx, r14 ; +0x365, 0x180002225 call cs:?unzOpenCurrentFile@cocos2d@@YAHPEAX@Z; cocos2d::unzOpenCurrentFile(void *) ; +0x368, 0x180002228 test eax, eax ; +0x36e, 0x18000222e jnz loc_180002320 ; +0x370, 0x180002230 lea rcx, [rsp+2320h+lpPathName] ; +0x376, 0x180002236 cmp [rsp+2320h+var_22B0], 0Fh ; +0x37b, 0x18000223b cmova rcx, [rsp+2320h+lpPathName]; FileName ; +0x381, 0x180002241 lea rdx, Mode; "wb" ; +0x387, 0x180002247 call cs:fopen ; +0x38e, 0x18000224e mov rbx, rax ; +0x394, 0x180002254 test rax, rax ; +0x397, 0x180002257 jz loc_180002317 ; +0x39a, 0x18000225a mov r8d, 2000h ; +0x3a0, 0x180002260 lea rdx, [rbp+2220h+Buffer] ; +0x3a6, 0x180002266 mov rcx, r14 ; +0x3ad, 0x18000226d call cs:?unzReadCurrentFile@cocos2d@@YAHPEAX0I@Z; cocos2d::unzReadCurrentFile(void *,void *,uint) ; +0x3b0, 0x180002270 test eax, eax ; +0x3b6, 0x180002276 js loc_180002317 ; +0x3b8, 0x180002278 jle short loc_18000229B ; +0x3be, 0x18000227e movsxd rdx, eax; ElementSize ; +0x3c0, 0x180002280 mov r9, rbx; Stream ; +0x3c3, 0x180002283 mov r8d, 1; ElementCount ; +0x3c6, 0x180002286 lea rcx, [rbp+2220h+Buffer]; Buffer ; +0x3cc, 0x18000228c call cs:__imp_fwrite ; +0x3d3, 0x180002293 jmp short loc_180002260 ; +0x3d9, 0x180002299 mov rcx, rbx; Stream ; +0x3db, 0x18000229b call cs:fclose ; +0x3de, 0x18000229e mov rcx, r14 ; +0x3e4, 0x1800022a4 call cs:?unzCloseCurrentFile@cocos2d@@YAHPEAX@Z; cocos2d::unzCloseCurrentFile(void *) ; +0x3e7, 0x1800022a7 mov eax, [rsp+2320h+var_22E0] ; +0x3ed, 0x1800022ad inc eax ; +0x3f1, 0x1800022b1 mov ebx, eax ; +0x3f3, 0x1800022b3 mov [rsp+2320h+var_22E0], eax ; +0x3f5, 0x1800022b5 cmp eax, [rsp+2320h+var_22D8] ; +0x3f9, 0x1800022b9 jnb short loc_1800022CC ; +0x3fd, 0x1800022bd mov rcx, r14 ; +0x3ff, 0x1800022bf call cs:?unzGoToNextFile@cocos2d@@YAHPEAX@Z; cocos2d::unzGoToNextFile(void *) ; +0x402, 0x1800022c2 test eax, eax ; +0x408, 0x1800022c8 jnz short loc_180002320 ; +0x40a, 0x1800022ca mov rdx, [rsp+2320h+var_22B0] ; +0x40c, 0x1800022cc cmp rdx, 0Fh ; +0x411, 0x1800022d1 jbe short loc_180002305 ; +0x415, 0x1800022d5 inc rdx ; +0x417, 0x1800022d7 mov rcx, [rsp+2320h+lpPathName] ; +0x41a, 0x1800022da mov rax, rcx ; +0x41f, 0x1800022df cmp rdx, 1000h ; +0x422, 0x1800022e2 jb short loc_180002300 ; +0x429, 0x1800022e9 add rdx, 27h ; ''' ; +0x42b, 0x1800022eb mov rcx, [rcx-8]; Block ; +0x42f, 0x1800022ef sub rax, rcx ; +0x433, 0x1800022f3 add rax, 0FFFFFFFFFFFFFFF8h ; +0x436, 0x1800022f6 cmp rax, 1Fh ; +0x43a, 0x1800022fa ja short loc_180002362 ; +0x43e, 0x1800022fe call j_j_free ; +0x440, 0x180002300 cmp ebx, [rsp+2320h+var_22D8] ; +0x445, 0x180002305 jnb short loc_180002373 ; +0x449, 0x180002309 mov r12, [rsp+2320h+var_22D0] ; +0x44b, 0x18000230b xor edi, edi ; +0x450, 0x180002310 jmp loc_180002093 ; +0x452, 0x180002312 mov rcx, r14 ; +0x457, 0x180002317 call cs:?unzCloseCurrentFile@cocos2d@@YAHPEAX@Z; cocos2d::unzCloseCurrentFile(void *) ; +0x45a, 0x18000231a mov rcx, r14 ; +0x460, 0x180002320 call cs:?unzClose@cocos2d@@YAHPEAX@Z; cocos2d::unzClose(void *) ; +0x463, 0x180002323 nop ; +0x469, 0x180002329 mov rdx, [rsp+2320h+var_22B0] ; +0x46a, 0x18000232a cmp rdx, 0Fh ; +0x46f, 0x18000232f jbe loc_18000203B ; +0x473, 0x180002333 inc rdx ; +0x479, 0x180002339 mov rcx, [rsp+2320h+lpPathName]; Block ; +0x47c, 0x18000233c mov rax, rcx ; +0x481, 0x180002341 cmp rdx, 1000h ; +0x484, 0x180002344 jb short loc_180002369 ; +0x48b, 0x18000234b add rdx, 27h ; ''' ; +0x48d, 0x18000234d mov rcx, [rcx-8] ; +0x491, 0x180002351 sub rax, rcx ; +0x495, 0x180002355 add rax, 0FFFFFFFFFFFFFFF8h ; +0x498, 0x180002358 cmp rax, 1Fh ; +0x49c, 0x18000235c jbe short loc_180002369 ; +0x4a0, 0x180002360 call cs:_invalid_parameter_noinfo_noreturn ; +0x4a2, 0x180002362 db 0CCh ; +0x4a8, 0x180002368 call j_j_free ; +0x4a9, 0x180002369 jmp loc_18000203B ; +0x4ae, 0x18000236e mov bl, 1 ; +0x4b3, 0x180002373 jmp loc_18000203D ; +0x4b5, 0x180002375 call j_j_free ; +0x4ba, 0x18000237a movzx eax, bl ; +0x4bf, 0x18000237f mov rcx, [rbp+2220h+var_30] ; +0x4c2, 0x180002382 xor rcx, rsp; StackCookie ; +0x4c9, 0x180002389 call __security_check_cookie ; +0x4cc, 0x18000238c lea r11, [rsp+2320h+var_20] ; +0x4d1, 0x180002391 mov rbx, [r11+38h] ; +0x4d9, 0x180002399 mov rsi, [r11+40h] ; +0x4dd, 0x18000239d mov rdi, [r11+48h] ; +0x4e1, 0x1800023a1 mov rsp, r11 ; +0x4e5, 0x1800023a5 pop r15 ; +0x4e8, 0x1800023a8 pop r14 ; +0x4ea, 0x1800023aa pop r13 ; +0x4ec, 0x1800023ac pop r12 ; +0x4ee, 0x1800023ae pop rbp ; +0x4f0, 0x1800023b0 retn ; +0x4f1, 0x1800023b1 call sub_180003D90 ; +0x4f2, 0x1800023b2 align 8 ; +0x4f7, 0x1800023b7 call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) ; +0x4f8, 0x1800023b8 align 2 ; +0x4fd, 0x1800023bd call sub_180003D90 ; +0x4fe, 0x1800023be align 4 ; +0x503, 0x1800023c3 call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) ; +0x504, 0x1800023c4 db 0CCh ; +0x509, 0x1800023c9