{"type": "func", "start": 6442534800, "end": 6442535183, "name": "cocos2d::extension::CCArrayForObjectSorting::setObjectID_ofSortedObject", "pseudocode": "// \n// cocos2d::extension::CCArrayForObjectSorting::setObjectID_ofSortedObject from 0x180014790 to 0x18001490f (383 bytes)\n// \n// 4 xrefs:\n// > <???> @ 0x18002ec1c\n// > <???> @ 0x18002ec2c\n// > <???> @ 0x18002fdf8\n// > <???> @ 0x18004a680\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::CCArrayForObjectSorting::setObjectID_ofSortedObject(\n        cocos2d::extension::CCArrayForObjectSorting *this,\n        unsigned int a2,\n        struct cocos2d::extension::CCSortableObject *a3)\n{\n  unsigned int v3; // edi\n  unsigned int v7; // ebp\n  unsigned int v8; // esi\n  unsigned int *v9; // rbx\n  __int64 v10; // rax\n  _QWORD *v11; // rbx\n  _QWORD *i; // r15\n  __int64 v13; // rax\n  unsigned int v14; // eax\n  struct cocos2d::CCObject *v15; // rax\n  struct cocos2d::extension::CCSortableObject *v16; // rsi\n  cocos2d::CCObject *v17; // rbp\n  int v18; // ebx\n\n  v3 = 0;\n  if ( a3 )\n  {\n    v7 = 0;\n    v8 = (*(__int64 (__fastcall **)(struct cocos2d::extension::CCSortableObject *))(*(_QWORD *)a3 + 16LL))(a3);\n    if ( this )\n    {\n      v9 = *((unsigned int **)this + 7);\n      v10 = *v9;\n      if ( (_DWORD)v10 )\n      {\n        v11 = *((_QWORD **)v9 + 2);\n        for ( i = &v11[v10 - 1]; v11 <= i; v7 = v14 )\n        {\n          if ( !*v11 )\n            break;\n          v13 = _RTDynamicCast(\n                  *v11,\n                  0,\n                  &cocos2d::CCObject `RTTI Type Descriptor',\n                  &cocos2d::extension::CCSortableObject `RTTI Type Descriptor',\n                  0);\n          v14 = (*(__int64 (__fastcall **)(__int64))(*(_QWORD *)v13 + 16LL))(v13);\n          if ( v8 == v14 || v8 >= v7 && v8 < v14 )\n            break;\n          ++v3;\n          ++v11;\n        }\n      }\n    }\n  }\n  else\n  {\n    v3 = -1;\n  }\n  if ( v3 < cocos2d::CCArray::count(this) && v3 != -1 )\n  {\n    v15 = cocos2d::CCArray::objectAtIndex(this, v3);\n    v16 = (struct cocos2d::extension::CCSortableObject *)_RTDynamicCast(\n                                                           v15,\n                                                           0,\n                                                           &cocos2d::CCObject `RTTI Type Descriptor',\n                                                           &cocos2d::extension::CCSortableObject `RTTI Type Descriptor',\n                                                           0);\n    v17 = (cocos2d::CCObject *)_RTDynamicCast(\n                                 v16,\n                                 0,\n                                 &cocos2d::extension::CCSortableObject `RTTI Type Descriptor',\n                                 &cocos2d::CCObject `RTTI Type Descriptor',\n                                 0);\n    cocos2d::CCObject::retain(v17);\n    v18 = (*(__int64 (__fastcall **)(struct cocos2d::extension::CCSortableObject *))(*(_QWORD *)v16 + 16LL))(v16);\n    if ( v18 == (*(unsigned int (__fastcall **)(struct cocos2d::extension::CCSortableObject *))(*(_QWORD *)a3 + 16LL))(a3) )\n    {\n      cocos2d::CCArray::removeObjectAtIndex(this, v3, 1);\n      (*(void (__fastcall **)(struct cocos2d::extension::CCSortableObject *, _QWORD))(*(_QWORD *)v16 + 8LL))(v16, a2);\n      cocos2d::extension::CCArrayForObjectSorting::insertSortedObject(this, v16);\n    }\n    cocos2d::CCObject::release(v17);\n  }\n}", "assembly": "; \n; cocos2d::extension::CCArrayForObjectSorting::setObjectID_ofSortedObject from 0x180014790 to 0x18001490f (383 bytes)\n; \n; 4 xrefs:\n; > <???> @ 0x18002ec1c\n; > <???> @ 0x18002ec2c\n; > <???> @ 0x18002fdf8\n; > <???> @ 0x18004a680\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, 0x180014790\nmov     [rsp+arg_10], rbp                                              ; +0x5, 0x180014795\npush    rsi                                                            ; +0xa, 0x18001479a\npush    rdi                                                            ; +0xb, 0x18001479b\npush    r12                                                            ; +0xc, 0x18001479c\npush    r13                                                            ; +0xe, 0x18001479e\npush    r14                                                            ; +0x10, 0x1800147a0\nsub     rsp, 30h                                                       ; +0x12, 0x1800147a2\nxor     edi, edi                                                       ; +0x16, 0x1800147a6\nmov     [rsp+58h+arg_0], r15                                           ; +0x18, 0x1800147a8\nmov     r12, r8                                                        ; +0x1d, 0x1800147ad\nmov     r13d, edx                                                      ; +0x20, 0x1800147b0\nmov     r14, rcx                                                       ; +0x23, 0x1800147b3\ntest    r8, r8                                                         ; +0x26, 0x1800147b6\njz      short loc_180014831                                            ; +0x29, 0x1800147b9\nmov     rax, [r8]                                                      ; +0x2b, 0x1800147bb\nmov     rcx, r8                                                        ; +0x2e, 0x1800147be\nxor     ebp, ebp                                                       ; +0x31, 0x1800147c1\ncall    qword ptr [rax+10h]                                            ; +0x33, 0x1800147c3\nmov     esi, eax                                                       ; +0x36, 0x1800147c6\ntest    r14, r14                                                       ; +0x38, 0x1800147c8\njz      short loc_180014836                                            ; +0x3b, 0x1800147cb\nmov     rbx, [r14+38h]                                                 ; +0x3d, 0x1800147cd\nmov     eax, [rbx]                                                     ; +0x41, 0x1800147d1\ntest    eax, eax                                                       ; +0x43, 0x1800147d3\njz      short loc_180014836                                            ; +0x45, 0x1800147d5\nmov     rbx, [rbx+10h]                                                 ; +0x47, 0x1800147d7\nlea     r15, [rax-1]                                                   ; +0x4b, 0x1800147db\nlea     r15, [rbx+r15*8]                                               ; +0x4f, 0x1800147df\ncmp     rbx, r15                                                       ; +0x53, 0x1800147e3\nja      short loc_180014836                                            ; +0x56, 0x1800147e6\nmov     rcx, [rbx]                                                     ; +0x58, 0x1800147e8\ntest    rcx, rcx                                                       ; +0x5b, 0x1800147eb\njz      short loc_180014836                                            ; +0x5e, 0x1800147ee\nlea     r9, ??_R0?AVCCSortableObject@extension@cocos2d@@@8; cocos2d::extension::CCSortableObject `RTTI Type Descriptor' ; +0x60, 0x1800147f0\nmov     [rsp+58h+var_38], 0                                            ; +0x67, 0x1800147f7\nlea     r8, ??_R0?AVCCObject@cocos2d@@@8; cocos2d::CCObject `RTTI Type Descriptor' ; +0x6f, 0x1800147ff\nxor     edx, edx                                                       ; +0x76, 0x180014806\ncall    __RTDynamicCast                                                ; +0x78, 0x180014808\nmov     rcx, rax                                                       ; +0x7d, 0x18001480d\nmov     rdx, [rax]                                                     ; +0x80, 0x180014810\ncall    qword ptr [rdx+10h]                                            ; +0x83, 0x180014813\ncmp     esi, eax                                                       ; +0x86, 0x180014816\njz      short loc_180014836                                            ; +0x88, 0x180014818\ncmp     esi, ebp                                                       ; +0x8a, 0x18001481a\njb      short loc_180014822                                            ; +0x8c, 0x18001481c\ncmp     esi, eax                                                       ; +0x8e, 0x18001481e\njb      short loc_180014836                                            ; +0x90, 0x180014820\ninc     edi                                                            ; +0x92, 0x180014822\nadd     rbx, 8                                                         ; +0x94, 0x180014824\nmov     ebp, eax                                                       ; +0x98, 0x180014828\ncmp     rbx, r15                                                       ; +0x9a, 0x18001482a\njbe     short loc_1800147E8                                            ; +0x9d, 0x18001482d\njmp     short loc_180014836                                            ; +0x9f, 0x18001482f\nmov     edi, 0FFFFFFFFh                                                ; +0xa1, 0x180014831\nmov     rcx, r14                                                       ; +0xa6, 0x180014836\ncall    cs:?count@CCArray@cocos2d@@QEBAIXZ; cocos2d::CCArray::count(void) ; +0xa9, 0x180014839\nmov     r15, [rsp+58h+arg_0]                                           ; +0xaf, 0x18001483f\ncmp     edi, eax                                                       ; +0xb4, 0x180014844\njnb     loc_1800148F8                                                  ; +0xb6, 0x180014846\ncmp     edi, 0FFFFFFFFh                                                ; +0xbc, 0x18001484c\njz      loc_1800148F8                                                  ; +0xbf, 0x18001484f\nmov     edx, edi                                                       ; +0xc5, 0x180014855\nmov     rcx, r14                                                       ; +0xc7, 0x180014857\ncall    cs:?objectAtIndex@CCArray@cocos2d@@QEAAPEAVCCObject@2@I@Z; cocos2d::CCArray::objectAtIndex(uint) ; +0xca, 0x18001485a\nlea     r9, ??_R0?AVCCSortableObject@extension@cocos2d@@@8; cocos2d::extension::CCSortableObject `RTTI Type Descriptor' ; +0xd0, 0x180014860\nmov     [rsp+58h+var_38], 0                                            ; +0xd7, 0x180014867\nmov     rcx, rax                                                       ; +0xdf, 0x18001486f\nlea     r8, ??_R0?AVCCObject@cocos2d@@@8; cocos2d::CCObject `RTTI Type Descriptor' ; +0xe2, 0x180014872\nxor     edx, edx                                                       ; +0xe9, 0x180014879\ncall    __RTDynamicCast                                                ; +0xeb, 0x18001487b\nlea     r9, ??_R0?AVCCObject@cocos2d@@@8; cocos2d::CCObject `RTTI Type Descriptor' ; +0xf0, 0x180014880\nmov     [rsp+58h+var_38], 0                                            ; +0xf7, 0x180014887\nlea     r8, ??_R0?AVCCSortableObject@extension@cocos2d@@@8; cocos2d::extension::CCSortableObject `RTTI Type Descriptor' ; +0xff, 0x18001488f\nxor     edx, edx                                                       ; +0x106, 0x180014896\nmov     rcx, rax                                                       ; +0x108, 0x180014898\nmov     rsi, rax                                                       ; +0x10b, 0x18001489b\ncall    __RTDynamicCast                                                ; +0x10e, 0x18001489e\nmov     rcx, rax                                                       ; +0x113, 0x1800148a3\nmov     rbp, rax                                                       ; +0x116, 0x1800148a6\ncall    cs:?retain@CCObject@cocos2d@@QEAAXXZ; cocos2d::CCObject::retain(void) ; +0x119, 0x1800148a9\nmov     r8, [rsi]                                                      ; +0x11f, 0x1800148af\nmov     rcx, rsi                                                       ; +0x122, 0x1800148b2\ncall    qword ptr [r8+10h]                                             ; +0x125, 0x1800148b5\nmov     r8, [r12]                                                      ; +0x129, 0x1800148b9\nmov     rcx, r12                                                       ; +0x12d, 0x1800148bd\nmov     ebx, eax                                                       ; +0x130, 0x1800148c0\ncall    qword ptr [r8+10h]                                             ; +0x132, 0x1800148c2\ncmp     ebx, eax                                                       ; +0x136, 0x1800148c6\njnz     short loc_1800148EF                                            ; +0x138, 0x1800148c8\nmov     r8b, 1                                                         ; +0x13a, 0x1800148ca\nmov     edx, edi                                                       ; +0x13d, 0x1800148cd\nmov     rcx, r14                                                       ; +0x13f, 0x1800148cf\ncall    cs:?removeObjectAtIndex@CCArray@cocos2d@@QEAAXI_N@Z; cocos2d::CCArray::removeObjectAtIndex(uint,bool) ; +0x142, 0x1800148d2\nmov     rax, [rsi]                                                     ; +0x148, 0x1800148d8\nmov     edx, r13d                                                      ; +0x14b, 0x1800148db\nmov     rcx, rsi                                                       ; +0x14e, 0x1800148de\ncall    qword ptr [rax+8]                                              ; +0x151, 0x1800148e1\nmov     rdx, rsi; struct cocos2d::extension::CCSortableObject *        ; +0x154, 0x1800148e4\nmov     rcx, r14; this                                                 ; +0x157, 0x1800148e7\ncall    ?insertSortedObject@CCArrayForObjectSorting@extension@cocos2d@@QEAAXPEAVCCSortableObject@23@@Z; cocos2d::extension::CCArrayForObjectSorting::insertSortedObject(cocos2d::extension::CCSortableObject *) ; +0x15a, 0x1800148ea\nmov     rcx, rbp                                                       ; +0x15f, 0x1800148ef\ncall    cs:?release@CCObject@cocos2d@@QEAAXXZ; cocos2d::CCObject::release(void) ; +0x162, 0x1800148f2\nmov     rbx, [rsp+58h+arg_8]                                           ; +0x168, 0x1800148f8\nmov     rbp, [rsp+58h+arg_10]                                          ; +0x16d, 0x1800148fd\nadd     rsp, 30h                                                       ; +0x172, 0x180014902\npop     r14                                                            ; +0x176, 0x180014906\npop     r13                                                            ; +0x178, 0x180014908\npop     r12                                                            ; +0x17a, 0x18001490a\npop     rdi                                                            ; +0x17c, 0x18001490c\npop     rsi                                                            ; +0x17d, 0x18001490d\nretn                                                                   ; +0x17e, 0x18001490e", "xrefs": ["<???> @ 0x18002ec1c", "<???> @ 0x18002ec2c", "<???> @ 0x18002fdf8", "<???> @ 0x18004a680"], "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"}