{"type": "func", "start": 340460, "end": 340680, "name": "sub_531EC", "pseudocode": "// \n// sub_531EC from 0x531ec to 0x532c8 (220 bytes)\n// \n// 1 xrefs:\n// > <???> @ 0x10c260\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_531EC(__int64 a1, unsigned __int8 a2)\n{\n  int v4; // w8\n  __int64 v5; // x9\n  __int64 result; // x0\n  __int64 v7; // x0\n  __int64 v8; // x0\n  __int64 v9; // x0\n  __int64 v10; // x0\n  __int64 v11; // x0\n\n  if ( (a2 & 1) != 0\n    || (v4 = *(_DWORD *)(a1 + 60), (v4 & 0x20000) == 0)\n    || (v5 = *(_QWORD *)(a1 + 24),\n        *(_DWORD *)(a1 + 60) = v4 & 0xFFFDFFFF,\n        result = sub_B0C2C(*(_QWORD *)(v5 + 112)),\n        !(_DWORD)result) )\n  {\n    if ( (*(_BYTE *)(*(_QWORD *)(*(_QWORD *)(a1 + 24) + 32LL) + 72LL) & 0x10) == 0 )\n    {\n      if ( *(_QWORD *)(a1 + 40) && *(_QWORD *)(a1 + 664) )\n        sub_53D74(a1 + 112, (a2 ^ 1) & 1);\n      v7 = *(_QWORD *)(a1 + 736);\n      if ( v7 )\n        sub_53D74(v7, (a2 ^ 1) & 1);\n      v8 = *(_QWORD *)(a1 + 744);\n      if ( v8 )\n        sub_53D74(v8, (a2 ^ 1) & 1);\n      v9 = *(_QWORD *)(a1 + 48);\n      if ( v9 )\n        sub_53D74(v9, (a2 ^ 1) & 1);\n      v10 = *(_QWORD *)(a1 + 752);\n      if ( v10 )\n        sub_53D74(v10, (a2 ^ 1) & 1);\n      v11 = *(_QWORD *)(a1 + 760);\n      if ( v11 )\n        sub_53D74(v11, (a2 ^ 1) & 1);\n    }\n    JUMPOUT(0x52588);\n  }\n  return result;\n}", "assembly": "; \n; sub_531EC from 0x531ec to 0x532c8 (220 bytes)\n; \n; 1 xrefs:\n; > <???> @ 0x10c260\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\nSTR             X21, [SP,#-0x10+var_20]!                               ; +0x0, 0x531ec\nSTP             X20, X19, [SP,#0x20+var_10]                            ; +0x4, 0x531f0\nMOV             W20, W1                                                ; +0x8, 0x531f4\nMOV             X19, X0                                                ; +0xc, 0x531f8\nSTP             X29, X30, [SP,#0x20+var_s0]                            ; +0x10, 0x531fc\nADD             X29, SP, #0x20                                         ; +0x14, 0x53200\nTBNZ            W1, #0, loc_53230                                      ; +0x18, 0x53204\nLDR             W8, [X19,#0x3C]                                        ; +0x1c, 0x53208\nTBZ             W8, #0x11, loc_53230                                   ; +0x20, 0x5320c\nLDR             X9, [X19,#0x18]                                        ; +0x24, 0x53210\nAND             W8, W8, #0xFFFDFFFF                                    ; +0x28, 0x53214\nSTR             W8, [X19,#0x3C]                                        ; +0x2c, 0x53218\nLDR             X0, [X9,#0x70]                                         ; +0x30, 0x5321c\nBL              sub_B0C2C                                              ; +0x34, 0x53220\nCBZ             W0, loc_53230                                          ; +0x38, 0x53224\nLDP             X29, X30, [SP,#0x20+var_s0]                            ; +0x3c, 0x53228\nB               loc_53E54                                              ; +0x40, 0x5322c\nLDR             X8, [X19,#0x18]                                        ; +0x44, 0x53230\nLDR             X8, [X8,#0x20]                                         ; +0x48, 0x53234\nLDRB            W8, [X8,#0x48]                                         ; +0x4c, 0x53238\nTBNZ            W8, #4, loc_532B0                                      ; +0x50, 0x5323c\nLDR             X8, [X19,#0x28]                                        ; +0x54, 0x53240\nEOR             W21, W20, #1                                           ; +0x58, 0x53244\nCBZ             X8, loc_53260                                          ; +0x5c, 0x53248\nLDR             X8, [X19,#0x298]                                       ; +0x60, 0x5324c\nCBZ             X8, loc_53260                                          ; +0x64, 0x53250\nADD             X0, X19, #0x70 ; 'p'                                   ; +0x68, 0x53254\nAND             W1, W21, #1                                            ; +0x6c, 0x53258\nBL              sub_53D74                                              ; +0x70, 0x5325c\nLDR             X0, [X19,#0x2E0]                                       ; +0x74, 0x53260\nCBZ             X0, loc_53270                                          ; +0x78, 0x53264\nAND             W1, W21, #1                                            ; +0x7c, 0x53268\nBL              sub_53D74                                              ; +0x80, 0x5326c\nLDR             X0, [X19,#0x2E8]                                       ; +0x84, 0x53270\nCBZ             X0, loc_53280                                          ; +0x88, 0x53274\nAND             W1, W21, #1                                            ; +0x8c, 0x53278\nBL              sub_53D74                                              ; +0x90, 0x5327c\nLDR             X0, [X19,#0x30]                                        ; +0x94, 0x53280\nCBZ             X0, loc_53290                                          ; +0x98, 0x53284\nAND             W1, W21, #1                                            ; +0x9c, 0x53288\nBL              sub_53D74                                              ; +0xa0, 0x5328c\nLDR             X0, [X19,#0x2F0]                                       ; +0xa4, 0x53290\nCBZ             X0, loc_532A0                                          ; +0xa8, 0x53294\nAND             W1, W21, #1                                            ; +0xac, 0x53298\nBL              sub_53D74                                              ; +0xb0, 0x5329c\nLDR             X0, [X19,#0x2F8]                                       ; +0xb4, 0x532a0\nCBZ             X0, loc_532B0                                          ; +0xb8, 0x532a4\nAND             W1, W21, #1                                            ; +0xbc, 0x532a8\nBL              sub_53D74                                              ; +0xc0, 0x532ac\nAND             W1, W20, #1                                            ; +0xc4, 0x532b0\nMOV             X0, X19                                                ; +0xc8, 0x532b4\nLDP             X29, X30, [SP,#0x20+var_s0]                            ; +0xcc, 0x532b8\nLDP             X20, X19, [SP,#0x20+var_10]                            ; +0xd0, 0x532bc\nLDR             X21, [SP+0x20+var_20],#0x30                            ; +0xd4, 0x532c0\nB               loc_52588                                              ; +0xd8, 0x532c4", "xrefs": ["<???> @ 0x10c260"], "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"}