// // sub_180016820 from 0x180016820 to 0x1800169a3 (387 bytes) // // 3 xrefs: // > cocos2d::extension::CCTableView::removeCellAtIndex @ 0x18001576b // > cocos2d::extension::CCTableView::_moveCellOutOfSight @ 0x180015ddc // > @ 0x18004a944 // // 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 // __int64 __fastcall sub_180016820(__int64 ***a1, __int64 **a2) { __int64 *m; // rbx __int64 v3; // rsi __int64 *v4; // rdi __int64 *v6; // rax __int64 **v7; // rdx __int64 i; // rcx __int64 *j; // rdx __int64 v10; // r8 __int64 *v11; // rdx __int64 v12; // rax __int64 *k; // rcx __int64 v14; // rcx __int64 *v15; // rax __int64 v16; // rcx __int64 *v17; // rcx __int64 *v18; // rax m = *a2; v3 = 0; v4 = a2[1]; v6 = *a2; while ( v6 != v4 ) { v7 = (__int64 **)v6[2]; ++v3; if ( *((_BYTE *)v7 + 25) ) { for ( i = v6[1]; !*(_BYTE *)(i + 25); i = *(_QWORD *)(i + 8) ) { if ( v6 != *(__int64 **)(i + 16) ) break; v6 = (__int64 *)i; } v6 = (__int64 *)i; } else { v6 = (__int64 *)v6[2]; for ( j = *v7; !*((_BYTE *)j + 25); j = (__int64 *)*j ) v6 = j; } } if ( m == **a1 && *((_BYTE *)v4 + 25) ) { sub_1800167B0(a1); } else { while ( m != v4 ) { v10 = m[2]; v11 = m; if ( *(_BYTE *)(v10 + 25) ) { v12 = m[1]; for ( k = m + 1; !*(_BYTE *)(v12 + 25); v12 = *(_QWORD *)(v12 + 8) ) { if ( m != *(__int64 **)(v12 + 16) ) break; m = (__int64 *)v12; } v14 = *k; m = (__int64 *)v12; if ( !*(_BYTE *)(v14 + 25) ) { v15 = v11; do { if ( v15 != *(__int64 **)(v14 + 16) ) break; v15 = (__int64 *)v14; v14 = *(_QWORD *)(v14 + 8); } while ( !*(_BYTE *)(v14 + 25) ); } } else { v16 = *(_QWORD *)v10; for ( m = (__int64 *)m[2]; !*(_BYTE *)(v16 + 25); v16 = *(_QWORD *)v16 ) m = (__int64 *)v16; v17 = *(__int64 **)v10; if ( !*(_BYTE *)(*(_QWORD *)v10 + 25LL) ) { do v17 = (__int64 *)*v17; while ( !*((_BYTE *)v17 + 25) ); } } v18 = sub_180005000(a1, v11); j_j_free(v18); } } return v3; }