{"type": "func", "start": 6442468912, "end": 6442469085, "name": "cocos2d::extension::CCControl::addTargetWithActionForControlEvent", "pseudocode": "// \n// cocos2d::extension::CCControl::addTargetWithActionForControlEvent from 0x180004630 to 0x1800046dd (173 bytes)\n// \n// 3 xrefs:\n// > cocos2d::extension::CCControl::addTargetWithActionForControlEvents @ 0x180004600\n// > <???> @ 0x18002fdf8\n// > <???> @ 0x180049408\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\n// Hidden C++ exception states: #wind=1\nvoid __fastcall cocos2d::extension::CCControl::addTargetWithActionForControlEvent(\n        __int64 a1,\n        __int64 a2,\n        __int64 a3,\n        unsigned int a4)\n{\n  cocos2d::CCObject *v8; // rsi\n  struct cocos2d::CCObject *v9; // rbx\n\n  v8 = (cocos2d::CCObject *)operator new(0x50u);\n  cocos2d::CCObject::CCObject(v8);\n  *(_QWORD *)v8 = &cocos2d::extension::CCInvocation::`vftable';\n  *((_QWORD *)v8 + 8) = a2;\n  *((_QWORD *)v8 + 7) = a3;\n  *((_DWORD *)v8 + 18) = a4;\n  cocos2d::CCObject::autorelease(v8);\n  v9 = cocos2d::CCDictionary::objectForKey(*(cocos2d::CCDictionary **)(a1 + 448), (int)a4);\n  if ( !v9 )\n  {\n    v9 = cocos2d::CCArray::createWithCapacity(1u);\n    cocos2d::CCDictionary::setObject(*(cocos2d::CCDictionary **)(a1 + 448), v9, a4);\n  }\n  cocos2d::CCArray::addObject(v9, v8);\n}", "assembly": "; \n; cocos2d::extension::CCControl::addTargetWithActionForControlEvent from 0x180004630 to 0x1800046dd (173 bytes)\n; \n; 3 xrefs:\n; > cocos2d::extension::CCControl::addTargetWithActionForControlEvents @ 0x180004600\n; > <???> @ 0x18002fdf8\n; > <???> @ 0x180049408\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_8], rbx                                               ; +0x0, 0x180004630\nmov     [rsp+arg_10], rbp                                              ; +0x5, 0x180004635\npush    rsi                                                            ; +0xa, 0x18000463a\npush    rdi                                                            ; +0xb, 0x18000463b\npush    r14                                                            ; +0xc, 0x18000463c\nsub     rsp, 20h                                                       ; +0xe, 0x18000463e\nmov     ebp, r9d                                                       ; +0x12, 0x180004642\nmov     rdi, r8                                                        ; +0x15, 0x180004645\nmov     rbx, rdx                                                       ; +0x18, 0x180004648\nmov     r14, rcx                                                       ; +0x1b, 0x18000464b\nmov     ecx, 50h ; 'P'; Size                                           ; +0x1e, 0x18000464e\ncall    ??2@YAPEAX_K@Z; operator new(unsigned __int64)                 ; +0x23, 0x180004653\nmov     rsi, rax                                                       ; +0x28, 0x180004658\nmov     [rsp+38h+arg_0], rax                                           ; +0x2b, 0x18000465b\nmov     rcx, rax                                                       ; +0x30, 0x180004660\ncall    cs:??0CCObject@cocos2d@@QEAA@XZ; cocos2d::CCObject::CCObject(void) ; +0x33, 0x180004663\nlea     rax, ??_7CCInvocation@extension@cocos2d@@6B@; const cocos2d::extension::CCInvocation::`vftable' ; +0x39, 0x180004669\nmov     [rsi], rax                                                     ; +0x40, 0x180004670\nmov     [rsi+40h], rbx                                                 ; +0x43, 0x180004673\nmov     [rsi+38h], rdi                                                 ; +0x47, 0x180004677\nmov     [rsi+48h], ebp                                                 ; +0x4b, 0x18000467b\nmov     rcx, rsi                                                       ; +0x4e, 0x18000467e\ncall    cs:?autorelease@CCObject@cocos2d@@QEAAPEAV12@XZ; cocos2d::CCObject::autorelease(void) ; +0x51, 0x180004681\nmovsxd  rdx, ebp                                                       ; +0x57, 0x180004687\nmov     rcx, [r14+1C0h]                                                ; +0x5a, 0x18000468a\ncall    cs:?objectForKey@CCDictionary@cocos2d@@QEAAPEAVCCObject@2@_J@Z; cocos2d::CCDictionary::objectForKey(__int64) ; +0x61, 0x180004691\nmov     rbx, rax                                                       ; +0x67, 0x180004697\ntest    rax, rax                                                       ; +0x6a, 0x18000469a\njnz     short loc_1800046BE                                            ; +0x6d, 0x18000469d\nlea     ecx, [rax+1]                                                   ; +0x6f, 0x18000469f\ncall    cs:?createWithCapacity@CCArray@cocos2d@@SAPEAV12@I@Z; cocos2d::CCArray::createWithCapacity(uint) ; +0x72, 0x1800046a2\nmov     rbx, rax                                                       ; +0x78, 0x1800046a8\nmov     r8d, ebp                                                       ; +0x7b, 0x1800046ab\nmov     rdx, rax                                                       ; +0x7e, 0x1800046ae\nmov     rcx, [r14+1C0h]                                                ; +0x81, 0x1800046b1\ncall    cs:?setObject@CCDictionary@cocos2d@@QEAAXPEAVCCObject@2@_J@Z; cocos2d::CCDictionary::setObject(cocos2d::CCObject *,__int64) ; +0x88, 0x1800046b8\nmov     rdx, rsi                                                       ; +0x8e, 0x1800046be\nmov     rcx, rbx                                                       ; +0x91, 0x1800046c1\nmov     rbx, [rsp+38h+arg_8]                                           ; +0x94, 0x1800046c4\nmov     rbp, [rsp+38h+arg_10]                                          ; +0x99, 0x1800046c9\nadd     rsp, 20h                                                       ; +0x9e, 0x1800046ce\npop     r14                                                            ; +0xa2, 0x1800046d2\npop     rdi                                                            ; +0xa4, 0x1800046d4\npop     rsi                                                            ; +0xa5, 0x1800046d5\njmp     cs:?addObject@CCArray@cocos2d@@QEAAXPEAVCCObject@2@@Z; cocos2d::CCArray::addObject(cocos2d::CCObject *) ; +0xa6, 0x1800046d6", "xrefs": ["cocos2d::extension::CCControl::addTargetWithActionForControlEvents @ 0x180004600", "<???> @ 0x18002fdf8", "<???> @ 0x180049408"], "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"}