{"type": "func", "start": 6442469616, "end": 6442469778, "name": "cocos2d::extension::CCControl::setOpacityModifyRGB", "pseudocode": "// \n// cocos2d::extension::CCControl::setOpacityModifyRGB from 0x1800048f0 to 0x180004992 (162 bytes)\n// \n// 14 xrefs:\n// > <???> @ 0x1800235e8\n// > <???> @ 0x180023be8\n// > <???> @ 0x1800247b8\n// > <???> @ 0x180024860\n// > <???> @ 0x180024e10\n// > <???> @ 0x1800253f8\n// > <???> @ 0x1800259a8\n// > <???> @ 0x180025f78\n// > <???> @ 0x1800265a0\n// > <???> @ 0x180027a30\n// > <???> @ 0x18002d564\n// > <???> @ 0x18002d5bc\n// > <???> @ 0x18002fdf8\n// > <???> @ 0x18004942c\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::setOpacityModifyRGB(\n        cocos2d::extension::CCControl *this,\n        unsigned __int8 a2)\n{\n  __int64 v3; // rax\n  unsigned int *v4; // rbx\n  __int64 v5; // rax\n  _QWORD *v6; // rbx\n  _QWORD *i; // rdi\n  __int64 v8; // rax\n\n  *((_BYTE *)this + 24) = a2;\n  v3 = (*(__int64 (__fastcall **)(char *))(*((_QWORD *)this - 51) + 464LL))((char *)this - 408);\n  if ( v3 )\n  {\n    v4 = *(unsigned int **)(v3 + 56);\n    v5 = *v4;\n    if ( (_DWORD)v5 )\n    {\n      v6 = *((_QWORD **)v4 + 2);\n      for ( i = &v6[v5 - 1]; v6 <= i; ++v6 )\n      {\n        if ( !*v6 )\n          break;\n        v8 = _RTDynamicCast(\n               *v6,\n               0,\n               &cocos2d::CCObject `RTTI Type Descriptor',\n               &cocos2d::CCRGBAProtocol `RTTI Type Descriptor',\n               0);\n        if ( v8 )\n          (*(void (__fastcall **)(__int64, _QWORD))(*(_QWORD *)v8 + 48LL))(v8, a2);\n      }\n    }\n  }\n}", "assembly": "; \n; cocos2d::extension::CCControl::setOpacityModifyRGB from 0x1800048f0 to 0x180004992 (162 bytes)\n; \n; 14 xrefs:\n; > <???> @ 0x1800235e8\n; > <???> @ 0x180023be8\n; > <???> @ 0x1800247b8\n; > <???> @ 0x180024860\n; > <???> @ 0x180024e10\n; > <???> @ 0x1800253f8\n; > <???> @ 0x1800259a8\n; > <???> @ 0x180025f78\n; > <???> @ 0x1800265a0\n; > <???> @ 0x180027a30\n; > <???> @ 0x18002d564\n; > <???> @ 0x18002d5bc\n; > <???> @ 0x18002fdf8\n; > <???> @ 0x18004942c\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\npush    rsi                                                            ; +0x0, 0x1800048f0\nsub     rsp, 30h                                                       ; +0x2, 0x1800048f2\nmov     [rcx+18h], dl                                                  ; +0x6, 0x1800048f6\nmovzx   esi, dl                                                        ; +0x9, 0x1800048f9\nadd     rcx, 0FFFFFFFFFFFFFE68h                                        ; +0xc, 0x1800048fc\nmov     rax, [rcx]                                                     ; +0x13, 0x180004903\ncall    qword ptr [rax+1D0h]                                           ; +0x16, 0x180004906\ntest    rax, rax                                                       ; +0x1c, 0x18000490c\njz      short loc_18000498C                                            ; +0x1f, 0x18000490f\nmov     [rsp+38h+arg_0], rbx                                           ; +0x21, 0x180004911\nmov     rbx, [rax+38h]                                                 ; +0x26, 0x180004916\nmov     eax, [rbx]                                                     ; +0x2a, 0x18000491a\ntest    eax, eax                                                       ; +0x2c, 0x18000491c\njz      short loc_180004987                                            ; +0x2e, 0x18000491e\nmov     rbx, [rbx+10h]                                                 ; +0x30, 0x180004920\nmov     [rsp+38h+arg_10], rdi                                          ; +0x34, 0x180004924\nlea     rdi, [rax-1]                                                   ; +0x39, 0x180004929\nlea     rdi, [rbx+rdi*8]                                               ; +0x3d, 0x18000492d\ncmp     rbx, rdi                                                       ; +0x41, 0x180004931\nja      short loc_180004982                                            ; +0x44, 0x180004934\nmov     [rsp+38h+arg_8], rbp                                           ; +0x46, 0x180004936\nxor     ebp, ebp                                                       ; +0x4b, 0x18000493b\nnop     dword ptr [rax]                                                ; +0x4d, 0x18000493d\nmov     rcx, [rbx]                                                     ; +0x50, 0x180004940\ntest    rcx, rcx                                                       ; +0x53, 0x180004943\njz      short loc_18000497D                                            ; +0x56, 0x180004946\nlea     r9, ??_R0?AVCCRGBAProtocol@cocos2d@@@8; cocos2d::CCRGBAProtocol `RTTI Type Descriptor' ; +0x58, 0x180004948\nmov     [rsp+38h+var_18], ebp                                          ; +0x5f, 0x18000494f\nlea     r8, ??_R0?AVCCObject@cocos2d@@@8; cocos2d::CCObject `RTTI Type Descriptor' ; +0x63, 0x180004953\nxor     edx, edx                                                       ; +0x6a, 0x18000495a\ncall    __RTDynamicCast                                                ; +0x6c, 0x18000495c\ntest    rax, rax                                                       ; +0x71, 0x180004961\njz      short loc_180004974                                            ; +0x74, 0x180004964\nmov     r8, [rax]                                                      ; +0x76, 0x180004966\nmovzx   edx, sil                                                       ; +0x79, 0x180004969\nmov     rcx, rax                                                       ; +0x7d, 0x18000496d\ncall    qword ptr [r8+30h]                                             ; +0x80, 0x180004970\nadd     rbx, 8                                                         ; +0x84, 0x180004974\ncmp     rbx, rdi                                                       ; +0x88, 0x180004978\njbe     short loc_180004940                                            ; +0x8b, 0x18000497b\nmov     rbp, [rsp+38h+arg_8]                                           ; +0x8d, 0x18000497d\nmov     rdi, [rsp+38h+arg_10]                                          ; +0x92, 0x180004982\nmov     rbx, [rsp+38h+arg_0]                                           ; +0x97, 0x180004987\nadd     rsp, 30h                                                       ; +0x9c, 0x18000498c\npop     rsi                                                            ; +0xa0, 0x180004990\nretn                                                                   ; +0xa1, 0x180004991", "xrefs": ["<???> @ 0x1800235e8", "<???> @ 0x180023be8", "<???> @ 0x1800247b8", "<???> @ 0x180024860", "<???> @ 0x180024e10", "<???> @ 0x1800253f8", "<???> @ 0x1800259a8", "<???> @ 0x180025f78", "<???> @ 0x1800265a0", "<???> @ 0x180027a30", "<???> @ 0x18002d564", "<???> @ 0x18002d5bc", "<???> @ 0x18002fdf8", "<???> @ 0x18004942c"], "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"}