// // cocos2d::extension::CCControl::sendActionsForControlEvents from 0x1800043e0 to 0x1800045ba (474 bytes) // // 12 xrefs: // > @ 0x180023b20 // > @ 0x180024120 // > @ 0x180024690 // > @ 0x180024d98 // > @ 0x180025348 // > @ 0x180025930 // > @ 0x180025ee0 // > @ 0x1800264b0 // > @ 0x180026ad8 // > @ 0x180027f68 // > @ 0x18002fdf8 // > @ 0x1800493f0 // // 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 // // Hidden C++ exception states: #wind=1 void __fastcall cocos2d::extension::CCControl::sendActionsForControlEvents( cocos2d::CCDictionary **this, unsigned int a2) { int i; // r14d int v5; // ebp struct cocos2d::CCObject *v6; // rbx unsigned int *v7; // rbx __int64 v8; // rax __int64 *v9; // rbx __int64 *j; // rdi __int64 v11; // r8 __int64 v12; // rcx void (__fastcall *v13)(__int64, cocos2d::CCDictionary **, _QWORD); // rax unsigned int HandleOfControlEvent; // ebx cocos2d::CCArray *v15; // rdi struct cocos2d::CCObject *v16; // rax void *v17; // rcx struct cocos2d::CCObject *v18; // rax _QWORD *v19; // rax __int128 v20; // [rsp+20h] [rbp-58h] BYREF __int64 v21; // [rsp+30h] [rbp-48h] unsigned __int64 v22; // [rsp+38h] [rbp-40h] for ( i = 0; i < 9; ++i ) { v5 = 1 << i; if ( ((1 << i) & a2) != 0 ) { v6 = cocos2d::CCDictionary::objectForKey(*(this + 56), v5); if ( !v6 ) { v6 = cocos2d::CCArray::createWithCapacity(1u); cocos2d::CCDictionary::setObject(*(this + 56), v6, (unsigned int)v5); } if ( v6 ) { v7 = *((unsigned int **)v6 + 7); v8 = *v7; if ( (_DWORD)v8 ) { v9 = *((__int64 **)v7 + 2); for ( j = &v9[v8 - 1]; v9 <= j; ++v9 ) { v11 = *v9; if ( !*v9 ) break; v12 = *(_QWORD *)(v11 + 64); if ( v12 ) { v13 = *(void (__fastcall **)(__int64, cocos2d::CCDictionary **, _QWORD))(v11 + 56); if ( v13 ) v13(v12, this, *(unsigned int *)(v11 + 72)); } } } } if ( *((_DWORD *)this + 75) ) { HandleOfControlEvent = cocos2d::extension::CCControl::getHandleOfControlEvent( (cocos2d::extension::CCControl *)this, a2); if ( HandleOfControlEvent != -1 ) { v15 = cocos2d::CCArray::createWithCapacity(3u); v20 = 0; v21 = 0; v22 = 15; LOBYTE(v20) = 0; v16 = (struct cocos2d::CCObject *)cocos2d::CCString::create(&v20); cocos2d::CCArray::addObject(v15, v16); if ( v22 > 0xF ) { v17 = (void *)v20; if ( v22 + 1 >= 0x1000 ) { v17 = *(void **)(v20 - 8); if ( (unsigned __int64)(v20 - (_QWORD)v17 - 8) > 0x1F ) invalid_parameter_noinfo_noreturn(); } j_j_free(v17); } cocos2d::CCArray::addObject(v15, (struct cocos2d::CCObject *)this); v18 = cocos2d::CCInteger::create(v5); cocos2d::CCArray::addObject(v15, v18); v19 = (_QWORD *)cocos2d::CCScriptEngineManager::sharedManager(); (*(void (__fastcall **)(_QWORD, _QWORD, cocos2d::CCArray *))(*(_QWORD *)*v19 + 144LL))( *v19, HandleOfControlEvent, v15); } } } } }