; ; sub_180002DE0 from 0x180002de0 to 0x1800030b4 (724 bytes) ; ; 2 xrefs: ; > sub_180002C10 @ 0x180002db5 ; > @ 0x1800491a4 ; ; 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-28h+arg_0], rbx ; +0x0, 0x180002de0 mov [rsp-28h+arg_10], rsi ; +0x5, 0x180002de5 push rbp ; +0xa, 0x180002dea push rdi ; +0xb, 0x180002deb push r13 ; +0xc, 0x180002dec push r14 ; +0xe, 0x180002dee push r15 ; +0x10, 0x180002df0 mov rbp, rsp ; +0x12, 0x180002df2 sub rsp, 70h ; +0x15, 0x180002df5 mov rax, cs:__security_cookie ; +0x19, 0x180002df9 xor rax, rsp ; +0x20, 0x180002e00 mov [rbp+var_8], rax ; +0x23, 0x180002e03 mov r14, [rdx+8] ; +0x27, 0x180002e07 lea rdx, [r14+28h] ; +0x2b, 0x180002e0b cmp qword ptr [rdx+18h], 0Fh ; +0x2f, 0x180002e0f jbe short loc_180002E19 ; +0x34, 0x180002e14 mov rdx, [rdx] ; +0x36, 0x180002e16 xorps xmm0, xmm0 ; +0x39, 0x180002e19 movups xmmword ptr [rbp+Block], xmm0 ; +0x3c, 0x180002e1c xorps xmm1, xmm1 ; +0x40, 0x180002e20 movdqu [rbp+var_38], xmm1 ; +0x43, 0x180002e23 mov r8, 0FFFFFFFFFFFFFFFFh ; +0x48, 0x180002e28 nop ; +0x4f, 0x180002e2f inc r8 ; +0x50, 0x180002e30 cmp byte ptr [rdx+r8], 0 ; +0x53, 0x180002e33 jnz short loc_180002E30 ; +0x58, 0x180002e38 lea rcx, [rbp+Block] ; +0x5a, 0x180002e3a call sub_180003AB0 ; +0x5e, 0x180002e3e nop ; +0x63, 0x180002e43 call cs:?sharedUserDefault@CCUserDefault@cocos2d@@SAPEAV12@XZ; cocos2d::CCUserDefault::sharedUserDefault(void) ; +0x64, 0x180002e44 mov rcx, rax ; +0x6a, 0x180002e4a lea r8, [rbp+Block] ; +0x6d, 0x180002e4d lea rdx, aCurrentVersion; "current-version-code" ; +0x71, 0x180002e51 call cs:?setStringForKey@CCUserDefault@cocos2d@@QEAAXPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z; cocos2d::CCUserDefault::setStringForKey(char const *,std::string const &) ; +0x78, 0x180002e58 nop ; +0x7e, 0x180002e5e mov rdx, qword ptr [rbp+var_38+8] ; +0x7f, 0x180002e5f cmp rdx, 0Fh ; +0x83, 0x180002e63 jbe short loc_180002E9D ; +0x87, 0x180002e67 inc rdx ; +0x89, 0x180002e69 mov rcx, [rbp+Block]; Block ; +0x8c, 0x180002e6c mov rax, rcx ; +0x90, 0x180002e70 cmp rdx, 1000h ; +0x93, 0x180002e73 jb short loc_180002E98 ; +0x9a, 0x180002e7a add rdx, 27h ; ''' ; +0x9c, 0x180002e7c mov rcx, [rcx-8] ; +0xa0, 0x180002e80 sub rax, rcx ; +0xa4, 0x180002e84 add rax, 0FFFFFFFFFFFFFFF8h ; +0xa7, 0x180002e87 cmp rax, 1Fh ; +0xab, 0x180002e8b jbe short loc_180002E98 ; +0xaf, 0x180002e8f call cs:_invalid_parameter_noinfo_noreturn ; +0xb1, 0x180002e91 align 8 ; +0xb7, 0x180002e97 call j_j_free ; +0xb8, 0x180002e98 xorps xmm0, xmm0 ; +0xbd, 0x180002e9d movups xmmword ptr [rbp+Block], xmm0 ; +0xc0, 0x180002ea0 mov qword ptr [rbp+var_38], 0 ; +0xc4, 0x180002ea4 mov ebx, 0Fh ; +0xcc, 0x180002eac mov qword ptr [rbp+var_38+8], rbx ; +0xd1, 0x180002eb1 mov byte ptr [rbp+Block], 0 ; +0xd5, 0x180002eb5 call cs:?sharedUserDefault@CCUserDefault@cocos2d@@SAPEAV12@XZ; cocos2d::CCUserDefault::sharedUserDefault(void) ; +0xd9, 0x180002eb9 mov rcx, rax ; +0xdf, 0x180002ebf lea r8, [rbp+Block] ; +0xe2, 0x180002ec2 lea rdx, aDownloadedVers; "downloaded-version-code" ; +0xe6, 0x180002ec6 call cs:?setStringForKey@CCUserDefault@cocos2d@@QEAAXPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z; cocos2d::CCUserDefault::setStringForKey(char const *,std::string const &) ; +0xed, 0x180002ecd nop ; +0xf3, 0x180002ed3 mov rdx, qword ptr [rbp+var_38+8] ; +0xf4, 0x180002ed4 cmp rdx, rbx ; +0xf8, 0x180002ed8 jbe short loc_180002F11 ; +0xfb, 0x180002edb inc rdx ; +0xfd, 0x180002edd mov rcx, [rbp+Block]; Block ; +0x100, 0x180002ee0 mov rax, rcx ; +0x104, 0x180002ee4 cmp rdx, 1000h ; +0x107, 0x180002ee7 jb short loc_180002F0C ; +0x10e, 0x180002eee add rdx, 27h ; ''' ; +0x110, 0x180002ef0 mov rcx, [rcx-8] ; +0x114, 0x180002ef4 sub rax, rcx ; +0x118, 0x180002ef8 add rax, 0FFFFFFFFFFFFFFF8h ; +0x11b, 0x180002efb cmp rax, 1Fh ; +0x11f, 0x180002eff jbe short loc_180002F0C ; +0x123, 0x180002f03 call cs:_invalid_parameter_noinfo_noreturn ; +0x125, 0x180002f05 align 4 ; +0x12b, 0x180002f0b call j_j_free ; +0x12c, 0x180002f0c call cs:?sharedUserDefault@CCUserDefault@cocos2d@@SAPEAV12@XZ; cocos2d::CCUserDefault::sharedUserDefault(void) ; +0x131, 0x180002f11 mov rcx, rax ; +0x137, 0x180002f17 call cs:?flush@CCUserDefault@cocos2d@@QEAAXXZ; cocos2d::CCUserDefault::flush(void) ; +0x13a, 0x180002f1a mov rcx, r14; this ; +0x140, 0x180002f20 call ?setSearchPath@AssetsManager@extension@cocos2d@@IEAAXXZ; cocos2d::extension::AssetsManager::setSearchPath(void) ; +0x143, 0x180002f23 lea rsi, [r14+8] ; +0x148, 0x180002f28 mov r13, [rsi+10h] ; +0x14c, 0x180002f2c mov rcx, 7FFFFFFFFFFFFFFFh ; +0x150, 0x180002f30 mov rax, rcx ; +0x15a, 0x180002f3a sub rax, r13 ; +0x15d, 0x180002f3d cmp rax, 20h ; ' ' ; +0x160, 0x180002f40 jb loc_1800030A8 ; +0x164, 0x180002f44 cmp qword ptr [rsi+18h], 0Fh ; +0x16a, 0x180002f4a jbe short loc_180002F54 ; +0x16f, 0x180002f4f mov rsi, [rsi] ; +0x171, 0x180002f51 xorps xmm0, xmm0 ; +0x174, 0x180002f54 movups xmmword ptr [rbp+FileName], xmm0 ; +0x177, 0x180002f57 xorps xmm1, xmm1 ; +0x17b, 0x180002f5b movdqu [rbp+var_18], xmm1 ; +0x17e, 0x180002f5e lea r15, [r13+20h] ; +0x183, 0x180002f63 lea rdi, [rbp+FileName] ; +0x187, 0x180002f67 cmp r15, 0Fh ; +0x18b, 0x180002f6b jbe short loc_180002FEA ; +0x18f, 0x180002f6f mov rbx, r15 ; +0x191, 0x180002f71 or rbx, 0Fh ; +0x194, 0x180002f74 cmp rbx, rcx ; +0x198, 0x180002f78 jbe short loc_180002FAD ; +0x19b, 0x180002f7b mov rbx, rcx ; +0x19d, 0x180002f7d mov rax, 8000000000000000h ; +0x1a0, 0x180002f80 add rax, 27h ; ''' ; +0x1aa, 0x180002f8a mov rcx, rax; Size ; +0x1ae, 0x180002f8e call ??2@YAPEAX_K@Z; operator new(unsigned __int64) ; +0x1b1, 0x180002f91 test rax, rax ; +0x1b6, 0x180002f96 jz loc_180003077 ; +0x1b9, 0x180002f99 lea rdi, [rax+27h] ; +0x1bf, 0x180002f9f and rdi, 0FFFFFFFFFFFFFFE0h ; +0x1c3, 0x180002fa3 mov [rdi-8], rax ; +0x1c7, 0x180002fa7 jmp short loc_180002FE6 ; +0x1cb, 0x180002fab mov eax, 16h ; +0x1cd, 0x180002fad cmp rbx, rax ; +0x1d2, 0x180002fb2 cmovb rbx, rax ; +0x1d5, 0x180002fb5 lea rcx, [rbx+1]; Size ; +0x1d9, 0x180002fb9 cmp rcx, 1000h ; +0x1dd, 0x180002fbd jb short loc_180002FD5 ; +0x1e4, 0x180002fc4 lea rax, [rcx+27h] ; +0x1e6, 0x180002fc6 cmp rax, rcx ; +0x1ea, 0x180002fca jbe loc_1800030AE ; +0x1ed, 0x180002fcd jmp short loc_180002F8E ; +0x1f3, 0x180002fd3 test rcx, rcx ; +0x1f5, 0x180002fd5 jz short loc_180002FE4 ; +0x1f8, 0x180002fd8 call ??2@YAPEAX_K@Z; operator new(unsigned __int64) ; +0x1fa, 0x180002fda mov rdi, rax ; +0x1ff, 0x180002fdf jmp short loc_180002FE6 ; +0x202, 0x180002fe2 xor edi, edi ; +0x204, 0x180002fe4 mov [rbp+FileName], rdi ; +0x206, 0x180002fe6 mov qword ptr [rbp+var_18], r15 ; +0x20a, 0x180002fea mov qword ptr [rbp+var_18+8], rbx ; +0x20e, 0x180002fee mov r8, r13; Size ; +0x212, 0x180002ff2 mov rdx, rsi; Src ; +0x215, 0x180002ff5 mov rcx, rdi; void * ; +0x218, 0x180002ff8 call memcpy ; +0x21b, 0x180002ffb movups xmm0, cs:xmmword_1800233C8 ; +0x220, 0x180003000 movups xmmword ptr [rdi+r13], xmm0 ; +0x227, 0x180003007 movups xmm1, cs:xmmword_1800233D8 ; +0x22c, 0x18000300c movups xmmword ptr [rdi+r13+10h], xmm1 ; +0x233, 0x180003013 mov byte ptr [rdi+r15], 0 ; +0x239, 0x180003019 lea rcx, [rbp+FileName] ; +0x23e, 0x18000301e cmp qword ptr [rbp+var_18+8], 0Fh ; +0x242, 0x180003022 cmova rcx, [rbp+FileName]; FileName ; +0x247, 0x180003027 call cs:remove ; +0x24c, 0x18000302c test r14, r14 ; +0x252, 0x180003032 jz short loc_180003045 ; +0x255, 0x180003035 mov rcx, [r14+0C8h] ; +0x257, 0x180003037 mov rax, [rcx] ; +0x25e, 0x18000303e call qword ptr [rax+10h] ; +0x261, 0x180003041 nop ; +0x264, 0x180003044 mov rdx, qword ptr [rbp+var_18+8] ; +0x265, 0x180003045 cmp rdx, 0Fh ; +0x269, 0x180003049 jbe short loc_180003083 ; +0x26d, 0x18000304d inc rdx ; +0x26f, 0x18000304f mov rcx, [rbp+FileName]; Block ; +0x272, 0x180003052 mov rax, rcx ; +0x276, 0x180003056 cmp rdx, 1000h ; +0x279, 0x180003059 jb short loc_18000307E ; +0x280, 0x180003060 add rdx, 27h ; ''' ; +0x282, 0x180003062 mov rcx, [rcx-8] ; +0x286, 0x180003066 sub rax, rcx ; +0x28a, 0x18000306a add rax, 0FFFFFFFFFFFFFFF8h ; +0x28d, 0x18000306d cmp rax, 1Fh ; +0x291, 0x180003071 jbe short loc_18000307E ; +0x295, 0x180003075 call cs:_invalid_parameter_noinfo_noreturn ; +0x297, 0x180003077 align 2 ; +0x29d, 0x18000307d call j_j_free ; +0x29e, 0x18000307e mov rcx, [rbp+var_8] ; +0x2a3, 0x180003083 xor rcx, rsp; StackCookie ; +0x2a7, 0x180003087 call __security_check_cookie ; +0x2aa, 0x18000308a lea r11, [rsp+70h+var_s0] ; +0x2af, 0x18000308f mov rbx, [r11+30h] ; +0x2b4, 0x180003094 mov rsi, [r11+40h] ; +0x2b8, 0x180003098 mov rsp, r11 ; +0x2bc, 0x18000309c pop r15 ; +0x2bf, 0x18000309f pop r14 ; +0x2c1, 0x1800030a1 pop r13 ; +0x2c3, 0x1800030a3 pop rdi ; +0x2c5, 0x1800030a5 pop rbp ; +0x2c6, 0x1800030a6 retn ; +0x2c7, 0x1800030a7 call sub_180003D90 ; +0x2c8, 0x1800030a8 align 2 ; +0x2cd, 0x1800030ad call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) ; +0x2ce, 0x1800030ae db 0CCh ; +0x2d3, 0x1800030b3