; ; sub_180002C10 from 0x180002c10 to 0x180002ddf (463 bytes) ; ; 2 xrefs: ; > @ 0x180023428 ; > @ 0x180049198 ; ; 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+arg_8], rbx ; +0x0, 0x180002c10 push rdi ; +0x5, 0x180002c15 sub rsp, 50h ; +0x6, 0x180002c16 mov rax, cs:__security_cookie ; +0xa, 0x180002c1a xor rax, rsp ; +0x11, 0x180002c21 mov [rsp+58h+var_18], rax ; +0x14, 0x180002c24 mov rbx, rcx ; +0x19, 0x180002c29 lea rdi, [rcx+40h] ; +0x1c, 0x180002c2c mov rcx, rdi ; +0x20, 0x180002c30 call cs:pthread_mutex_lock ; +0x23, 0x180002c33 mov r8, [rbx+38h] ; +0x29, 0x180002c39 mov r9, [r8+8] ; +0x2d, 0x180002c3d test r9, r9 ; +0x31, 0x180002c41 jnz short loc_180002C54 ; +0x34, 0x180002c44 mov rcx, rdi ; +0x36, 0x180002c46 call cs:pthread_mutex_unlock ; +0x39, 0x180002c49 jmp loc_180002DC7 ; +0x3f, 0x180002c4f mov rax, [r8] ; +0x44, 0x180002c54 mov rcx, [rax]; Block ; +0x47, 0x180002c57 mov rbx, [rcx+10h] ; +0x4a, 0x180002c5a mov rdx, [rcx] ; +0x4e, 0x180002c5e lea rax, [r9-1] ; +0x51, 0x180002c61 mov [r8+8], rax ; +0x55, 0x180002c65 mov rax, [rcx+8] ; +0x59, 0x180002c69 mov [rax], rdx ; +0x5d, 0x180002c6d mov rax, [rcx+8] ; +0x60, 0x180002c70 mov [rdx+8], rax ; +0x64, 0x180002c74 mov edx, 18h ; +0x68, 0x180002c78 call j_j_free ; +0x6d, 0x180002c7d mov rcx, rdi ; +0x72, 0x180002c82 call cs:pthread_mutex_unlock ; +0x75, 0x180002c85 mov ecx, [rbx] ; +0x7b, 0x180002c8b test ecx, ecx ; +0x7d, 0x180002c8d jz loc_180002DB2 ; +0x7f, 0x180002c8f sub ecx, 1 ; +0x85, 0x180002c95 jz short loc_180002D05 ; +0x88, 0x180002c98 sub ecx, 1 ; +0x8a, 0x180002c9a jz short loc_180002CD6 ; +0x8d, 0x180002c9d cmp ecx, 1 ; +0x8f, 0x180002c9f jnz loc_180002DBA ; +0x92, 0x180002ca2 mov rdx, [rbx+8] ; +0x98, 0x180002ca8 mov rax, [rdx+8] ; +0x9c, 0x180002cac mov rcx, [rax+0C8h] ; +0xa0, 0x180002cb0 test rcx, rcx ; +0xa7, 0x180002cb7 jz short loc_180002CF2 ; +0xaa, 0x180002cba mov rax, [rcx] ; +0xac, 0x180002cbc mov edx, [rdx] ; +0xaf, 0x180002cbf call qword ptr [rax] ; +0xb1, 0x180002cc1 mov edx, 10h ; +0xb3, 0x180002cc3 mov rcx, [rbx+8]; Block ; +0xb8, 0x180002cc8 call j_j_free ; +0xbc, 0x180002ccc jmp loc_180002DBA ; +0xc1, 0x180002cd1 mov rdx, [rbx+8] ; +0xc6, 0x180002cd6 mov rax, [rdx+8] ; +0xca, 0x180002cda mov rcx, [rax+0C8h] ; +0xce, 0x180002cde test rcx, rcx ; +0xd5, 0x180002ce5 jz short loc_180002CF2 ; +0xd8, 0x180002ce8 mov rax, [rcx] ; +0xda, 0x180002cea mov edx, [rdx] ; +0xdd, 0x180002ced call qword ptr [rax+8] ; +0xdf, 0x180002cef mov edx, 10h ; +0xe2, 0x180002cf2 mov rcx, [rbx+8]; Block ; +0xe7, 0x180002cf7 call j_j_free ; +0xeb, 0x180002cfb jmp loc_180002DBA ; +0xf0, 0x180002d00 mov rdx, [rbx+8] ; +0xf5, 0x180002d05 add rdx, 28h ; '(' ; +0xf9, 0x180002d09 cmp qword ptr [rdx+18h], 0Fh ; +0xfd, 0x180002d0d jbe short loc_180002D17 ; +0x102, 0x180002d12 mov rdx, [rdx] ; +0x104, 0x180002d14 xorps xmm0, xmm0 ; +0x107, 0x180002d17 movups xmmword ptr [rsp+58h+Block], xmm0 ; +0x10a, 0x180002d1a xorps xmm1, xmm1 ; +0x10f, 0x180002d1f movdqu [rsp+58h+var_28], xmm1 ; +0x112, 0x180002d22 mov r8, 0FFFFFFFFFFFFFFFFh ; +0x118, 0x180002d28 nop ; +0x11f, 0x180002d2f inc r8 ; +0x120, 0x180002d30 cmp byte ptr [rdx+r8], 0 ; +0x123, 0x180002d33 jnz short loc_180002D30 ; +0x128, 0x180002d38 lea rcx, [rsp+58h+Block] ; +0x12a, 0x180002d3a call sub_180003AB0 ; +0x12f, 0x180002d3f nop ; +0x134, 0x180002d44 call cs:?sharedUserDefault@CCUserDefault@cocos2d@@SAPEAV12@XZ; cocos2d::CCUserDefault::sharedUserDefault(void) ; +0x135, 0x180002d45 mov rcx, rax ; +0x13b, 0x180002d4b lea r8, [rsp+58h+Block] ; +0x13e, 0x180002d4e lea rdx, aDownloadedVers; "downloaded-version-code" ; +0x143, 0x180002d53 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 &) ; +0x14a, 0x180002d5a nop ; +0x150, 0x180002d60 mov rdx, qword ptr [rsp+58h+var_28+8] ; +0x151, 0x180002d61 cmp rdx, 0Fh ; +0x156, 0x180002d66 jbe short loc_180002DA1 ; +0x15a, 0x180002d6a inc rdx ; +0x15c, 0x180002d6c mov rcx, [rsp+58h+Block]; Block ; +0x15f, 0x180002d6f mov rax, rcx ; +0x164, 0x180002d74 cmp rdx, 1000h ; +0x167, 0x180002d77 jb short loc_180002D9C ; +0x16e, 0x180002d7e add rdx, 27h ; ''' ; +0x170, 0x180002d80 mov rcx, [rcx-8] ; +0x174, 0x180002d84 sub rax, rcx ; +0x178, 0x180002d88 add rax, 0FFFFFFFFFFFFFFF8h ; +0x17b, 0x180002d8b cmp rax, 1Fh ; +0x17f, 0x180002d8f jbe short loc_180002D9C ; +0x183, 0x180002d93 call cs:_invalid_parameter_noinfo_noreturn ; +0x185, 0x180002d95 align 4 ; +0x18b, 0x180002d9b call j_j_free ; +0x18c, 0x180002d9c call cs:?sharedUserDefault@CCUserDefault@cocos2d@@SAPEAV12@XZ; cocos2d::CCUserDefault::sharedUserDefault(void) ; +0x191, 0x180002da1 mov rcx, rax ; +0x197, 0x180002da7 call cs:?flush@CCUserDefault@cocos2d@@QEAAXXZ; cocos2d::CCUserDefault::flush(void) ; +0x19a, 0x180002daa jmp short loc_180002DBA ; +0x1a0, 0x180002db0 mov rdx, rbx ; +0x1a2, 0x180002db2 call sub_180002DE0 ; +0x1a5, 0x180002db5 mov edx, 10h ; +0x1aa, 0x180002dba mov rcx, rbx; Block ; +0x1af, 0x180002dbf call j_j_free ; +0x1b2, 0x180002dc2 mov rcx, [rsp+58h+var_18] ; +0x1b7, 0x180002dc7 xor rcx, rsp; StackCookie ; +0x1bc, 0x180002dcc call __security_check_cookie ; +0x1bf, 0x180002dcf mov rbx, [rsp+58h+arg_8] ; +0x1c4, 0x180002dd4 add rsp, 50h ; +0x1c9, 0x180002dd9 pop rdi ; +0x1cd, 0x180002ddd retn ; +0x1ce, 0x180002dde