{"type": "func", "start": 6442468320, "end": 6442468794, "name": "cocos2d::extension::CCControl::sendActionsForControlEvents", "pseudocode": "// \n// cocos2d::extension::CCControl::sendActionsForControlEvents from 0x1800043e0 to 0x1800045ba (474 bytes)\n// \n// 12 xrefs:\n// > <???> @ 0x180023b20\n// > <???> @ 0x180024120\n// > <???> @ 0x180024690\n// > <???> @ 0x180024d98\n// > <???> @ 0x180025348\n// > <???> @ 0x180025930\n// > <???> @ 0x180025ee0\n// > <???> @ 0x1800264b0\n// > <???> @ 0x180026ad8\n// > <???> @ 0x180027f68\n// > <???> @ 0x18002fdf8\n// > <???> @ 0x1800493f0\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::sendActionsForControlEvents(\n        cocos2d::CCDictionary **this,\n        unsigned int a2)\n{\n  int i; // r14d\n  int v5; // ebp\n  struct cocos2d::CCObject *v6; // rbx\n  unsigned int *v7; // rbx\n  __int64 v8; // rax\n  __int64 *v9; // rbx\n  __int64 *j; // rdi\n  __int64 v11; // r8\n  __int64 v12; // rcx\n  void (__fastcall *v13)(__int64, cocos2d::CCDictionary **, _QWORD); // rax\n  unsigned int HandleOfControlEvent; // ebx\n  cocos2d::CCArray *v15; // rdi\n  struct cocos2d::CCObject *v16; // rax\n  void *v17; // rcx\n  struct cocos2d::CCObject *v18; // rax\n  _QWORD *v19; // rax\n  __int128 v20; // [rsp+20h] [rbp-58h] BYREF\n  __int64 v21; // [rsp+30h] [rbp-48h]\n  unsigned __int64 v22; // [rsp+38h] [rbp-40h]\n\n  for ( i = 0; i < 9; ++i )\n  {\n    v5 = 1 << i;\n    if ( ((1 << i) & a2) != 0 )\n    {\n      v6 = cocos2d::CCDictionary::objectForKey(*(this + 56), v5);\n      if ( !v6 )\n      {\n        v6 = cocos2d::CCArray::createWithCapacity(1u);\n        cocos2d::CCDictionary::setObject(*(this + 56), v6, (unsigned int)v5);\n      }\n      if ( v6 )\n      {\n        v7 = *((unsigned int **)v6 + 7);\n        v8 = *v7;\n        if ( (_DWORD)v8 )\n        {\n          v9 = *((__int64 **)v7 + 2);\n          for ( j = &v9[v8 - 1]; v9 <= j; ++v9 )\n          {\n            v11 = *v9;\n            if ( !*v9 )\n              break;\n            v12 = *(_QWORD *)(v11 + 64);\n            if ( v12 )\n            {\n              v13 = *(void (__fastcall **)(__int64, cocos2d::CCDictionary **, _QWORD))(v11 + 56);\n              if ( v13 )\n                v13(v12, this, *(unsigned int *)(v11 + 72));\n            }\n          }\n        }\n      }\n      if ( *((_DWORD *)this + 75) )\n      {\n        HandleOfControlEvent = cocos2d::extension::CCControl::getHandleOfControlEvent(\n                                 (cocos2d::extension::CCControl *)this,\n                                 a2);\n        if ( HandleOfControlEvent != -1 )\n        {\n          v15 = cocos2d::CCArray::createWithCapacity(3u);\n          v20 = 0;\n          v21 = 0;\n          v22 = 15;\n          LOBYTE(v20) = 0;\n          v16 = (struct cocos2d::CCObject *)cocos2d::CCString::create(&v20);\n          cocos2d::CCArray::addObject(v15, v16);\n          if ( v22 > 0xF )\n          {\n            v17 = (void *)v20;\n            if ( v22 + 1 >= 0x1000 )\n            {\n              v17 = *(void **)(v20 - 8);\n              if ( (unsigned __int64)(v20 - (_QWORD)v17 - 8) > 0x1F )\n                invalid_parameter_noinfo_noreturn();\n            }\n            j_j_free(v17);\n          }\n          cocos2d::CCArray::addObject(v15, (struct cocos2d::CCObject *)this);\n          v18 = cocos2d::CCInteger::create(v5);\n          cocos2d::CCArray::addObject(v15, v18);\n          v19 = (_QWORD *)cocos2d::CCScriptEngineManager::sharedManager();\n          (*(void (__fastcall **)(_QWORD, _QWORD, cocos2d::CCArray *))(*(_QWORD *)*v19 + 144LL))(\n            *v19,\n            HandleOfControlEvent,\n            v15);\n        }\n      }\n    }\n  }\n}", "assembly": "; \n; cocos2d::extension::CCControl::sendActionsForControlEvents from 0x1800043e0 to 0x1800045ba (474 bytes)\n; \n; 12 xrefs:\n; > <???> @ 0x180023b20\n; > <???> @ 0x180024120\n; > <???> @ 0x180024690\n; > <???> @ 0x180024d98\n; > <???> @ 0x180025348\n; > <???> @ 0x180025930\n; > <???> @ 0x180025ee0\n; > <???> @ 0x1800264b0\n; > <???> @ 0x180026ad8\n; > <???> @ 0x180027f68\n; > <???> @ 0x18002fdf8\n; > <???> @ 0x1800493f0\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_10], rbx                                              ; +0x0, 0x1800043e0\nmov     [rsp+arg_18], rbp                                              ; +0x5, 0x1800043e5\npush    rsi                                                            ; +0xa, 0x1800043ea\npush    rdi                                                            ; +0xb, 0x1800043eb\npush    r12                                                            ; +0xc, 0x1800043ec\npush    r14                                                            ; +0xe, 0x1800043ee\npush    r15                                                            ; +0x10, 0x1800043f0\nsub     rsp, 50h                                                       ; +0x12, 0x1800043f2\nmov     rax, cs:__security_cookie                                      ; +0x16, 0x1800043f6\nxor     rax, rsp                                                       ; +0x1d, 0x1800043fd\nmov     [rsp+78h+var_38], rax                                          ; +0x20, 0x180004400\nmov     r15d, edx                                                      ; +0x25, 0x180004405\nmov     rsi, rcx                                                       ; +0x28, 0x180004408\nxor     r12d, r12d                                                     ; +0x2b, 0x18000440b\nmov     r14d, r12d                                                     ; +0x2e, 0x18000440e\nmov     ecx, r14d                                                      ; +0x31, 0x180004411\nmov     ebp, 1                                                         ; +0x34, 0x180004414\nshl     ebp, cl                                                        ; +0x39, 0x180004419\ntest    r15d, ebp                                                      ; +0x3b, 0x18000441b\njz      loc_180004580                                                  ; +0x3e, 0x18000441e\nmovsxd  rdx, ebp                                                       ; +0x44, 0x180004424\nmov     rcx, [rsi+1C0h]                                                ; +0x47, 0x180004427\ncall    cs:?objectForKey@CCDictionary@cocos2d@@QEAAPEAVCCObject@2@_J@Z; cocos2d::CCDictionary::objectForKey(__int64) ; +0x4e, 0x18000442e\nmov     rbx, rax                                                       ; +0x54, 0x180004434\ntest    rax, rax                                                       ; +0x57, 0x180004437\njnz     short loc_18000445B                                            ; +0x5a, 0x18000443a\nlea     ecx, [rax+1]                                                   ; +0x5c, 0x18000443c\ncall    cs:?createWithCapacity@CCArray@cocos2d@@SAPEAV12@I@Z; cocos2d::CCArray::createWithCapacity(uint) ; +0x5f, 0x18000443f\nmov     rbx, rax                                                       ; +0x65, 0x180004445\nmov     r8d, ebp                                                       ; +0x68, 0x180004448\nmov     rdx, rax                                                       ; +0x6b, 0x18000444b\nmov     rcx, [rsi+1C0h]                                                ; +0x6e, 0x18000444e\ncall    cs:?setObject@CCDictionary@cocos2d@@QEAAXPEAVCCObject@2@_J@Z; cocos2d::CCDictionary::setObject(cocos2d::CCObject *,__int64) ; +0x75, 0x180004455\ntest    rbx, rbx                                                       ; +0x7b, 0x18000445b\njz      short loc_1800044AC                                            ; +0x7e, 0x18000445e\nmov     rbx, [rbx+38h]                                                 ; +0x80, 0x180004460\nmov     eax, [rbx]                                                     ; +0x84, 0x180004464\ntest    eax, eax                                                       ; +0x86, 0x180004466\njz      short loc_1800044AC                                            ; +0x88, 0x180004468\nmov     rbx, [rbx+10h]                                                 ; +0x8a, 0x18000446a\nlea     rdi, [rax-1]                                                   ; +0x8e, 0x18000446e\nlea     rdi, [rbx+rdi*8]                                               ; +0x92, 0x180004472\ncmp     rbx, rdi                                                       ; +0x96, 0x180004476\nja      short loc_1800044AC                                            ; +0x99, 0x180004479\nnop     dword ptr [rax+rax+00h]                                        ; +0x9b, 0x18000447b\nmov     r8, [rbx]                                                      ; +0xa0, 0x180004480\ntest    r8, r8                                                         ; +0xa3, 0x180004483\njz      short loc_1800044AC                                            ; +0xa6, 0x180004486\nmov     rcx, [r8+40h]                                                  ; +0xa8, 0x180004488\ntest    rcx, rcx                                                       ; +0xac, 0x18000448c\njz      short loc_1800044A3                                            ; +0xaf, 0x18000448f\nmov     rax, [r8+38h]                                                  ; +0xb1, 0x180004491\ntest    rax, rax                                                       ; +0xb5, 0x180004495\njz      short loc_1800044A3                                            ; +0xb8, 0x180004498\nmov     r8d, [r8+48h]                                                  ; +0xba, 0x18000449a\nmov     rdx, rsi                                                       ; +0xbe, 0x18000449e\ncall    rax                                                            ; +0xc1, 0x1800044a1\nadd     rbx, 8                                                         ; +0xc3, 0x1800044a3\ncmp     rbx, rdi                                                       ; +0xc7, 0x1800044a7\njbe     short loc_180004480                                            ; +0xca, 0x1800044aa\ncmp     dword ptr [rsi+12Ch], 0                                        ; +0xcc, 0x1800044ac\njz      loc_180004580                                                  ; +0xd3, 0x1800044b3\nmov     edx, r15d; unsigned int                                        ; +0xd9, 0x1800044b9\nmov     rcx, rsi; this                                                 ; +0xdc, 0x1800044bc\ncall    ?getHandleOfControlEvent@CCControl@extension@cocos2d@@AEAAHI@Z; cocos2d::extension::CCControl::getHandleOfControlEvent(uint) ; +0xdf, 0x1800044bf\nmov     ebx, eax                                                       ; +0xe4, 0x1800044c4\ncmp     eax, 0FFFFFFFFh                                                ; +0xe6, 0x1800044c6\njz      loc_180004580                                                  ; +0xe9, 0x1800044c9\nmov     ecx, 3                                                         ; +0xef, 0x1800044cf\ncall    cs:?createWithCapacity@CCArray@cocos2d@@SAPEAV12@I@Z; cocos2d::CCArray::createWithCapacity(uint) ; +0xf4, 0x1800044d4\nmov     rdi, rax                                                       ; +0xfa, 0x1800044da\nxorps   xmm0, xmm0                                                     ; +0xfd, 0x1800044dd\nmovups  [rsp+78h+var_58], xmm0                                         ; +0x100, 0x1800044e0\nmov     [rsp+78h+var_48], r12                                          ; +0x105, 0x1800044e5\nmov     [rsp+78h+var_40], 0Fh                                          ; +0x10a, 0x1800044ea\nmov     byte ptr [rsp+78h+var_58], 0                                   ; +0x113, 0x1800044f3\nlea     rcx, [rsp+78h+var_58]                                          ; +0x118, 0x1800044f8\ncall    cs:?create@CCString@cocos2d@@SAPEAV12@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z; cocos2d::CCString::create(std::string const &) ; +0x11d, 0x1800044fd\nmov     rdx, rax                                                       ; +0x123, 0x180004503\nmov     rcx, rdi                                                       ; +0x126, 0x180004506\ncall    cs:?addObject@CCArray@cocos2d@@QEAAXPEAVCCObject@2@@Z; cocos2d::CCArray::addObject(cocos2d::CCObject *) ; +0x129, 0x180004509\nnop                                                                    ; +0x12f, 0x18000450f\nmov     rdx, [rsp+78h+var_40]                                          ; +0x130, 0x180004510\ncmp     rdx, 0Fh                                                       ; +0x135, 0x180004515\njbe     short loc_180004549                                            ; +0x139, 0x180004519\ninc     rdx                                                            ; +0x13b, 0x18000451b\nmov     rcx, qword ptr [rsp+78h+var_58]                                ; +0x13e, 0x18000451e\nmov     rax, rcx                                                       ; +0x143, 0x180004523\ncmp     rdx, 1000h                                                     ; +0x146, 0x180004526\njb      short loc_180004544                                            ; +0x14d, 0x18000452d\nadd     rdx, 27h ; '''                                                 ; +0x14f, 0x18000452f\nmov     rcx, [rcx-8]; Block                                            ; +0x153, 0x180004533\nsub     rax, rcx                                                       ; +0x157, 0x180004537\nadd     rax, 0FFFFFFFFFFFFFFF8h                                        ; +0x15a, 0x18000453a\ncmp     rax, 1Fh                                                       ; +0x15e, 0x18000453e\nja      short loc_1800045B3                                            ; +0x162, 0x180004542\ncall    j_j_free                                                       ; +0x164, 0x180004544\nmov     rdx, rsi                                                       ; +0x169, 0x180004549\nmov     rcx, rdi                                                       ; +0x16c, 0x18000454c\ncall    cs:?addObject@CCArray@cocos2d@@QEAAXPEAVCCObject@2@@Z; cocos2d::CCArray::addObject(cocos2d::CCObject *) ; +0x16f, 0x18000454f\nmov     ecx, ebp                                                       ; +0x175, 0x180004555\ncall    cs:?create@CCInteger@cocos2d@@SAPEAV12@H@Z; cocos2d::CCInteger::create(int) ; +0x177, 0x180004557\nmov     rdx, rax                                                       ; +0x17d, 0x18000455d\nmov     rcx, rdi                                                       ; +0x180, 0x180004560\ncall    cs:?addObject@CCArray@cocos2d@@QEAAXPEAVCCObject@2@@Z; cocos2d::CCArray::addObject(cocos2d::CCObject *) ; +0x183, 0x180004563\ncall    cs:?sharedManager@CCScriptEngineManager@cocos2d@@SAPEAV12@XZ; cocos2d::CCScriptEngineManager::sharedManager(void) ; +0x189, 0x180004569\nmov     rcx, [rax]                                                     ; +0x18f, 0x18000456f\nmov     rax, [rcx]                                                     ; +0x192, 0x180004572\nmov     r8, rdi                                                        ; +0x195, 0x180004575\nmov     edx, ebx                                                       ; +0x198, 0x180004578\ncall    qword ptr [rax+90h]                                            ; +0x19a, 0x18000457a\ninc     r14d                                                           ; +0x1a0, 0x180004580\ncmp     r14d, 9                                                        ; +0x1a3, 0x180004583\njl      loc_180004411                                                  ; +0x1a7, 0x180004587\nmov     rcx, [rsp+78h+var_38]                                          ; +0x1ad, 0x18000458d\nxor     rcx, rsp; StackCookie                                          ; +0x1b2, 0x180004592\ncall    __security_check_cookie                                        ; +0x1b5, 0x180004595\nlea     r11, [rsp+78h+var_28]                                          ; +0x1ba, 0x18000459a\nmov     rbx, [r11+40h]                                                 ; +0x1bf, 0x18000459f\nmov     rbp, [r11+48h]                                                 ; +0x1c3, 0x1800045a3\nmov     rsp, r11                                                       ; +0x1c7, 0x1800045a7\npop     r15                                                            ; +0x1ca, 0x1800045aa\npop     r14                                                            ; +0x1cc, 0x1800045ac\npop     r12                                                            ; +0x1ce, 0x1800045ae\npop     rdi                                                            ; +0x1d0, 0x1800045b0\npop     rsi                                                            ; +0x1d1, 0x1800045b1\nretn                                                                   ; +0x1d2, 0x1800045b2\ncall    cs:_invalid_parameter_noinfo_noreturn                          ; +0x1d3, 0x1800045b3\ndb 0CCh                                                                ; +0x1d9, 0x1800045b9", "xrefs": ["<???> @ 0x180023b20", "<???> @ 0x180024120", "<???> @ 0x180024690", "<???> @ 0x180024d98", "<???> @ 0x180025348", "<???> @ 0x180025930", "<???> @ 0x180025ee0", "<???> @ 0x1800264b0", "<???> @ 0x180026ad8", "<???> @ 0x180027f68", "<???> @ 0x18002fdf8", "<???> @ 0x1800493f0"], "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"}