// // cocos2d::extension::CCScrollView::ccTouchBegan from 0x180013980 to 0x180013bdc (604 bytes) // // 5 xrefs: // > cocos2d::extension::CCTableView::ccTouchBegan @ 0x1800164a7 // > @ 0x1800282d8 // > @ 0x18002fdf8 // > @ 0x18004a56c // > @ 0x18004a578 // // 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 // char __fastcall cocos2d::extension::CCScrollView::ccTouchBegan( cocos2d::extension::CCScrollView *this, struct cocos2d::CCTouch *a2, struct cocos2d::CCEvent *a3) { char *v3; // rsi __int64 v6; // rax const struct cocos2d::CCPoint *v7; // rax __int64 v8; // rax __int64 v9; // rax struct cocos2d::CCObject *v11; // rax __int64 v12; // rbx struct cocos2d::CCObject *v13; // rax __int64 v14; // rax __int64 v15; // rax struct cocos2d::CCObject *v16; // rax const struct cocos2d::CCPoint *v17; // rbx struct cocos2d::CCObject *v18; // rax cocos2d *v19; // rax const struct cocos2d::CCPoint *v20; // r8 _BYTE v21[8]; // [rsp+20h] [rbp-28h] BYREF _BYTE v22[8]; // [rsp+28h] [rbp-20h] BYREF _BYTE v23[24]; // [rsp+30h] [rbp-18h] BYREF char v24; // [rsp+50h] [rbp+8h] BYREF char v25; // [rsp+68h] [rbp+20h] BYREF v3 = (char *)this - 320; if ( !(*(unsigned __int8 (__fastcall **)(char *, struct cocos2d::CCTouch *, struct cocos2d::CCEvent *))(*((_QWORD *)this - 40) + 328LL))( (char *)this - 320, a2, a3) ) return 0; cocos2d::extension::CCScrollView::getViewRect(v3, v23); if ( cocos2d::CCArray::count(*((cocos2d::CCArray **)this + 23)) > 2 ) return 0; if ( *((_BYTE *)this + 136) ) return 0; v6 = cocos2d::CCNode::convertTouchToNodeSpace(*((_QWORD *)this + 16), &v24, a2); v7 = (const struct cocos2d::CCPoint *)cocos2d::CCNode::convertToWorldSpace(*((_QWORD *)this + 16), &v25, v6); if ( !cocos2d::CCRect::containsPoint((cocos2d::CCRect *)v23, v7) ) return 0; if ( !cocos2d::CCArray::containsObject(*((cocos2d::CCArray **)this + 23), a2) ) cocos2d::CCArray::addObject(*((cocos2d::CCArray **)this + 23), a2); if ( cocos2d::CCArray::count(*((cocos2d::CCArray **)this + 23)) == 1 ) { v8 = cocos2d::CCNode::convertTouchToNodeSpace(v3, &v24, a2); cocos2d::CCPoint::operator=((char *)this + 168, v8); *((_BYTE *)this + 136) = 0; *((_BYTE *)this + 116) = 1; cocos2d::CCPoint::CCPoint((cocos2d::CCPoint *)&v24, 0.0, 0.0); cocos2d::CCPoint::operator=((char *)this + 160, v9); *((_DWORD *)this + 44) = 0; return 1; } else { if ( cocos2d::CCArray::count(*((cocos2d::CCArray **)this + 23)) == 2 ) { v11 = cocos2d::CCArray::objectAtIndex(*((cocos2d::CCArray **)this + 23), 1u); v12 = cocos2d::CCNode::convertTouchToNodeSpace(v3, &v25, v11); v13 = cocos2d::CCArray::objectAtIndex(*((cocos2d::CCArray **)this + 23), 0); v14 = cocos2d::CCNode::convertTouchToNodeSpace(v3, v21, v13); v15 = cocos2d::CCPoint::operator+(v14, v22, v12); cocos2d::CCPoint::operator/(v15, &v24); cocos2d::CCPoint::operator=((char *)this + 168, &v24); v16 = cocos2d::CCArray::objectAtIndex(*((cocos2d::CCArray **)this + 23), 1u); v17 = (const struct cocos2d::CCPoint *)cocos2d::CCNode::convertTouchToNodeSpace(*((_QWORD *)this + 16), &v24, v16); v18 = cocos2d::CCArray::objectAtIndex(*((cocos2d::CCArray **)this + 23), 0); v19 = (cocos2d *)cocos2d::CCNode::convertTouchToNodeSpace(*((_QWORD *)this + 16), &v25, v18); *((float *)this + 44) = cocos2d::ccpDistance(v19, v17, v20); *((_BYTE *)this + 116) = 0; } return 1; } }