{"type": "func", "start": 6442538336, "end": 6442538954, "name": "cocos2d::extension::CCTableView::removeCellAtIndex", "pseudocode": "// \n// cocos2d::extension::CCTableView::removeCellAtIndex from 0x180015560 to 0x1800157ca (618 bytes)\n// \n// 4 xrefs:\n// > <???> @ 0x18002ee4c\n// > <???> @ 0x18002eec4\n// > <???> @ 0x18002fdf8\n// > <???> @ 0x18004a7c4\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\nvoid __fastcall cocos2d::extension::CCTableView::removeCellAtIndex(\n        cocos2d::extension::CCTableView *this,\n        unsigned int a2)\n{\n  int v4; // eax\n  __int64 *v5; // rax\n  __int64 *v6; // rdx\n  __int64 *v7; // rcx\n  struct cocos2d::extension::CCSortableObject *v8; // rax\n  struct cocos2d::extension::CCTableViewCell *v9; // r14\n  __int64 v10; // rdi\n  unsigned int v11; // r12d\n  unsigned int v12; // r15d\n  unsigned int v13; // eax\n  struct cocos2d::extension::CCTableViewCell *v14; // rdx\n  unsigned int v15; // ebp\n  unsigned int *v16; // rdi\n  __int64 v17; // rax\n  _QWORD *v18; // rdi\n  _QWORD *v19; // r13\n  __int64 v20; // rax\n  unsigned int v21; // eax\n  __int64 *v22; // r10\n  __int64 *v23; // r9\n  __int64 *v24; // rdx\n  __int64 *v25; // rcx\n  __int64 *v26; // rax\n  unsigned int v27; // r8d\n  unsigned int i; // ebx\n  struct cocos2d::CCObject *v29; // rax\n  _QWORD v30[2]; // [rsp+30h] [rbp-38h] BYREF\n\n  if ( a2 != -1 )\n  {\n    v4 = (*(__int64 (__fastcall **)(_QWORD, cocos2d::extension::CCTableView *))(**((_QWORD **)this + 80) + 32LL))(\n           *((_QWORD *)this + 80),\n           this);\n    if ( v4 )\n    {\n      if ( a2 <= v4 - 1 )\n      {\n        v5 = **((__int64 ***)this + 74);\n        v6 = v5;\n        v7 = (__int64 *)v5[1];\n        while ( !*((_BYTE *)v7 + 25) )\n        {\n          if ( *((_DWORD *)v7 + 7) >= a2 )\n          {\n            v6 = v7;\n            v7 = (__int64 *)*v7;\n          }\n          else\n          {\n            v7 = (__int64 *)v7[2];\n          }\n        }\n        if ( !*((_BYTE *)v6 + 25) && a2 >= *((_DWORD *)v6 + 7) && v6 != v5 )\n        {\n          v8 = cocos2d::extension::CCArrayForObjectSorting::objectWithObjectID(\n                 *((cocos2d::extension::CCArrayForObjectSorting **)this + 78),\n                 a2);\n          if ( v8 )\n          {\n            v9 = (struct cocos2d::extension::CCSortableObject *)((char *)v8 - 320);\n            if ( v8 != (struct cocos2d::extension::CCSortableObject *)320 )\n            {\n              v10 = *((_QWORD *)this + 78);\n              v11 = 0;\n              v12 = 0;\n              v13 = (*(__int64 (__fastcall **)(struct cocos2d::extension::CCSortableObject *))(*(_QWORD *)v8 + 16LL))(v8);\n              v14 = v9;\n              v15 = v13;\n              if ( v10 )\n              {\n                v16 = *(unsigned int **)(v10 + 56);\n                v17 = *v16;\n                if ( (_DWORD)v17 )\n                {\n                  v18 = *((_QWORD **)v16 + 2);\n                  v19 = &v18[v17 - 1];\n                  if ( v18 <= v19 )\n                  {\n                    do\n                    {\n                      if ( !*v18 )\n                        break;\n                      v20 = _RTDynamicCast(\n                              *v18,\n                              0,\n                              &cocos2d::CCObject `RTTI Type Descriptor',\n                              &cocos2d::extension::CCSortableObject `RTTI Type Descriptor',\n                              0);\n                      v21 = (*(__int64 (__fastcall **)(__int64))(*(_QWORD *)v20 + 16LL))(v20);\n                      if ( v15 == v21 || v15 >= v11 && v15 < v21 )\n                        break;\n                      ++v12;\n                      ++v18;\n                      v11 = v21;\n                    }\n                    while ( v18 <= v19 );\n                    v14 = v9;\n                  }\n                }\n              }\n              cocos2d::extension::CCTableView::_moveCellOutOfSight(this, v14);\n              v22 = *((__int64 **)this + 74);\n              v23 = (__int64 *)*v22;\n              v24 = (__int64 *)*v22;\n              v25 = *(__int64 **)(*v22 + 8);\n              v26 = v25;\n              while ( !*((_BYTE *)v26 + 25) )\n              {\n                v27 = *((_DWORD *)v26 + 7);\n                if ( v27 >= a2 )\n                {\n                  if ( *((_BYTE *)v24 + 25) && a2 < v27 )\n                    v24 = v26;\n                  v23 = v26;\n                  v26 = (__int64 *)*v26;\n                }\n                else\n                {\n                  v26 = (__int64 *)v26[2];\n                }\n              }\n              if ( !*((_BYTE *)v24 + 25) )\n                v25 = (__int64 *)*v24;\n              while ( !*((_BYTE *)v25 + 25) )\n              {\n                if ( a2 >= *((_DWORD *)v25 + 7) )\n                {\n                  v25 = (__int64 *)v25[2];\n                }\n                else\n                {\n                  v24 = v25;\n                  v25 = (__int64 *)*v25;\n                }\n              }\n              v30[1] = v24;\n              v30[0] = v23;\n              sub_180016820(v22, v30);\n              cocos2d::extension::CCTableView::_updateCellPositions(this);\n              for ( i = cocos2d::CCArray::count(*((cocos2d::CCArray **)this + 78)) - 1; i > v12; --i )\n              {\n                v29 = cocos2d::CCArray::objectAtIndex(*((cocos2d::CCArray **)this + 78), i);\n                cocos2d::extension::CCTableView::_setIndexForCell(this, *((_DWORD *)v29 + 82) - 1, v29);\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}", "assembly": "; \n; cocos2d::extension::CCTableView::removeCellAtIndex from 0x180015560 to 0x1800157ca (618 bytes)\n; \n; 4 xrefs:\n; > <???> @ 0x18002ee4c\n; > <???> @ 0x18002eec4\n; > <???> @ 0x18002fdf8\n; > <???> @ 0x18004a7c4\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\ncmp     edx, 0FFFFFFFFh                                                ; +0x0, 0x180015560\njz      locret_1800157C9                                               ; +0x3, 0x180015563\npush    rbx                                                            ; +0x9, 0x180015569\npush    rsi                                                            ; +0xa, 0x18001556a\nsub     rsp, 58h                                                       ; +0xb, 0x18001556b\nmov     rsi, rcx                                                       ; +0xf, 0x18001556f\nmov     ebx, edx                                                       ; +0x12, 0x180015572\nmov     rcx, [rcx+280h]                                                ; +0x14, 0x180015574\nmov     rdx, rsi                                                       ; +0x1b, 0x18001557b\nmov     rax, [rcx]                                                     ; +0x1e, 0x18001557e\ncall    qword ptr [rax+20h]                                            ; +0x21, 0x180015581\ntest    eax, eax                                                       ; +0x24, 0x180015584\njz      loc_1800157C3                                                  ; +0x26, 0x180015586\ndec     eax                                                            ; +0x2c, 0x18001558c\ncmp     ebx, eax                                                       ; +0x2e, 0x18001558e\nja      loc_1800157C3                                                  ; +0x30, 0x180015590\nmov     rax, [rsi+250h]                                                ; +0x36, 0x180015596\nmov     rax, [rax]                                                     ; +0x3d, 0x18001559d\nmov     rdx, rax                                                       ; +0x40, 0x1800155a0\nmov     rcx, [rax+8]                                                   ; +0x43, 0x1800155a3\ncmp     byte ptr [rcx+19h], 0                                          ; +0x47, 0x1800155a7\njnz     short loc_1800155C7                                            ; +0x4b, 0x1800155ab\nnop     dword ptr [rax]                                                ; +0x4d, 0x1800155ad\ncmp     [rcx+1Ch], ebx                                                 ; +0x50, 0x1800155b0\njnb     short loc_1800155BB                                            ; +0x53, 0x1800155b3\nmov     rcx, [rcx+10h]                                                 ; +0x55, 0x1800155b5\njmp     short loc_1800155C1                                            ; +0x59, 0x1800155b9\nmov     rdx, rcx                                                       ; +0x5b, 0x1800155bb\nmov     rcx, [rcx]                                                     ; +0x5e, 0x1800155be\ncmp     byte ptr [rcx+19h], 0                                          ; +0x61, 0x1800155c1\njz      short loc_1800155B0                                            ; +0x65, 0x1800155c5\ncmp     byte ptr [rdx+19h], 0                                          ; +0x67, 0x1800155c7\njnz     loc_1800157C3                                                  ; +0x6b, 0x1800155cb\ncmp     ebx, [rdx+1Ch]                                                 ; +0x71, 0x1800155d1\njb      loc_1800157C3                                                  ; +0x74, 0x1800155d4\ncmp     rdx, rax                                                       ; +0x7a, 0x1800155da\njz      loc_1800157C3                                                  ; +0x7d, 0x1800155dd\nmov     rcx, [rsi+270h]; this                                          ; +0x83, 0x1800155e3\nmov     edx, ebx; unsigned int                                         ; +0x8a, 0x1800155ea\ncall    ?objectWithObjectID@CCArrayForObjectSorting@extension@cocos2d@@QEAAPEAVCCSortableObject@23@I@Z; cocos2d::extension::CCArrayForObjectSorting::objectWithObjectID(uint) ; +0x8c, 0x1800155ec\ntest    rax, rax                                                       ; +0x91, 0x1800155f1\njz      loc_1800157C3                                                  ; +0x94, 0x1800155f4\nmov     [rsp+68h+var_20], r14                                          ; +0x9a, 0x1800155fa\nlea     r14, [rax-140h]                                                ; +0x9f, 0x1800155ff\ntest    r14, r14                                                       ; +0xa6, 0x180015606\njz      loc_1800157BE                                                  ; +0xa9, 0x180015609\nmov     [rsp+68h+arg_0], rbp                                           ; +0xaf, 0x18001560f\nlea     rcx, [r14+140h]                                                ; +0xb4, 0x180015614\nmov     rax, [rcx]                                                     ; +0xbb, 0x18001561b\nmov     [rsp+68h+arg_8], rdi                                           ; +0xbe, 0x18001561e\nmov     rdi, [rsi+270h]                                                ; +0xc3, 0x180015623\nmov     [rsp+68h+arg_18], r12                                          ; +0xca, 0x18001562a\nxor     r12d, r12d                                                     ; +0xd2, 0x180015632\nmov     [rsp+68h+var_28], r15                                          ; +0xd5, 0x180015635\nxor     r15d, r15d                                                     ; +0xda, 0x18001563a\ncall    qword ptr [rax+10h]                                            ; +0xdd, 0x18001563d\nmov     rdx, r14                                                       ; +0xe0, 0x180015640\nmov     ebp, eax                                                       ; +0xe3, 0x180015643\ntest    rdi, rdi                                                       ; +0xe5, 0x180015645\njz      short loc_1800156C9                                            ; +0xe8, 0x180015648\nmov     rdi, [rdi+38h]                                                 ; +0xea, 0x18001564a\nmov     eax, [rdi]                                                     ; +0xee, 0x18001564e\ntest    eax, eax                                                       ; +0xf0, 0x180015650\njz      short loc_1800156C9                                            ; +0xf2, 0x180015652\nmov     rdi, [rdi+10h]                                                 ; +0xf4, 0x180015654\nmov     [rsp+68h+var_18], r13                                          ; +0xf8, 0x180015658\nlea     r13, [rax-1]                                                   ; +0xfd, 0x18001565d\nlea     r13, [rdi+r13*8]                                               ; +0x101, 0x180015661\ncmp     rdi, r13                                                       ; +0x105, 0x180015665\nja      short loc_1800156C4                                            ; +0x108, 0x180015668\nmov     [rsp+68h+arg_10], r14                                          ; +0x10a, 0x18001566a\nxor     r14d, r14d                                                     ; +0x112, 0x180015672\nmov     rcx, [rdi]                                                     ; +0x115, 0x180015675\ntest    rcx, rcx                                                       ; +0x118, 0x180015678\njz      short loc_1800156BC                                            ; +0x11b, 0x18001567b\nlea     r9, ??_R0?AVCCSortableObject@extension@cocos2d@@@8; cocos2d::extension::CCSortableObject `RTTI Type Descriptor' ; +0x11d, 0x18001567d\nmov     [rsp+68h+var_48], r14d                                         ; +0x124, 0x180015684\nlea     r8, ??_R0?AVCCObject@cocos2d@@@8; cocos2d::CCObject `RTTI Type Descriptor' ; +0x129, 0x180015689\nxor     edx, edx                                                       ; +0x130, 0x180015690\ncall    __RTDynamicCast                                                ; +0x132, 0x180015692\nmov     rcx, rax                                                       ; +0x137, 0x180015697\nmov     rdx, [rax]                                                     ; +0x13a, 0x18001569a\ncall    qword ptr [rdx+10h]                                            ; +0x13d, 0x18001569d\ncmp     ebp, eax                                                       ; +0x140, 0x1800156a0\njz      short loc_1800156BC                                            ; +0x142, 0x1800156a2\ncmp     ebp, r12d                                                      ; +0x144, 0x1800156a4\njb      short loc_1800156AD                                            ; +0x147, 0x1800156a7\ncmp     ebp, eax                                                       ; +0x149, 0x1800156a9\njb      short loc_1800156BC                                            ; +0x14b, 0x1800156ab\ninc     r15d                                                           ; +0x14d, 0x1800156ad\nadd     rdi, 8                                                         ; +0x150, 0x1800156b0\nmov     r12d, eax                                                      ; +0x154, 0x1800156b4\ncmp     rdi, r13                                                       ; +0x157, 0x1800156b7\njbe     short loc_180015675                                            ; +0x15a, 0x1800156ba\nmov     rdx, [rsp+68h+arg_10]; struct cocos2d::extension::CCTableViewCell * ; +0x15c, 0x1800156bc\nmov     r13, [rsp+68h+var_18]                                          ; +0x164, 0x1800156c4\nmov     rcx, rsi; this                                                 ; +0x169, 0x1800156c9\ncall    ?_moveCellOutOfSight@CCTableView@extension@cocos2d@@IEAAXPEAVCCTableViewCell@23@@Z; cocos2d::extension::CCTableView::_moveCellOutOfSight(cocos2d::extension::CCTableViewCell *) ; +0x16c, 0x1800156cc\nmov     r10, [rsi+250h]                                                ; +0x171, 0x1800156d1\nmov     r12, [rsp+68h+arg_18]                                          ; +0x178, 0x1800156d8\nmov     rdi, [rsp+68h+arg_8]                                           ; +0x180, 0x1800156e0\nmov     rbp, [rsp+68h+arg_0]                                           ; +0x185, 0x1800156e5\nmov     r9, [r10]                                                      ; +0x18a, 0x1800156ea\nmov     rdx, r9                                                        ; +0x18d, 0x1800156ed\nmov     rcx, [r9+8]                                                    ; +0x190, 0x1800156f0\nmov     rax, rcx                                                       ; +0x194, 0x1800156f4\ncmp     byte ptr [rcx+19h], 0                                          ; +0x197, 0x1800156f7\njnz     short loc_180015728                                            ; +0x19b, 0x1800156fb\nnop     dword ptr [rax]                                                ; +0x19d, 0x1800156fd\nmov     r8d, [rax+1Ch]                                                 ; +0x1a0, 0x180015700\ncmp     r8d, ebx                                                       ; +0x1a4, 0x180015704\njnb     short loc_18001570F                                            ; +0x1a7, 0x180015707\nmov     rax, [rax+10h]                                                 ; +0x1a9, 0x180015709\njmp     short loc_180015722                                            ; +0x1ad, 0x18001570d\ncmp     byte ptr [rdx+19h], 0                                          ; +0x1af, 0x18001570f\njz      short loc_18001571C                                            ; +0x1b3, 0x180015713\ncmp     ebx, r8d                                                       ; +0x1b5, 0x180015715\ncmovb   rdx, rax                                                       ; +0x1b8, 0x180015718\nmov     r9, rax                                                        ; +0x1bc, 0x18001571c\nmov     rax, [rax]                                                     ; +0x1bf, 0x18001571f\ncmp     byte ptr [rax+19h], 0                                          ; +0x1c2, 0x180015722\njz      short loc_180015700                                            ; +0x1c6, 0x180015726\ncmp     byte ptr [rdx+19h], 0                                          ; +0x1c8, 0x180015728\njnz     short loc_180015731                                            ; +0x1cc, 0x18001572c\nmov     rcx, [rdx]                                                     ; +0x1ce, 0x18001572e\ncmp     byte ptr [rcx+19h], 0                                          ; +0x1d1, 0x180015731\njnz     short loc_18001574E                                            ; +0x1d5, 0x180015735\ncmp     ebx, [rcx+1Ch]                                                 ; +0x1d7, 0x180015737\njnb     short loc_180015744                                            ; +0x1da, 0x18001573a\nmov     rdx, rcx                                                       ; +0x1dc, 0x18001573c\nmov     rcx, [rcx]                                                     ; +0x1df, 0x18001573f\njmp     short loc_180015748                                            ; +0x1e2, 0x180015742\nmov     rcx, [rcx+10h]                                                 ; +0x1e4, 0x180015744\ncmp     byte ptr [rcx+19h], 0                                          ; +0x1e8, 0x180015748\njz      short loc_180015737                                            ; +0x1ec, 0x18001574c\nmov     qword ptr [rsp+68h+var_38+8], rdx                              ; +0x1ee, 0x18001574e\nmov     rcx, r10                                                       ; +0x1f3, 0x180015753\nmov     qword ptr [rsp+68h+var_38], r9                                 ; +0x1f6, 0x180015756\nlea     rdx, [rsp+68h+var_38]                                          ; +0x1fb, 0x18001575b\nmovaps  xmm0, [rsp+68h+var_38]                                         ; +0x200, 0x180015760\nmovdqa  [rsp+68h+var_38], xmm0                                         ; +0x205, 0x180015765\ncall    sub_180016820                                                  ; +0x20b, 0x18001576b\nmov     rcx, rsi; this                                                 ; +0x210, 0x180015770\ncall    ?_updateCellPositions@CCTableView@extension@cocos2d@@IEAAXXZ; cocos2d::extension::CCTableView::_updateCellPositions(void) ; +0x213, 0x180015773\nmov     rcx, [rsi+270h]                                                ; +0x218, 0x180015778\ncall    cs:?count@CCArray@cocos2d@@QEBAIXZ; cocos2d::CCArray::count(void) ; +0x21f, 0x18001577f\nlea     ebx, [rax-1]                                                   ; +0x225, 0x180015785\ncmp     ebx, r15d                                                      ; +0x228, 0x180015788\njbe     short loc_1800157B9                                            ; +0x22b, 0x18001578b\nnop     dword ptr [rax]                                                ; +0x22d, 0x18001578d\nmov     rcx, [rsi+270h]                                                ; +0x230, 0x180015790\nmov     edx, ebx                                                       ; +0x237, 0x180015797\ncall    cs:?objectAtIndex@CCArray@cocos2d@@QEAAPEAVCCObject@2@I@Z; cocos2d::CCArray::objectAtIndex(uint) ; +0x239, 0x180015799\nmov     r8, rax; struct cocos2d::extension::CCTableViewCell *          ; +0x23f, 0x18001579f\nmov     rcx, rsi; this                                                 ; +0x242, 0x1800157a2\nmov     edx, [rax+148h]                                                ; +0x245, 0x1800157a5\ndec     edx; unsigned int                                              ; +0x24b, 0x1800157ab\ncall    ?_setIndexForCell@CCTableView@extension@cocos2d@@IEAAXIPEAVCCTableViewCell@23@@Z; cocos2d::extension::CCTableView::_setIndexForCell(uint,cocos2d::extension::CCTableViewCell *) ; +0x24d, 0x1800157ad\ndec     ebx                                                            ; +0x252, 0x1800157b2\ncmp     ebx, r15d                                                      ; +0x254, 0x1800157b4\nja      short loc_180015790                                            ; +0x257, 0x1800157b7\nmov     r15, [rsp+68h+var_28]                                          ; +0x259, 0x1800157b9\nmov     r14, [rsp+68h+var_20]                                          ; +0x25e, 0x1800157be\nadd     rsp, 58h                                                       ; +0x263, 0x1800157c3\npop     rsi                                                            ; +0x267, 0x1800157c7\npop     rbx                                                            ; +0x268, 0x1800157c8\nretn                                                                   ; +0x269, 0x1800157c9", "xrefs": ["<???> @ 0x18002ee4c", "<???> @ 0x18002eec4", "<???> @ 0x18002fdf8", "<???> @ 0x18004a7c4"], "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"}