// // cocos2d::extension::CCTableView::ccTouchBegan from 0x180016460 to 0x180016636 (470 bytes) // // 3 xrefs: // > @ 0x180028850 // > @ 0x18002fdf8 // > @ 0x18004a908 // // 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 cocos2d::extension::CCTableView::ccTouchBegan( cocos2d::extension::CCTableView *this, struct cocos2d::CCTouch *a2, struct cocos2d::CCEvent *a3) { char *v3; // rsi __int64 result; // rax unsigned __int8 v8; // r14 __int64 v9; // rax float *v10; // rax float *v11; // rbx signed int v12; // ebp float *v13; // rax int v14; // eax char *v15; // rbx unsigned int v16; // edx __int64 *v17; // rax __int64 *v18; // r8 __int64 *v19; // rcx struct cocos2d::extension::CCSortableObject *v20; // rax __int64 v21; // rcx __int64 v22; // rcx char v23[40]; // [rsp+20h] [rbp-28h] BYREF char v24; // [rsp+50h] [rbp+8h] BYREF char v25; // [rsp+68h] [rbp+20h] BYREF v3 = (char *)this - 320; result = (*(__int64 (__fastcall **)(char *))(*((_QWORD *)this - 40) + 328LL))((char *)this - 320); if ( (_BYTE)result ) { v8 = cocos2d::extension::CCScrollView::ccTouchBegan(this, a2, a3); if ( cocos2d::CCArray::count(*((cocos2d::CCArray **)this + 23)) == 1 ) { cocos2d::CCPoint::CCPoint((cocos2d::CCPoint *)&v24); v9 = cocos2d::CCNode::convertTouchToNodeSpace(*((_QWORD *)this + 16), &v25, a2); cocos2d::CCPoint::operator=(&v24, v9); cocos2d::CCPoint::CCPoint((cocos2d::CCPoint *)&v25, (const struct cocos2d::CCPoint *)&v24); v11 = v10; v12 = (*(__int64 (__fastcall **)(_QWORD, char *))(**((_QWORD **)v3 + 80) + 32LL))(*((_QWORD *)v3 + 80), v3) - 1; if ( !*((_DWORD *)v3 + 146) ) v11[1] = *(float *)((*(__int64 (__fastcall **)(_QWORD))(**((_QWORD **)v3 + 56) + 304LL))(*((_QWORD *)v3 + 56)) + 4) - v11[1]; cocos2d::CCPoint::CCPoint((cocos2d::CCPoint *)v23, (const struct cocos2d::CCPoint *)v11); v14 = cocos2d::extension::CCTableView::__indexFromOffset((__int64)v3, v13); v15 = nullptr; v16 = v14; if ( v14 == -1 ) goto LABEL_9; if ( v14 < 0 ) v16 = 0; if ( (int)v16 <= v12 ) { LABEL_9: if ( v16 != -1 ) { v17 = **((__int64 ***)this + 34); v18 = v17; v19 = (__int64 *)v17[1]; while ( !*((_BYTE *)v19 + 25) ) { if ( *((_DWORD *)v19 + 7) >= v16 ) { v18 = v19; v19 = (__int64 *)*v19; } else { v19 = (__int64 *)v19[2]; } } if ( !*((_BYTE *)v18 + 25) && v16 >= *((_DWORD *)v18 + 7) && v18 != v17 ) { v20 = cocos2d::extension::CCArrayForObjectSorting::objectWithObjectID( *((cocos2d::extension::CCArrayForObjectSorting **)this + 38), v16); if ( v20 ) v15 = (char *)v20 - 320; } *((_QWORD *)this + 32) = v15; if ( v15 ) { v21 = *((_QWORD *)this + 41); if ( v21 ) (*(void (__fastcall **)(__int64, char *, char *))(*(_QWORD *)v21 + 32LL))(v21, v3, v15); } return v8; } } } else { if ( !*((_QWORD *)this + 32) ) return v8; v22 = *((_QWORD *)this + 41); if ( v22 ) (*(void (__fastcall **)(__int64, char *))(*(_QWORD *)v22 + 40LL))(v22, v3); } *((_QWORD *)this + 32) = 0; return v8; } return result; }