{"type": "func", "start": 6442470816, "end": 6442471419, "name": "sub_180004DA0", "pseudocode": "// \n// sub_180004DA0 from 0x180004da0 to 0x180004ffb (603 bytes)\n// \n// 3 xrefs:\n// > cocos2d::extension::CCControl::addHandleOfControlEvent @ 0x180004c76\n// > cocos2d::extension::CCScrollView::registerScriptHandler @ 0x180014296\n// > cocos2d::extension::CCTableView::_addCellIfNecessary @ 0x180015951\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__int64 __fastcall sub_180004DA0(_QWORD *a1, __int64 a2, __int64 a3)\n{\n  _QWORD *v4; // r11\n  _QWORD *v6; // rax\n  _QWORD *v8; // rax\n  __int64 v9; // rdx\n  __int64 *v10; // r8\n  __int64 v11; // rcx\n  __int64 v12; // rcx\n  _QWORD *v13; // r8\n  _QWORD *v14; // rcx\n  _QWORD *v15; // rdx\n  _QWORD *v16; // r8\n  __int64 v17; // rcx\n  _QWORD *v18; // rcx\n  _QWORD *v19; // r8\n  __int64 v20; // rcx\n  _QWORD *v21; // rcx\n  _QWORD *v22; // rcx\n\n  ++a1[1];\n  v4 = (_QWORD *)*a1;\n  v6 = *(_QWORD **)a2;\n  *(_QWORD *)(a3 + 8) = *(_QWORD *)a2;\n  if ( v6 == v4 )\n  {\n    *v4 = a3;\n    v4[1] = a3;\n    v4[2] = a3;\n    *(_BYTE *)(a3 + 24) = 1;\n    return a3;\n  }\n  if ( *(_DWORD *)(a2 + 8) )\n  {\n    *v6 = a3;\n    if ( v6 == (_QWORD *)*v4 )\n      *v4 = a3;\n  }\n  else\n  {\n    v6[2] = a3;\n    if ( v6 == (_QWORD *)v4[2] )\n      v4[2] = a3;\n  }\n  v8 = (_QWORD *)a3;\n  while ( !*(_BYTE *)(v8[1] + 24LL) )\n  {\n    v9 = v8[1];\n    v10 = *(__int64 **)(v9 + 8);\n    v11 = *v10;\n    if ( v9 == *v10 )\n    {\n      v12 = v10[2];\n      if ( *(_BYTE *)(v12 + 24) )\n      {\n        v13 = *(_QWORD **)(v9 + 16);\n        if ( v8 == v13 )\n        {\n          v8 = (_QWORD *)v8[1];\n          *(_QWORD *)(v9 + 16) = *v13;\n          if ( !*(_BYTE *)(*v13 + 25LL) )\n            *(_QWORD *)(*v13 + 8LL) = v9;\n          v13[1] = *(_QWORD *)(v9 + 8);\n          if ( v9 == *(_QWORD *)(*a1 + 8LL) )\n          {\n            *(_QWORD *)(*a1 + 8LL) = v13;\n          }\n          else\n          {\n            v14 = *(_QWORD **)(v9 + 8);\n            if ( v9 == *v14 )\n              *v14 = v13;\n            else\n              v14[2] = v13;\n          }\n          *v13 = v9;\n          *(_QWORD *)(v9 + 8) = v13;\n        }\n        *(_BYTE *)(v8[1] + 24LL) = 1;\n        *(_BYTE *)(*(_QWORD *)(v8[1] + 8LL) + 24LL) = 0;\n        v15 = *(_QWORD **)(v8[1] + 8LL);\n        v16 = (_QWORD *)*v15;\n        *v15 = *(_QWORD *)(*v15 + 16LL);\n        v17 = v16[2];\n        if ( !*(_BYTE *)(v17 + 25) )\n          *(_QWORD *)(v17 + 8) = v15;\n        v16[1] = v15[1];\n        if ( v15 == *(_QWORD **)(*a1 + 8LL) )\n        {\n          *(_QWORD *)(*a1 + 8LL) = v16;\n          v16[2] = v15;\n        }\n        else\n        {\n          v18 = (_QWORD *)v15[1];\n          if ( v15 == (_QWORD *)v18[2] )\n            v18[2] = v16;\n          else\n            *v18 = v16;\n          v16[2] = v15;\n        }\nLABEL_48:\n        v15[1] = v16;\n        continue;\n      }\n      *(_BYTE *)(v9 + 24) = 1;\n      *(_BYTE *)(v12 + 24) = 1;\n      *(_BYTE *)(*(_QWORD *)(v8[1] + 8LL) + 24LL) = 0;\n      v8 = *(_QWORD **)(v8[1] + 8LL);\n    }\n    else\n    {\n      if ( *(_BYTE *)(v11 + 24) )\n      {\n        v19 = *(_QWORD **)v9;\n        if ( v8 == *(_QWORD **)v9 )\n        {\n          v8 = (_QWORD *)v8[1];\n          *(_QWORD *)v9 = v19[2];\n          v20 = v19[2];\n          if ( !*(_BYTE *)(v20 + 25) )\n            *(_QWORD *)(v20 + 8) = v9;\n          v19[1] = *(_QWORD *)(v9 + 8);\n          if ( v9 == *(_QWORD *)(*a1 + 8LL) )\n          {\n            *(_QWORD *)(*a1 + 8LL) = v19;\n          }\n          else\n          {\n            v21 = *(_QWORD **)(v9 + 8);\n            if ( v9 == v21[2] )\n              v21[2] = v19;\n            else\n              *v21 = v19;\n          }\n          v19[2] = v9;\n          *(_QWORD *)(v9 + 8) = v19;\n        }\n        *(_BYTE *)(v8[1] + 24LL) = 1;\n        *(_BYTE *)(*(_QWORD *)(v8[1] + 8LL) + 24LL) = 0;\n        v15 = *(_QWORD **)(v8[1] + 8LL);\n        v16 = (_QWORD *)v15[2];\n        v15[2] = *v16;\n        if ( !*(_BYTE *)(*v16 + 25LL) )\n          *(_QWORD *)(*v16 + 8LL) = v15;\n        v16[1] = v15[1];\n        if ( v15 == *(_QWORD **)(*a1 + 8LL) )\n        {\n          *(_QWORD *)(*a1 + 8LL) = v16;\n        }\n        else\n        {\n          v22 = (_QWORD *)v15[1];\n          if ( v15 == (_QWORD *)*v22 )\n            *v22 = v16;\n          else\n            v22[2] = v16;\n        }\n        *v16 = v15;\n        goto LABEL_48;\n      }\n      *(_BYTE *)(v9 + 24) = 1;\n      *(_BYTE *)(v11 + 24) = 1;\n      *(_BYTE *)(*(_QWORD *)(v8[1] + 8LL) + 24LL) = 0;\n      v8 = *(_QWORD **)(v8[1] + 8LL);\n    }\n  }\n  *(_BYTE *)(v4[1] + 24LL) = 1;\n  return a3;\n}", "assembly": "; \n; sub_180004DA0 from 0x180004da0 to 0x180004ffb (603 bytes)\n; \n; 3 xrefs:\n; > cocos2d::extension::CCControl::addHandleOfControlEvent @ 0x180004c76\n; > cocos2d::extension::CCScrollView::registerScriptHandler @ 0x180014296\n; > cocos2d::extension::CCTableView::_addCellIfNecessary @ 0x180015951\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\ninc     qword ptr [rcx+8]                                              ; +0x0, 0x180004da0\nmov     r9, r8                                                         ; +0x4, 0x180004da4\nmov     r11, [rcx]                                                     ; +0x7, 0x180004da7\nmov     r10, rcx                                                       ; +0xa, 0x180004daa\nmov     rax, [rdx]                                                     ; +0xd, 0x180004dad\nmov     [r8+8], rax                                                    ; +0x10, 0x180004db0\ncmp     rax, r11                                                       ; +0x14, 0x180004db4\njnz     short loc_180004DCD                                            ; +0x17, 0x180004db7\nmov     [r11], r8                                                      ; +0x19, 0x180004db9\nmov     rax, r8                                                        ; +0x1c, 0x180004dbc\nmov     [r11+8], r8                                                    ; +0x1f, 0x180004dbf\nmov     [r11+10h], r8                                                  ; +0x23, 0x180004dc3\nmov     byte ptr [r8+18h], 1                                           ; +0x27, 0x180004dc7\nretn                                                                   ; +0x2c, 0x180004dcc\ncmp     dword ptr [rdx+8], 0                                           ; +0x2d, 0x180004dcd\njnz     short loc_180004DE3                                            ; +0x31, 0x180004dd1\nmov     [rax+10h], r9                                                  ; +0x33, 0x180004dd3\ncmp     rax, [r11+10h]                                                 ; +0x37, 0x180004dd7\njnz     short loc_180004DEE                                            ; +0x3b, 0x180004ddb\nmov     [r11+10h], r9                                                  ; +0x3d, 0x180004ddd\njmp     short loc_180004DEE                                            ; +0x41, 0x180004de1\nmov     [rax], r9                                                      ; +0x43, 0x180004de3\ncmp     rax, [r11]                                                     ; +0x46, 0x180004de6\njnz     short loc_180004DEE                                            ; +0x49, 0x180004de9\nmov     [r11], r9                                                      ; +0x4b, 0x180004deb\nmov     rcx, [r8+8]                                                    ; +0x4e, 0x180004dee\nmov     rax, r9                                                        ; +0x52, 0x180004df2\ncmp     byte ptr [rcx+18h], 0                                          ; +0x55, 0x180004df5\njnz     loc_180004FEF                                                  ; +0x59, 0x180004df9\nnop                                                                    ; +0x5f, 0x180004dff\nmov     rdx, [rax+8]                                                   ; +0x60, 0x180004e00\nmov     r8, [rdx+8]                                                    ; +0x64, 0x180004e04\nmov     rcx, [r8]                                                      ; +0x68, 0x180004e08\ncmp     rdx, rcx                                                       ; +0x6b, 0x180004e0b\njnz     loc_180004F04                                                  ; +0x6e, 0x180004e0e\nmov     rcx, [r8+10h]                                                  ; +0x74, 0x180004e14\ncmp     byte ptr [rcx+18h], 0                                          ; +0x78, 0x180004e18\njnz     short loc_180004E3F                                            ; +0x7c, 0x180004e1c\nmov     byte ptr [rdx+18h], 1                                          ; +0x7e, 0x180004e1e\nmov     byte ptr [rcx+18h], 1                                          ; +0x82, 0x180004e22\nmov     rcx, [rax+8]                                                   ; +0x86, 0x180004e26\nmov     rdx, [rcx+8]                                                   ; +0x8a, 0x180004e2a\nmov     byte ptr [rdx+18h], 0                                          ; +0x8e, 0x180004e2e\nmov     rcx, [rax+8]                                                   ; +0x92, 0x180004e32\nmov     rax, [rcx+8]                                                   ; +0x96, 0x180004e36\njmp     loc_180004FE1                                                  ; +0x9a, 0x180004e3a\nmov     r8, [rdx+10h]                                                  ; +0x9f, 0x180004e3f\ncmp     rax, r8                                                        ; +0xa3, 0x180004e43\njnz     short loc_180004E8F                                            ; +0xa6, 0x180004e46\nmov     rcx, [r8]                                                      ; +0xa8, 0x180004e48\nmov     rax, rdx                                                       ; +0xab, 0x180004e4b\nmov     [rdx+10h], rcx                                                 ; +0xae, 0x180004e4e\nmov     rcx, [r8]                                                      ; +0xb2, 0x180004e52\ncmp     byte ptr [rcx+19h], 0                                          ; +0xb5, 0x180004e55\njnz     short loc_180004E5F                                            ; +0xb9, 0x180004e59\nmov     [rcx+8], rdx                                                   ; +0xbb, 0x180004e5b\nmov     rcx, [rdx+8]                                                   ; +0xbf, 0x180004e5f\nmov     [r8+8], rcx                                                    ; +0xc3, 0x180004e63\nmov     rcx, [r10]                                                     ; +0xc7, 0x180004e67\ncmp     rdx, [rcx+8]                                                   ; +0xca, 0x180004e6a\njnz     short loc_180004E76                                            ; +0xce, 0x180004e6e\nmov     [rcx+8], r8                                                    ; +0xd0, 0x180004e70\njmp     short loc_180004E88                                            ; +0xd4, 0x180004e74\nmov     rcx, [rdx+8]                                                   ; +0xd6, 0x180004e76\ncmp     rdx, [rcx]                                                     ; +0xda, 0x180004e7a\njnz     short loc_180004E84                                            ; +0xdd, 0x180004e7d\nmov     [rcx], r8                                                      ; +0xdf, 0x180004e7f\njmp     short loc_180004E88                                            ; +0xe2, 0x180004e82\nmov     [rcx+10h], r8                                                  ; +0xe4, 0x180004e84\nmov     [r8], rdx                                                      ; +0xe8, 0x180004e88\nmov     [rdx+8], r8                                                    ; +0xeb, 0x180004e8b\nmov     rcx, [rax+8]                                                   ; +0xef, 0x180004e8f\nmov     byte ptr [rcx+18h], 1                                          ; +0xf3, 0x180004e93\nmov     rcx, [rax+8]                                                   ; +0xf7, 0x180004e97\nmov     rdx, [rcx+8]                                                   ; +0xfb, 0x180004e9b\nmov     byte ptr [rdx+18h], 0                                          ; +0xff, 0x180004e9f\nmov     rcx, [rax+8]                                                   ; +0x103, 0x180004ea3\nmov     rdx, [rcx+8]                                                   ; +0x107, 0x180004ea7\nmov     r8, [rdx]                                                      ; +0x10b, 0x180004eab\nmov     rcx, [r8+10h]                                                  ; +0x10e, 0x180004eae\nmov     [rdx], rcx                                                     ; +0x112, 0x180004eb2\nmov     rcx, [r8+10h]                                                  ; +0x115, 0x180004eb5\ncmp     byte ptr [rcx+19h], 0                                          ; +0x119, 0x180004eb9\njnz     short loc_180004EC3                                            ; +0x11d, 0x180004ebd\nmov     [rcx+8], rdx                                                   ; +0x11f, 0x180004ebf\nmov     rcx, [rdx+8]                                                   ; +0x123, 0x180004ec3\nmov     [r8+8], rcx                                                    ; +0x127, 0x180004ec7\nmov     rcx, [r10]                                                     ; +0x12b, 0x180004ecb\ncmp     rdx, [rcx+8]                                                   ; +0x12e, 0x180004ece\njnz     short loc_180004EE1                                            ; +0x132, 0x180004ed2\nmov     [rcx+8], r8                                                    ; +0x134, 0x180004ed4\nmov     [r8+10h], rdx                                                  ; +0x138, 0x180004ed8\njmp     loc_180004FDD                                                  ; +0x13c, 0x180004edc\nmov     rcx, [rdx+8]                                                   ; +0x141, 0x180004ee1\ncmp     rdx, [rcx+10h]                                                 ; +0x145, 0x180004ee5\njnz     short loc_180004EF8                                            ; +0x149, 0x180004ee9\nmov     [rcx+10h], r8                                                  ; +0x14b, 0x180004eeb\nmov     [r8+10h], rdx                                                  ; +0x14f, 0x180004eef\njmp     loc_180004FDD                                                  ; +0x153, 0x180004ef3\nmov     [rcx], r8                                                      ; +0x158, 0x180004ef8\nmov     [r8+10h], rdx                                                  ; +0x15b, 0x180004efb\njmp     loc_180004FDD                                                  ; +0x15f, 0x180004eff\ncmp     byte ptr [rcx+18h], 0                                          ; +0x164, 0x180004f04\njnz     short loc_180004F2B                                            ; +0x168, 0x180004f08\nmov     byte ptr [rdx+18h], 1                                          ; +0x16a, 0x180004f0a\nmov     byte ptr [rcx+18h], 1                                          ; +0x16e, 0x180004f0e\nmov     rcx, [rax+8]                                                   ; +0x172, 0x180004f12\nmov     rdx, [rcx+8]                                                   ; +0x176, 0x180004f16\nmov     byte ptr [rdx+18h], 0                                          ; +0x17a, 0x180004f1a\nmov     rcx, [rax+8]                                                   ; +0x17e, 0x180004f1e\nmov     rax, [rcx+8]                                                   ; +0x182, 0x180004f22\njmp     loc_180004FE1                                                  ; +0x186, 0x180004f26\nmov     r8, [rdx]                                                      ; +0x18b, 0x180004f2b\ncmp     rax, r8                                                        ; +0x18e, 0x180004f2e\njnz     short loc_180004F7D                                            ; +0x191, 0x180004f31\nmov     rcx, [r8+10h]                                                  ; +0x193, 0x180004f33\nmov     rax, rdx                                                       ; +0x197, 0x180004f37\nmov     [rdx], rcx                                                     ; +0x19a, 0x180004f3a\nmov     rcx, [r8+10h]                                                  ; +0x19d, 0x180004f3d\ncmp     byte ptr [rcx+19h], 0                                          ; +0x1a1, 0x180004f41\njnz     short loc_180004F4B                                            ; +0x1a5, 0x180004f45\nmov     [rcx+8], rdx                                                   ; +0x1a7, 0x180004f47\nmov     rcx, [rdx+8]                                                   ; +0x1ab, 0x180004f4b\nmov     [r8+8], rcx                                                    ; +0x1af, 0x180004f4f\nmov     rcx, [r10]                                                     ; +0x1b3, 0x180004f53\ncmp     rdx, [rcx+8]                                                   ; +0x1b6, 0x180004f56\njnz     short loc_180004F62                                            ; +0x1ba, 0x180004f5a\nmov     [rcx+8], r8                                                    ; +0x1bc, 0x180004f5c\njmp     short loc_180004F75                                            ; +0x1c0, 0x180004f60\nmov     rcx, [rdx+8]                                                   ; +0x1c2, 0x180004f62\ncmp     rdx, [rcx+10h]                                                 ; +0x1c6, 0x180004f66\njnz     short loc_180004F72                                            ; +0x1ca, 0x180004f6a\nmov     [rcx+10h], r8                                                  ; +0x1cc, 0x180004f6c\njmp     short loc_180004F75                                            ; +0x1d0, 0x180004f70\nmov     [rcx], r8                                                      ; +0x1d2, 0x180004f72\nmov     [r8+10h], rdx                                                  ; +0x1d5, 0x180004f75\nmov     [rdx+8], r8                                                    ; +0x1d9, 0x180004f79\nmov     rcx, [rax+8]                                                   ; +0x1dd, 0x180004f7d\nmov     byte ptr [rcx+18h], 1                                          ; +0x1e1, 0x180004f81\nmov     rcx, [rax+8]                                                   ; +0x1e5, 0x180004f85\nmov     rdx, [rcx+8]                                                   ; +0x1e9, 0x180004f89\nmov     byte ptr [rdx+18h], 0                                          ; +0x1ed, 0x180004f8d\nmov     rcx, [rax+8]                                                   ; +0x1f1, 0x180004f91\nmov     rdx, [rcx+8]                                                   ; +0x1f5, 0x180004f95\nmov     r8, [rdx+10h]                                                  ; +0x1f9, 0x180004f99\nmov     rcx, [r8]                                                      ; +0x1fd, 0x180004f9d\nmov     [rdx+10h], rcx                                                 ; +0x200, 0x180004fa0\nmov     rcx, [r8]                                                      ; +0x204, 0x180004fa4\ncmp     byte ptr [rcx+19h], 0                                          ; +0x207, 0x180004fa7\njnz     short loc_180004FB1                                            ; +0x20b, 0x180004fab\nmov     [rcx+8], rdx                                                   ; +0x20d, 0x180004fad\nmov     rcx, [rdx+8]                                                   ; +0x211, 0x180004fb1\nmov     [r8+8], rcx                                                    ; +0x215, 0x180004fb5\nmov     rcx, [r10]                                                     ; +0x219, 0x180004fb9\ncmp     rdx, [rcx+8]                                                   ; +0x21c, 0x180004fbc\njnz     short loc_180004FC8                                            ; +0x220, 0x180004fc0\nmov     [rcx+8], r8                                                    ; +0x222, 0x180004fc2\njmp     short loc_180004FDA                                            ; +0x226, 0x180004fc6\nmov     rcx, [rdx+8]                                                   ; +0x228, 0x180004fc8\ncmp     rdx, [rcx]                                                     ; +0x22c, 0x180004fcc\njnz     short loc_180004FD6                                            ; +0x22f, 0x180004fcf\nmov     [rcx], r8                                                      ; +0x231, 0x180004fd1\njmp     short loc_180004FDA                                            ; +0x234, 0x180004fd4\nmov     [rcx+10h], r8                                                  ; +0x236, 0x180004fd6\nmov     [r8], rdx                                                      ; +0x23a, 0x180004fda\nmov     [rdx+8], r8                                                    ; +0x23d, 0x180004fdd\nmov     rcx, [rax+8]                                                   ; +0x241, 0x180004fe1\ncmp     byte ptr [rcx+18h], 0                                          ; +0x245, 0x180004fe5\njz      loc_180004E00                                                  ; +0x249, 0x180004fe9\nmov     rax, [r11+8]                                                   ; +0x24f, 0x180004fef\nmov     byte ptr [rax+18h], 1                                          ; +0x253, 0x180004ff3\nmov     rax, r9                                                        ; +0x257, 0x180004ff7\nretn                                                                   ; +0x25a, 0x180004ffa", "xrefs": ["cocos2d::extension::CCControl::addHandleOfControlEvent @ 0x180004c76", "cocos2d::extension::CCScrollView::registerScriptHandler @ 0x180014296", "cocos2d::extension::CCTableView::_addCellIfNecessary @ 0x180015951"], "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"}