{"type": "func", "start": 346992, "end": 347116, "name": "sub_54B70", "pseudocode": "// \n// sub_54B70 from 0x54b70 to 0x54bec (124 bytes)\n// \n// 1 xrefs:\n// > <???> @ 0x10c398\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_54B70(__int64 a1, unsigned int a2)\n{\n  __int64 result; // x0\n  char v5; // w8\n\n  if ( !*(_QWORD *)(a1 + 192) )\n    return 30;\n  result = ((__int64 (*)(void))loc_52624)();\n  if ( !(_DWORD)result )\n  {\n    result = (*(__int64 (__fastcall **)(_QWORD, _QWORD))(**(_QWORD **)(a1 + 40) + 296LL))(*(_QWORD *)(a1 + 40), a2);\n    if ( !(_DWORD)result )\n    {\n      v5 = atomic_load((unsigned int *)(*(_QWORD *)(a1 + 40) + 88LL));\n      if ( (v5 & 0x80) == 0 )\n        return 0;\n      result = (*(__int64 (__fastcall **)(_QWORD, _QWORD))(**(_QWORD **)(a1 + 192) + 152LL))(*(_QWORD *)(a1 + 192), a2);\n      if ( !(_DWORD)result )\n        return 0;\n    }\n  }\n  return result;\n}", "assembly": "; \n; sub_54B70 from 0x54b70 to 0x54bec (124 bytes)\n; \n; 1 xrefs:\n; > <???> @ 0x10c398\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\nSTP             X20, X19, [SP,#-0x10+var_10]!                          ; +0x0, 0x54b70\nSTP             X29, X30, [SP,#0x10+var_s0]                            ; +0x4, 0x54b74\nLDR             X8, [X0,#0xC0]                                         ; +0x8, 0x54b78\nADD             X29, SP, #0x10                                         ; +0xc, 0x54b7c\nCBZ             X8, loc_54BDC                                          ; +0x10, 0x54b80\nMOV             X20, X0                                                ; +0x14, 0x54b84\nMOV             W19, W1                                                ; +0x18, 0x54b88\nBL              loc_52624                                              ; +0x1c, 0x54b8c\nCBNZ            W0, loc_54BE0                                          ; +0x20, 0x54b90\nLDR             X0, [X20,#0x28]                                        ; +0x24, 0x54b94\nMOV             W1, W19                                                ; +0x28, 0x54b98\nLDR             X8, [X0]                                               ; +0x2c, 0x54b9c\nLDR             X8, [X8,#0x128]                                        ; +0x30, 0x54ba0\nBLR             X8                                                     ; +0x34, 0x54ba4\nCBNZ            W0, loc_54BE0                                          ; +0x38, 0x54ba8\nLDR             X8, [X20,#0x28]                                        ; +0x3c, 0x54bac\nADD             X8, X8, #0x58 ; 'X'                                    ; +0x40, 0x54bb0\nLDAR            W8, [X8]                                               ; +0x44, 0x54bb4\nTBZ             W8, #7, loc_54BD4                                      ; +0x48, 0x54bb8\nLDR             X0, [X20,#0xC0]                                        ; +0x4c, 0x54bbc\nMOV             W1, W19                                                ; +0x50, 0x54bc0\nLDR             X8, [X0]                                               ; +0x54, 0x54bc4\nLDR             X8, [X8,#0x98]                                         ; +0x58, 0x54bc8\nBLR             X8                                                     ; +0x5c, 0x54bcc\nCBNZ            W0, loc_54BE0                                          ; +0x60, 0x54bd0\nMOV             W0, WZR                                                ; +0x64, 0x54bd4\nB               loc_54BE0                                              ; +0x68, 0x54bd8\nMOV             W0, #0x1E                                              ; +0x6c, 0x54bdc\nLDP             X29, X30, [SP,#0x10+var_s0]                            ; +0x70, 0x54be0\nLDP             X20, X19, [SP+0x10+var_10],#0x20                       ; +0x74, 0x54be4\nRET                                                                    ; +0x78, 0x54be8", "xrefs": ["<???> @ 0x10c398"], "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"}