; ; sub_180016A10 from 0x180016a10 to 0x180016bc9 (441 bytes) ; ; 5 xrefs: ; > cocos2d::extension::CCTableView::_updateCellPositions @ 0x180015f60 ; > @ 0x18002f02c ; > @ 0x18002f048 ; > @ 0x18002f058 ; > @ 0x18004a95c ; ; 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 ; push rbx ; +0x0, 0x180016a10 push rbp ; +0x2, 0x180016a12 push rsi ; +0x3, 0x180016a13 sub rsp, 20h ; +0x4, 0x180016a14 mov rbx, r8 ; +0x8, 0x180016a18 mov rbp, rdx ; +0xb, 0x180016a1b mov r8, 3FFFFFFFFFFFFFFFh ; +0xe, 0x180016a1e mov rsi, rcx ; +0x18, 0x180016a28 cmp rdx, r8 ; +0x1b, 0x180016a2b ja loc_180016BBD ; +0x1e, 0x180016a2e mov [rsp+38h+arg_0], rdi ; +0x24, 0x180016a34 mov rax, r8 ; +0x29, 0x180016a39 mov [rsp+38h+arg_8], r14 ; +0x2c, 0x180016a3c mov [rsp+38h+arg_10], r15 ; +0x31, 0x180016a41 mov r15, [rcx+8] ; +0x36, 0x180016a46 sub r15, [rcx] ; +0x3a, 0x180016a4a mov rcx, [rcx+10h] ; +0x3d, 0x180016a4d sub rcx, [rsi] ; +0x41, 0x180016a51 sar rcx, 2 ; +0x44, 0x180016a54 mov rdx, rcx ; +0x48, 0x180016a58 sar r15, 2 ; +0x4b, 0x180016a5b shr rdx, 1 ; +0x4f, 0x180016a5f sub rax, rdx ; +0x52, 0x180016a62 cmp rcx, rax ; +0x55, 0x180016a65 ja loc_180016BC3 ; +0x58, 0x180016a68 lea rax, [rdx+rcx] ; +0x5e, 0x180016a6e cmp rax, rbp ; +0x62, 0x180016a72 jnb short loc_180016A7C ; +0x65, 0x180016a75 mov rax, rbp ; +0x67, 0x180016a77 jmp short loc_180016A85 ; +0x6a, 0x180016a7a cmp rax, r8 ; +0x6c, 0x180016a7c ja loc_180016BC3 ; +0x6f, 0x180016a7f lea r14, ds:0[rax*4] ; +0x75, 0x180016a85 cmp r14, 1000h ; +0x7d, 0x180016a8d jb short loc_180016ABF ; +0x84, 0x180016a94 lea rcx, [r14+27h]; Size ; +0x86, 0x180016a96 cmp rcx, r14 ; +0x8a, 0x180016a9a jbe loc_180016BC3 ; +0x8d, 0x180016a9d call ??2@YAPEAX_K@Z; operator new(unsigned __int64) ; +0x93, 0x180016aa3 test rax, rax ; +0x98, 0x180016aa8 jz loc_180016BB6 ; +0x9b, 0x180016aab lea rdi, [rax+27h] ; +0xa1, 0x180016ab1 and rdi, 0FFFFFFFFFFFFFFE0h ; +0xa5, 0x180016ab5 mov [rdi-8], rax ; +0xa9, 0x180016ab9 jmp short loc_180016AD3 ; +0xad, 0x180016abd test r14, r14 ; +0xaf, 0x180016abf jz short loc_180016AD1 ; +0xb2, 0x180016ac2 mov rcx, r14; Size ; +0xb4, 0x180016ac4 call ??2@YAPEAX_K@Z; operator new(unsigned __int64) ; +0xb7, 0x180016ac7 mov rdi, rax ; +0xbc, 0x180016acc jmp short loc_180016AD3 ; +0xbf, 0x180016acf xor edi, edi ; +0xc1, 0x180016ad1 xorps xmm0, xmm0 ; +0xc3, 0x180016ad3 lea rcx, [rdi+r15*4]; void * ; +0xc6, 0x180016ad6 movd eax, xmm0 ; +0xca, 0x180016ada mov rdx, rbp ; +0xce, 0x180016ade sub rdx, r15 ; +0xd1, 0x180016ae1 cmp [rbx], eax ; +0xd4, 0x180016ae4 jnz short loc_180016AF9 ; +0xd6, 0x180016ae6 lea r8, ds:0[rdx*4]; Size ; +0xd8, 0x180016ae8 xor edx, edx; Val ; +0xe0, 0x180016af0 call memset ; +0xe2, 0x180016af2 jmp short loc_180016B41 ; +0xe7, 0x180016af7 cmp rdx, 4 ; +0xe9, 0x180016af9 jb short loc_180016B2E ; +0xed, 0x180016afd lea r8, [rdx-4] ; +0xef, 0x180016aff shr r8, 2 ; +0xf3, 0x180016b03 inc r8 ; +0xf7, 0x180016b07 imul rax, r8, -4 ; +0xfa, 0x180016b0a add rdx, rax ; +0xfe, 0x180016b0e mov eax, [rbx] ; +0x101, 0x180016b11 mov [rcx], eax ; +0x103, 0x180016b13 mov eax, [rbx] ; +0x105, 0x180016b15 mov [rcx+4], eax ; +0x107, 0x180016b17 mov eax, [rbx] ; +0x10a, 0x180016b1a mov [rcx+8], eax ; +0x10c, 0x180016b1c mov eax, [rbx] ; +0x10f, 0x180016b1f mov [rcx+0Ch], eax ; +0x111, 0x180016b21 add rcx, 10h ; +0x114, 0x180016b24 sub r8, 1 ; +0x118, 0x180016b28 jnz short loc_180016B11 ; +0x11c, 0x180016b2c test rdx, rdx ; +0x11e, 0x180016b2e jz short loc_180016B41 ; +0x121, 0x180016b31 mov eax, [rbx] ; +0x123, 0x180016b33 mov [rcx], eax ; +0x125, 0x180016b35 lea rcx, [rcx+4] ; +0x127, 0x180016b37 sub rdx, 1 ; +0x12b, 0x180016b3b jnz short loc_180016B33 ; +0x12f, 0x180016b3f mov rdx, [rsi]; Src ; +0x131, 0x180016b41 mov rcx, rdi; void * ; +0x134, 0x180016b44 mov r8, [rsi+8] ; +0x137, 0x180016b47 sub r8, rdx; Size ; +0x13b, 0x180016b4b call memmove ; +0x13e, 0x180016b4e mov rcx, [rsi] ; +0x143, 0x180016b53 test rcx, rcx ; +0x146, 0x180016b56 jz short loc_180016B8C ; +0x149, 0x180016b59 mov rdx, [rsi+10h] ; +0x14b, 0x180016b5b sub rdx, rcx ; +0x14f, 0x180016b5f and rdx, 0FFFFFFFFFFFFFFFCh ; +0x152, 0x180016b62 cmp rdx, 1000h ; +0x156, 0x180016b66 jb short loc_180016B87 ; +0x15d, 0x180016b6d mov r8, [rcx-8] ; +0x15f, 0x180016b6f add rdx, 27h ; ''' ; +0x163, 0x180016b73 sub rcx, r8 ; +0x167, 0x180016b77 lea rax, [rcx-8] ; +0x16a, 0x180016b7a cmp rax, 1Fh ; +0x16e, 0x180016b7e ja short loc_180016BB6 ; +0x172, 0x180016b82 mov rcx, r8; Block ; +0x174, 0x180016b84 call j_j_free ; +0x177, 0x180016b87 mov r15, [rsp+38h+arg_10] ; +0x17c, 0x180016b8c lea rax, [rdi+rbp*4] ; +0x181, 0x180016b91 mov [rsi], rdi ; +0x185, 0x180016b95 mov [rsi+8], rax ; +0x188, 0x180016b98 lea rax, [r14+rdi] ; +0x18c, 0x180016b9c mov r14, [rsp+38h+arg_8] ; +0x190, 0x180016ba0 mov rdi, [rsp+38h+arg_0] ; +0x195, 0x180016ba5 mov [rsi+10h], rax ; +0x19a, 0x180016baa add rsp, 20h ; +0x19e, 0x180016bae pop rsi ; +0x1a2, 0x180016bb2 pop rbp ; +0x1a3, 0x180016bb3 pop rbx ; +0x1a4, 0x180016bb4 retn ; +0x1a5, 0x180016bb5 call cs:_invalid_parameter_noinfo_noreturn ; +0x1a6, 0x180016bb6 db 0CCh ; +0x1ac, 0x180016bbc call sub_180003530 ; +0x1ad, 0x180016bbd db 0CCh ; +0x1b2, 0x180016bc2 call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) ; +0x1b3, 0x180016bc3 db 0CCh ; +0x1b8, 0x180016bc8