{"type": "func", "start": 6442540272, "end": 6442540585, "name": "cocos2d::extension::CCTableView::_moveCellOutOfSight", "pseudocode": "// \n// cocos2d::extension::CCTableView::_moveCellOutOfSight from 0x180015cf0 to 0x180015e29 (313 bytes)\n// \n// 6 xrefs:\n// > cocos2d::extension::CCTableView::updateCellAtIndex @ 0x18001533f\n// > cocos2d::extension::CCTableView::removeCellAtIndex @ 0x1800156cc\n// > cocos2d::extension::CCTableView::scrollViewDidScroll @ 0x18001625a\n// > cocos2d::extension::CCTableView::scrollViewDidScroll @ 0x1800162b2\n// > <???> @ 0x18002fdf8\n// > <???> @ 0x18004a878\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::_moveCellOutOfSight(\n        cocos2d::extension::CCTableView *this,\n        struct cocos2d::extension::CCTableViewCell *a2)\n{\n  __int64 v4; // rcx\n  struct cocos2d::extension::CCSortableObject *v5; // rdx\n  __int64 *v6; // r11\n  unsigned int v7; // r9d\n  __int64 *v8; // r10\n  __int64 *v9; // rdx\n  __int64 *v10; // rcx\n  __int64 *v11; // rax\n  unsigned int v12; // r8d\n  __int64 v13; // rax\n  __int64 v14; // rbx\n  __int64 v15; // r8\n  _QWORD v16[3]; // [rsp+20h] [rbp-18h] BYREF\n\n  v4 = *((_QWORD *)this + 81);\n  if ( v4 )\n    (*(void (__fastcall **)(__int64, cocos2d::extension::CCTableView *, struct cocos2d::extension::CCTableViewCell *))(*(_QWORD *)v4 + 48LL))(\n      v4,\n      this,\n      a2);\n  cocos2d::CCArray::addObject(*((cocos2d::CCArray **)this + 79), a2);\n  v5 = (struct cocos2d::extension::CCTableViewCell *)((char *)a2 + 320);\n  if ( !a2 )\n    v5 = nullptr;\n  cocos2d::extension::CCArrayForObjectSorting::removeSortedObject(\n    *((cocos2d::extension::CCArrayForObjectSorting **)this + 78),\n    v5);\n  v6 = *((__int64 **)this + 74);\n  v7 = *((_DWORD *)a2 + 82);\n  v8 = (__int64 *)*v6;\n  v9 = (__int64 *)*v6;\n  v10 = *(__int64 **)(*v6 + 8);\n  v11 = v10;\n  while ( !*((_BYTE *)v11 + 25) )\n  {\n    v12 = *((_DWORD *)v11 + 7);\n    if ( v12 >= v7 )\n    {\n      if ( *((_BYTE *)v9 + 25) && v7 < v12 )\n        v9 = v11;\n      v8 = v11;\n      v11 = (__int64 *)*v11;\n    }\n    else\n    {\n      v11 = (__int64 *)v11[2];\n    }\n  }\n  if ( !*((_BYTE *)v9 + 25) )\n    v10 = (__int64 *)*v9;\n  while ( !*((_BYTE *)v10 + 25) )\n  {\n    if ( v7 >= *((_DWORD *)v10 + 7) )\n    {\n      v10 = (__int64 *)v10[2];\n    }\n    else\n    {\n      v9 = v10;\n      v10 = (__int64 *)*v10;\n    }\n  }\n  v16[1] = v9;\n  v16[0] = v8;\n  sub_180016820(v6, v16);\n  v13 = *(_QWORD *)a2;\n  *((_DWORD *)a2 + 82) = -1;\n  v14 = *((_QWORD *)this + 56);\n  if ( (*(__int64 (__fastcall **)(struct cocos2d::extension::CCTableViewCell *))(v13 + 488))(a2) == v14 )\n  {\n    LOBYTE(v15) = 1;\n    (*(void (__fastcall **)(_QWORD, struct cocos2d::extension::CCTableViewCell *, __int64))(**((_QWORD **)this + 56)\n                                                                                          + 520LL))(\n      *((_QWORD *)this + 56),\n      a2,\n      v15);\n  }\n}", "assembly": "; \n; cocos2d::extension::CCTableView::_moveCellOutOfSight from 0x180015cf0 to 0x180015e29 (313 bytes)\n; \n; 6 xrefs:\n; > cocos2d::extension::CCTableView::updateCellAtIndex @ 0x18001533f\n; > cocos2d::extension::CCTableView::removeCellAtIndex @ 0x1800156cc\n; > cocos2d::extension::CCTableView::scrollViewDidScroll @ 0x18001625a\n; > cocos2d::extension::CCTableView::scrollViewDidScroll @ 0x1800162b2\n; > <???> @ 0x18002fdf8\n; > <???> @ 0x18004a878\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, 0x180015cf0\nmov     [rsp+arg_8], rsi                                               ; +0x5, 0x180015cf5\npush    rdi                                                            ; +0xa, 0x180015cfa\nsub     rsp, 30h                                                       ; +0xb, 0x180015cfb\nmov     rdi, rcx                                                       ; +0xf, 0x180015cff\nmov     rsi, rdx                                                       ; +0x12, 0x180015d02\nmov     rcx, [rcx+288h]                                                ; +0x15, 0x180015d05\ntest    rcx, rcx                                                       ; +0x1c, 0x180015d0c\njz      short loc_180015D1D                                            ; +0x1f, 0x180015d0f\nmov     rax, [rcx]                                                     ; +0x21, 0x180015d11\nmov     r8, rdx                                                        ; +0x24, 0x180015d14\nmov     rdx, rdi                                                       ; +0x27, 0x180015d17\ncall    qword ptr [rax+30h]                                            ; +0x2a, 0x180015d1a\nmov     rcx, [rdi+278h]                                                ; +0x2d, 0x180015d1d\nmov     rdx, rsi                                                       ; +0x34, 0x180015d24\ncall    cs:?addObject@CCArray@cocos2d@@QEAAXPEAVCCObject@2@@Z; cocos2d::CCArray::addObject(cocos2d::CCObject *) ; +0x37, 0x180015d27\nmov     rcx, [rdi+270h]; this                                          ; +0x3d, 0x180015d2d\nlea     rdx, [rsi+140h]                                                ; +0x44, 0x180015d34\nxor     eax, eax                                                       ; +0x4b, 0x180015d3b\ntest    rsi, rsi                                                       ; +0x4d, 0x180015d3d\ncmovz   rdx, rax; struct cocos2d::extension::CCSortableObject *        ; +0x50, 0x180015d40\ncall    ?removeSortedObject@CCArrayForObjectSorting@extension@cocos2d@@QEAAXPEAVCCSortableObject@23@@Z; cocos2d::extension::CCArrayForObjectSorting::removeSortedObject(cocos2d::extension::CCSortableObject *) ; +0x54, 0x180015d44\nmov     r11, [rdi+250h]                                                ; +0x59, 0x180015d49\nmov     r9d, [rsi+148h]                                                ; +0x60, 0x180015d50\nmov     r10, [r11]                                                     ; +0x67, 0x180015d57\nmov     rdx, r10                                                       ; +0x6a, 0x180015d5a\nmov     rcx, [r10+8]                                                   ; +0x6d, 0x180015d5d\nmov     rax, rcx                                                       ; +0x71, 0x180015d61\ncmp     byte ptr [rcx+19h], 0                                          ; +0x74, 0x180015d64\njnz     short loc_180015D98                                            ; +0x78, 0x180015d68\nnop     word ptr [rax+rax+00h]                                         ; +0x7a, 0x180015d6a\nmov     r8d, [rax+1Ch]                                                 ; +0x80, 0x180015d70\ncmp     r8d, r9d                                                       ; +0x84, 0x180015d74\njnb     short loc_180015D7F                                            ; +0x87, 0x180015d77\nmov     rax, [rax+10h]                                                 ; +0x89, 0x180015d79\njmp     short loc_180015D92                                            ; +0x8d, 0x180015d7d\ncmp     byte ptr [rdx+19h], 0                                          ; +0x8f, 0x180015d7f\njz      short loc_180015D8C                                            ; +0x93, 0x180015d83\ncmp     r9d, r8d                                                       ; +0x95, 0x180015d85\ncmovb   rdx, rax                                                       ; +0x98, 0x180015d88\nmov     r10, rax                                                       ; +0x9c, 0x180015d8c\nmov     rax, [rax]                                                     ; +0x9f, 0x180015d8f\ncmp     byte ptr [rax+19h], 0                                          ; +0xa2, 0x180015d92\njz      short loc_180015D70                                            ; +0xa6, 0x180015d96\ncmp     byte ptr [rdx+19h], 0                                          ; +0xa8, 0x180015d98\njnz     short loc_180015DA1                                            ; +0xac, 0x180015d9c\nmov     rcx, [rdx]                                                     ; +0xae, 0x180015d9e\ncmp     byte ptr [rcx+19h], 0                                          ; +0xb1, 0x180015da1\njnz     short loc_180015DBF                                            ; +0xb5, 0x180015da5\ncmp     r9d, [rcx+1Ch]                                                 ; +0xb7, 0x180015da7\njnb     short loc_180015DB5                                            ; +0xbb, 0x180015dab\nmov     rdx, rcx                                                       ; +0xbd, 0x180015dad\nmov     rcx, [rcx]                                                     ; +0xc0, 0x180015db0\njmp     short loc_180015DB9                                            ; +0xc3, 0x180015db3\nmov     rcx, [rcx+10h]                                                 ; +0xc5, 0x180015db5\ncmp     byte ptr [rcx+19h], 0                                          ; +0xc9, 0x180015db9\njz      short loc_180015DA7                                            ; +0xcd, 0x180015dbd\nmov     [rsp+38h+var_18+8], rdx                                        ; +0xcf, 0x180015dbf\nmov     rcx, r11                                                       ; +0xd4, 0x180015dc4\nmov     [rsp+38h+var_18], r10                                          ; +0xd7, 0x180015dc7\nlea     rdx, [rsp+38h+var_18]                                          ; +0xdc, 0x180015dcc\nmovaps  xmm0, xmmword ptr [rsp+38h+var_18]                             ; +0xe1, 0x180015dd1\nmovdqa  xmmword ptr [rsp+38h+var_18], xmm0                             ; +0xe6, 0x180015dd6\ncall    sub_180016820                                                  ; +0xec, 0x180015ddc\nmov     rax, [rsi]                                                     ; +0xf1, 0x180015de1\nmov     rcx, rsi                                                       ; +0xf4, 0x180015de4\nmov     dword ptr [rsi+148h], 0FFFFFFFFh                               ; +0xf7, 0x180015de7\nmov     rbx, [rdi+1C0h]                                                ; +0x101, 0x180015df1\ncall    qword ptr [rax+1E8h]                                           ; +0x108, 0x180015df8\ncmp     rax, rbx                                                       ; +0x10e, 0x180015dfe\njnz     short loc_180015E19                                            ; +0x111, 0x180015e01\nmov     rcx, [rdi+1C0h]                                                ; +0x113, 0x180015e03\nmov     r8b, 1                                                         ; +0x11a, 0x180015e0a\nmov     rdx, rsi                                                       ; +0x11d, 0x180015e0d\nmov     rax, [rcx]                                                     ; +0x120, 0x180015e10\ncall    qword ptr [rax+208h]                                           ; +0x123, 0x180015e13\nmov     rbx, [rsp+38h+arg_0]                                           ; +0x129, 0x180015e19\nmov     rsi, [rsp+38h+arg_8]                                           ; +0x12e, 0x180015e1e\nadd     rsp, 30h                                                       ; +0x133, 0x180015e23\npop     rdi                                                            ; +0x137, 0x180015e27\nretn                                                                   ; +0x138, 0x180015e28", "xrefs": ["cocos2d::extension::CCTableView::updateCellAtIndex @ 0x18001533f", "cocos2d::extension::CCTableView::removeCellAtIndex @ 0x1800156cc", "cocos2d::extension::CCTableView::scrollViewDidScroll @ 0x18001625a", "cocos2d::extension::CCTableView::scrollViewDidScroll @ 0x1800162b2", "<???> @ 0x18002fdf8", "<???> @ 0x18004a878"], "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"}