{"type": "func", "start": 6442543136, "end": 6442543523, "name": "sub_180016820", "pseudocode": "// \n// sub_180016820 from 0x180016820 to 0x1800169a3 (387 bytes)\n// \n// 3 xrefs:\n// > cocos2d::extension::CCTableView::removeCellAtIndex @ 0x18001576b\n// > cocos2d::extension::CCTableView::_moveCellOutOfSight @ 0x180015ddc\n// > <???> @ 0x18004a944\n// \n// This function is hookable on this platform!\n// \n// Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA\n// Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings\n// \n\n__int64 __fastcall sub_180016820(__int64 ***a1, __int64 **a2)\n{\n  __int64 *m; // rbx\n  __int64 v3; // rsi\n  __int64 *v4; // rdi\n  __int64 *v6; // rax\n  __int64 **v7; // rdx\n  __int64 i; // rcx\n  __int64 *j; // rdx\n  __int64 v10; // r8\n  __int64 *v11; // rdx\n  __int64 v12; // rax\n  __int64 *k; // rcx\n  __int64 v14; // rcx\n  __int64 *v15; // rax\n  __int64 v16; // rcx\n  __int64 *v17; // rcx\n  __int64 *v18; // rax\n\n  m = *a2;\n  v3 = 0;\n  v4 = a2[1];\n  v6 = *a2;\n  while ( v6 != v4 )\n  {\n    v7 = (__int64 **)v6[2];\n    ++v3;\n    if ( *((_BYTE *)v7 + 25) )\n    {\n      for ( i = v6[1]; !*(_BYTE *)(i + 25); i = *(_QWORD *)(i + 8) )\n      {\n        if ( v6 != *(__int64 **)(i + 16) )\n          break;\n        v6 = (__int64 *)i;\n      }\n      v6 = (__int64 *)i;\n    }\n    else\n    {\n      v6 = (__int64 *)v6[2];\n      for ( j = *v7; !*((_BYTE *)j + 25); j = (__int64 *)*j )\n        v6 = j;\n    }\n  }\n  if ( m == **a1 && *((_BYTE *)v4 + 25) )\n  {\n    sub_1800167B0(a1);\n  }\n  else\n  {\n    while ( m != v4 )\n    {\n      v10 = m[2];\n      v11 = m;\n      if ( *(_BYTE *)(v10 + 25) )\n      {\n        v12 = m[1];\n        for ( k = m + 1; !*(_BYTE *)(v12 + 25); v12 = *(_QWORD *)(v12 + 8) )\n        {\n          if ( m != *(__int64 **)(v12 + 16) )\n            break;\n          m = (__int64 *)v12;\n        }\n        v14 = *k;\n        m = (__int64 *)v12;\n        if ( !*(_BYTE *)(v14 + 25) )\n        {\n          v15 = v11;\n          do\n          {\n            if ( v15 != *(__int64 **)(v14 + 16) )\n              break;\n            v15 = (__int64 *)v14;\n            v14 = *(_QWORD *)(v14 + 8);\n          }\n          while ( !*(_BYTE *)(v14 + 25) );\n        }\n      }\n      else\n      {\n        v16 = *(_QWORD *)v10;\n        for ( m = (__int64 *)m[2]; !*(_BYTE *)(v16 + 25); v16 = *(_QWORD *)v16 )\n          m = (__int64 *)v16;\n        v17 = *(__int64 **)v10;\n        if ( !*(_BYTE *)(*(_QWORD *)v10 + 25LL) )\n        {\n          do\n            v17 = (__int64 *)*v17;\n          while ( !*((_BYTE *)v17 + 25) );\n        }\n      }\n      v18 = sub_180005000(a1, v11);\n      j_j_free(v18);\n    }\n  }\n  return v3;\n}", "assembly": "; \n; sub_180016820 from 0x180016820 to 0x1800169a3 (387 bytes)\n; \n; 3 xrefs:\n; > cocos2d::extension::CCTableView::removeCellAtIndex @ 0x18001576b\n; > cocos2d::extension::CCTableView::_moveCellOutOfSight @ 0x180015ddc\n; > <???> @ 0x18004a944\n; \n; This function is hookable on this platform!\n; \n; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA\n; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings\n; \n\nmov     [rsp+arg_0], rbx                                               ; +0x0, 0x180016820\nmov     [rsp+arg_8], rsi                                               ; +0x5, 0x180016825\nmov     [rsp+arg_10], rdi                                              ; +0xa, 0x18001682a\npush    r14                                                            ; +0xf, 0x18001682f\nsub     rsp, 20h                                                       ; +0x11, 0x180016831\nmov     rbx, [rdx]                                                     ; +0x15, 0x180016835\nxor     esi, esi                                                       ; +0x18, 0x180016838\nmov     rdi, [rdx+8]                                                   ; +0x1a, 0x18001683a\nmov     r14, rcx                                                       ; +0x1e, 0x18001683e\nmov     rax, rbx                                                       ; +0x21, 0x180016841\ncmp     rbx, rdi                                                       ; +0x24, 0x180016844\njz      short loc_1800168A4                                            ; +0x27, 0x180016847\nnop     dword ptr [rax+00000000h]                                      ; +0x29, 0x180016849\nmov     rdx, [rax+10h]                                                 ; +0x30, 0x180016850\ninc     rsi                                                            ; +0x34, 0x180016854\ncmp     byte ptr [rdx+19h], 0                                          ; +0x37, 0x180016857\njz      short loc_18001687F                                            ; +0x3b, 0x18001685b\nmov     rcx, [rax+8]                                                   ; +0x3d, 0x18001685d\ncmp     byte ptr [rcx+19h], 0                                          ; +0x41, 0x180016861\njnz     short loc_18001687A                                            ; +0x45, 0x180016865\ncmp     rax, [rcx+10h]                                                 ; +0x47, 0x180016867\njnz     short loc_18001687A                                            ; +0x4b, 0x18001686b\nmov     rax, rcx                                                       ; +0x4d, 0x18001686d\nmov     rcx, [rcx+8]                                                   ; +0x50, 0x180016870\ncmp     byte ptr [rcx+19h], 0                                          ; +0x54, 0x180016874\njz      short loc_180016867                                            ; +0x58, 0x180016878\nmov     rax, rcx                                                       ; +0x5a, 0x18001687a\njmp     short loc_18001689F                                            ; +0x5d, 0x18001687d\nmov     rax, rdx                                                       ; +0x5f, 0x18001687f\nmov     rdx, [rdx]                                                     ; +0x62, 0x180016882\ncmp     byte ptr [rdx+19h], 0                                          ; +0x65, 0x180016885\njnz     short loc_18001689F                                            ; +0x69, 0x180016889\nnop     dword ptr [rax+rax+00h]                                        ; +0x6b, 0x18001688b\nmov     rcx, [rdx]                                                     ; +0x70, 0x180016890\nmov     rax, rdx                                                       ; +0x73, 0x180016893\nmov     rdx, rcx                                                       ; +0x76, 0x180016896\ncmp     byte ptr [rcx+19h], 0                                          ; +0x79, 0x180016899\njz      short loc_180016890                                            ; +0x7d, 0x18001689d\ncmp     rax, rdi                                                       ; +0x7f, 0x18001689f\njnz     short loc_180016850                                            ; +0x82, 0x1800168a2\nmov     rcx, [r14]                                                     ; +0x84, 0x1800168a4\ncmp     rbx, [rcx]                                                     ; +0x87, 0x1800168a7\njnz     short loc_1800168BF                                            ; +0x8a, 0x1800168aa\ncmp     byte ptr [rdi+19h], 0                                          ; +0x8c, 0x1800168ac\njz      short loc_1800168BF                                            ; +0x90, 0x1800168b0\nmov     rcx, r14                                                       ; +0x92, 0x1800168b2\ncall    sub_1800167B0                                                  ; +0x95, 0x1800168b5\njmp     loc_18001698A                                                  ; +0x9a, 0x1800168ba\ncmp     rbx, rdi                                                       ; +0x9f, 0x1800168bf\njz      loc_18001698A                                                  ; +0xa2, 0x1800168c2\nnop     dword ptr [rax+rax+00000000h]                                  ; +0xa8, 0x1800168c8\nmov     r8, [rbx+10h]                                                  ; +0xb0, 0x1800168d0\nmov     rdx, rbx                                                       ; +0xb4, 0x1800168d4\ncmp     byte ptr [r8+19h], 0                                           ; +0xb7, 0x1800168d7\njz      short loc_180016927                                            ; +0xbc, 0x1800168dc\nmov     rax, [rbx+8]                                                   ; +0xbe, 0x1800168de\nlea     rcx, [rbx+8]                                                   ; +0xc2, 0x1800168e2\ncmp     byte ptr [rax+19h], 0                                          ; +0xc6, 0x1800168e6\njnz     short loc_180016903                                            ; +0xca, 0x1800168ea\nnop     dword ptr [rax+00h]                                            ; +0xcc, 0x1800168ec\ncmp     rbx, [rax+10h]                                                 ; +0xd0, 0x1800168f0\njnz     short loc_180016903                                            ; +0xd4, 0x1800168f4\nmov     rbx, rax                                                       ; +0xd6, 0x1800168f6\nmov     rax, [rax+8]                                                   ; +0xd9, 0x1800168f9\ncmp     byte ptr [rax+19h], 0                                          ; +0xdd, 0x1800168fd\njz      short loc_1800168F0                                            ; +0xe1, 0x180016901\nmov     rcx, [rcx]                                                     ; +0xe3, 0x180016903\nmov     rbx, rax                                                       ; +0xe6, 0x180016906\ncmp     byte ptr [rcx+19h], 0                                          ; +0xe9, 0x180016909\njnz     short loc_18001696C                                            ; +0xed, 0x18001690d\nmov     rax, rdx                                                       ; +0xef, 0x18001690f\ncmp     rax, [rcx+10h]                                                 ; +0xf2, 0x180016912\njnz     short loc_18001696C                                            ; +0xf6, 0x180016916\nmov     rax, rcx                                                       ; +0xf8, 0x180016918\nmov     rcx, [rcx+8]                                                   ; +0xfb, 0x18001691b\ncmp     byte ptr [rcx+19h], 0                                          ; +0xff, 0x18001691f\njz      short loc_180016912                                            ; +0x103, 0x180016923\njmp     short loc_18001696C                                            ; +0x105, 0x180016925\nmov     rcx, [r8]                                                      ; +0x107, 0x180016927\nmov     rbx, r8                                                        ; +0x10a, 0x18001692a\ncmp     byte ptr [rcx+19h], 0                                          ; +0x10d, 0x18001692d\njnz     short loc_18001694F                                            ; +0x111, 0x180016931\nnop     dword ptr [rax+00h]                                            ; +0x113, 0x180016933\nnop     word ptr [rax+rax+00000000h]                                   ; +0x117, 0x180016937\nmov     rax, [rcx]                                                     ; +0x120, 0x180016940\nmov     rbx, rcx                                                       ; +0x123, 0x180016943\nmov     rcx, rax                                                       ; +0x126, 0x180016946\ncmp     byte ptr [rax+19h], 0                                          ; +0x129, 0x180016949\njz      short loc_180016940                                            ; +0x12d, 0x18001694d\nmov     rcx, [r8]                                                      ; +0x12f, 0x18001694f\ncmp     byte ptr [rcx+19h], 0                                          ; +0x132, 0x180016952\njnz     short loc_18001696C                                            ; +0x136, 0x180016956\nnop     dword ptr [rax+rax+00000000h]                                  ; +0x138, 0x180016958\nmov     rax, [rcx]                                                     ; +0x140, 0x180016960\nmov     rcx, rax                                                       ; +0x143, 0x180016963\ncmp     byte ptr [rax+19h], 0                                          ; +0x146, 0x180016966\njz      short loc_180016960                                            ; +0x14a, 0x18001696a\nmov     rcx, r14                                                       ; +0x14c, 0x18001696c\ncall    sub_180005000                                                  ; +0x14f, 0x18001696f\nmov     edx, 20h ; ' '                                                 ; +0x154, 0x180016974\nmov     rcx, rax; Block                                                ; +0x159, 0x180016979\ncall    j_j_free                                                       ; +0x15c, 0x18001697c\ncmp     rbx, rdi                                                       ; +0x161, 0x180016981\njnz     loc_1800168D0                                                  ; +0x164, 0x180016984\nmov     rbx, [rsp+28h+arg_0]                                           ; +0x16a, 0x18001698a\nmov     rax, rsi                                                       ; +0x16f, 0x18001698f\nmov     rsi, [rsp+28h+arg_8]                                           ; +0x172, 0x180016992\nmov     rdi, [rsp+28h+arg_10]                                          ; +0x177, 0x180016997\nadd     rsp, 20h                                                       ; +0x17c, 0x18001699c\npop     r14                                                            ; +0x180, 0x1800169a0\nretn                                                                   ; +0x182, 0x1800169a2", "xrefs": ["cocos2d::extension::CCTableView::removeCellAtIndex @ 0x18001576b", "cocos2d::extension::CCTableView::_moveCellOutOfSight @ 0x180015ddc", "<???> @ 0x18004a944"], "is_objc": false, "is_arm32": false, "is_arm64": false, "bida_info": "8.0.0 @ https://github.com/Stazzical/BromaIDA", "bindings_info": "commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings"}