{"type": "func", "start": 6442469376, "end": 6442469613, "name": "cocos2d::extension::CCControl::removeTargetWithActionForControlEvent", "pseudocode": "// \n// cocos2d::extension::CCControl::removeTargetWithActionForControlEvent from 0x180004800 to 0x1800048ed (237 bytes)\n// \n// 2 xrefs:\n// > <???> @ 0x18002fdf8\n// > <???> @ 0x180049420\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\nvoid __fastcall cocos2d::extension::CCControl::removeTargetWithActionForControlEvent(\n        __int64 a1,\n        __int64 a2,\n        __int64 a3,\n        unsigned int a4)\n{\n  struct cocos2d::CCObject *v8; // rbp\n  unsigned int *v9; // rbx\n  __int64 v10; // rax\n  struct cocos2d::CCObject **v11; // rbx\n  struct cocos2d::CCObject **v12; // r14\n  struct cocos2d::CCObject *v13; // rdx\n  bool v14; // al\n\n  v8 = cocos2d::CCDictionary::objectForKey(*(cocos2d::CCDictionary **)(a1 + 448), (int)a4);\n  if ( !v8 )\n  {\n    v8 = cocos2d::CCArray::createWithCapacity(1u);\n    cocos2d::CCDictionary::setObject(*(cocos2d::CCDictionary **)(a1 + 448), v8, a4);\n  }\n  if ( !a2 && !a3 )\n  {\n    cocos2d::CCArray::removeAllObjects(v8);\n    return;\n  }\n  if ( v8 )\n  {\n    v9 = *((unsigned int **)v8 + 7);\n    v10 = *v9;\n    if ( (_DWORD)v10 )\n    {\n      v11 = *((struct cocos2d::CCObject ***)v9 + 2);\n      v12 = &v11[v10 - 1];\n      if ( v11 <= v12 )\n      {\n        while ( 1 )\n        {\n          v13 = *v11;\n          if ( !*v11 )\n            return;\n          v14 = 1;\n          if ( a2 )\n            v14 = a2 == *((_QWORD *)v13 + 8);\n          if ( a3 )\n            break;\n          if ( v14 )\n            goto LABEL_17;\nLABEL_18:\n          if ( ++v11 > v12 )\n            return;\n        }\n        if ( !v14 || a3 != *((_QWORD *)v13 + 7) )\n          goto LABEL_18;\nLABEL_17:\n        cocos2d::CCArray::removeObject(v8, v13, 1);\n        goto LABEL_18;\n      }\n    }\n  }\n}", "assembly": "; \n; cocos2d::extension::CCControl::removeTargetWithActionForControlEvent from 0x180004800 to 0x1800048ed (237 bytes)\n; \n; 2 xrefs:\n; > <???> @ 0x18002fdf8\n; > <???> @ 0x180049420\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_0], rbx                                               ; +0x0, 0x180004800\nmov     [rsp+arg_8], rbp                                               ; +0x5, 0x180004805\nmov     [rsp+arg_10], rsi                                              ; +0xa, 0x18000480a\nmov     [rsp+arg_18], rdi                                              ; +0xf, 0x18000480f\npush    r14                                                            ; +0x14, 0x180004814\nsub     rsp, 20h                                                       ; +0x16, 0x180004816\nmov     rsi, rdx                                                       ; +0x1a, 0x18000481a\nmov     ebx, r9d                                                       ; +0x1d, 0x18000481d\nmov     r14, rcx                                                       ; +0x20, 0x180004820\nmovsxd  rdx, r9d                                                       ; +0x23, 0x180004823\nmov     rcx, [rcx+1C0h]                                                ; +0x26, 0x180004826\nmov     rdi, r8                                                        ; +0x2d, 0x18000482d\ncall    cs:?objectForKey@CCDictionary@cocos2d@@QEAAPEAVCCObject@2@_J@Z; cocos2d::CCDictionary::objectForKey(__int64) ; +0x30, 0x180004830\nmov     rbp, rax                                                       ; +0x36, 0x180004836\ntest    rax, rax                                                       ; +0x39, 0x180004839\njnz     short loc_18000485D                                            ; +0x3c, 0x18000483c\nlea     ecx, [rax+1]                                                   ; +0x3e, 0x18000483e\ncall    cs:?createWithCapacity@CCArray@cocos2d@@SAPEAV12@I@Z; cocos2d::CCArray::createWithCapacity(uint) ; +0x41, 0x180004841\nmov     rcx, [r14+1C0h]                                                ; +0x47, 0x180004847\nmov     r8d, ebx                                                       ; +0x4e, 0x18000484e\nmov     rdx, rax                                                       ; +0x51, 0x180004851\nmov     rbp, rax                                                       ; +0x54, 0x180004854\ncall    cs:?setObject@CCDictionary@cocos2d@@QEAAXPEAVCCObject@2@_J@Z; cocos2d::CCDictionary::setObject(cocos2d::CCObject *,__int64) ; +0x57, 0x180004857\ntest    rsi, rsi                                                       ; +0x5d, 0x18000485d\njnz     short loc_180004872                                            ; +0x60, 0x180004860\ntest    rdi, rdi                                                       ; +0x62, 0x180004862\njnz     short loc_180004872                                            ; +0x65, 0x180004865\nmov     rcx, rbp                                                       ; +0x67, 0x180004867\ncall    cs:?removeAllObjects@CCArray@cocos2d@@QEAAXXZ; cocos2d::CCArray::removeAllObjects(void) ; +0x6a, 0x18000486a\njmp     short loc_1800048D2                                            ; +0x70, 0x180004870\ntest    rbp, rbp                                                       ; +0x72, 0x180004872\njz      short loc_1800048D2                                            ; +0x75, 0x180004875\nmov     rbx, [rbp+38h]                                                 ; +0x77, 0x180004877\nmov     eax, [rbx]                                                     ; +0x7b, 0x18000487b\ntest    eax, eax                                                       ; +0x7d, 0x18000487d\njz      short loc_1800048D2                                            ; +0x7f, 0x18000487f\nmov     rbx, [rbx+10h]                                                 ; +0x81, 0x180004881\nlea     r14, [rax-1]                                                   ; +0x85, 0x180004885\nlea     r14, [rbx+r14*8]                                               ; +0x89, 0x180004889\ncmp     rbx, r14                                                       ; +0x8d, 0x18000488d\nja      short loc_1800048D2                                            ; +0x90, 0x180004890\nmov     rdx, [rbx]                                                     ; +0x92, 0x180004892\ntest    rdx, rdx                                                       ; +0x95, 0x180004895\njz      short loc_1800048D2                                            ; +0x98, 0x180004898\nmov     al, 1                                                          ; +0x9a, 0x18000489a\ntest    rsi, rsi                                                       ; +0x9c, 0x18000489c\njz      short loc_1800048A8                                            ; +0x9f, 0x18000489f\ncmp     rsi, [rdx+40h]                                                 ; +0xa1, 0x1800048a1\nsetz    al                                                             ; +0xa5, 0x1800048a5\ntest    rdi, rdi                                                       ; +0xa8, 0x1800048a8\njz      short loc_1800048B9                                            ; +0xab, 0x1800048ab\ntest    al, al                                                         ; +0xad, 0x1800048ad\njz      short loc_1800048C9                                            ; +0xaf, 0x1800048af\ncmp     rdi, [rdx+38h]                                                 ; +0xb1, 0x1800048b1\njnz     short loc_1800048C9                                            ; +0xb5, 0x1800048b5\njmp     short loc_1800048BD                                            ; +0xb7, 0x1800048b7\ntest    al, al                                                         ; +0xb9, 0x1800048b9\njz      short loc_1800048C9                                            ; +0xbb, 0x1800048bb\nmov     r8b, 1                                                         ; +0xbd, 0x1800048bd\nmov     rcx, rbp                                                       ; +0xc0, 0x1800048c0\ncall    cs:?removeObject@CCArray@cocos2d@@QEAAXPEAVCCObject@2@_N@Z; cocos2d::CCArray::removeObject(cocos2d::CCObject *,bool) ; +0xc3, 0x1800048c3\nadd     rbx, 8                                                         ; +0xc9, 0x1800048c9\ncmp     rbx, r14                                                       ; +0xcd, 0x1800048cd\njbe     short loc_180004892                                            ; +0xd0, 0x1800048d0\nmov     rbx, [rsp+28h+arg_0]                                           ; +0xd2, 0x1800048d2\nmov     rbp, [rsp+28h+arg_8]                                           ; +0xd7, 0x1800048d7\nmov     rsi, [rsp+28h+arg_10]                                          ; +0xdc, 0x1800048dc\nmov     rdi, [rsp+28h+arg_18]                                          ; +0xe1, 0x1800048e1\nadd     rsp, 20h                                                       ; +0xe6, 0x1800048e6\npop     r14                                                            ; +0xea, 0x1800048ea\nretn                                                                   ; +0xec, 0x1800048ec", "xrefs": ["<???> @ 0x18002fdf8", "<???> @ 0x180049420"], "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"}