{"type": "func", "start": 376828, "end": 377156, "name": "sub_5BFFC", "pseudocode": "// \n// sub_5BFFC from 0x5bffc to 0x5c144 (328 bytes)\n// \n// 1 xrefs:\n// > <???> @ 0x10c808\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_5BFFC(__int64 a1, __int64 a2, __int64 a3)\n{\n  __int64 v3; // x20\n  __int64 v4; // x25\n  __int64 v5; // x24\n  __int64 result; // x0\n  __int64 v10; // x21\n  __int64 v11; // x8\n  int v12; // w22\n  __int64 v13; // x0\n  __int64 v14; // [xsp+0h] [xbp-50h] BYREF\n  __int64 v15; // [xsp+8h] [xbp-48h] BYREF\n  _BYTE v16[4]; // [xsp+18h] [xbp-38h] BYREF\n  _BYTE v17[4]; // [xsp+1Ch] [xbp-34h] BYREF\n\n  v3 = *(_QWORD *)(a1 + 96);\n  v4 = *(_QWORD *)(a1 + 104);\n  v5 = *(_QWORD *)(a1 + 112);\n  result = (*(__int64 (__fastcall **)(__int64, _BYTE *))(*(_QWORD *)a1 + 24LL))(a1, v17);\n  if ( !(_DWORD)result )\n  {\n    v10 = a2 ? a2 : v3;\n    v11 = a3 ? a3 : v4;\n    *(_QWORD *)(a1 + 96) = v10;\n    *(_QWORD *)(a1 + 104) = v11;\n    *(_QWORD *)(a1 + 112) = v5;\n    if ( !a2 )\n      return 0;\n    v12 = v17[0];\n    result = sub_C7F9C(v3, &v15, &v14, v16);\n    if ( !(_DWORD)result )\n    {\n      result = sub_C7EB4(v10, v15, v14, v16[0]);\n      if ( !(_DWORD)result )\n      {\n        result = sub_CC714(v10, 1, *(float *)(a1 + 52));\n        if ( !(_DWORD)result )\n        {\n          result = sub_C7D1C(v10, v12 == 0, 1);\n          if ( !(_DWORD)result )\n          {\n            result = sub_C7EB4(v3, 0, 0, 0);\n            if ( !(_DWORD)result )\n            {\n              result = sub_CC714(v3, 1, 1.0);\n              if ( !(_DWORD)result )\n              {\n                if ( v3 == v5 || (result = sub_C7D1C(v3, 1, 1), !(_DWORD)result) )\n                {\n                  v13 = *(_QWORD *)(a1 + 472);\n                  if ( !v13 )\n                    return 0;\n                  if ( !v17[0] )\n                    return 0;\n                  result = (*(__int64 (__fastcall **)(__int64, __int64))(*(_QWORD *)v13 + 88LL))(v13, 1);\n                  if ( !(_DWORD)result )\n                    return 0;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n  return result;\n}", "assembly": "; \n; sub_5BFFC from 0x5bffc to 0x5c144 (328 bytes)\n; \n; 1 xrefs:\n; > <???> @ 0x10c808\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\nSUB             SP, SP, #0x60                                          ; +0x0, 0x5bffc\nSTP             X24, X23, [SP,#0x50+var_30]                            ; +0x4, 0x5c000\nSTP             X22, X21, [SP,#0x50+var_20]                            ; +0x8, 0x5c004\nSTP             X20, X19, [SP,#0x50+var_10]                            ; +0xc, 0x5c008\nSTP             X29, X30, [SP,#0x50+var_s0]                            ; +0x10, 0x5c00c\nLDR             X8, [X0]                                               ; +0x14, 0x5c010\nSTR             X25, [SP,#0x50+var_40]                                 ; +0x18, 0x5c014\nLDP             X20, X25, [X0,#0x60]                                   ; +0x1c, 0x5c018\nLDR             X24, [X0,#0x70]                                        ; +0x20, 0x5c01c\nLDR             X8, [X8,#0x18]                                         ; +0x24, 0x5c020\nMOV             X23, X1                                                ; +0x28, 0x5c024\nADD             X1, SP, #0x50+var_34                                   ; +0x2c, 0x5c028\nADD             X29, SP, #0x50                                         ; +0x30, 0x5c02c\nMOV             X22, X2                                                ; +0x34, 0x5c030\nMOV             X19, X0                                                ; +0x38, 0x5c034\nBLR             X8                                                     ; +0x3c, 0x5c038\nCBZ             W0, loc_5C058                                          ; +0x40, 0x5c03c\nLDP             X29, X30, [SP,#0x50+var_s0]                            ; +0x44, 0x5c040\nLDP             X20, X19, [SP,#0x50+var_10]                            ; +0x48, 0x5c044\nLDP             X22, X21, [SP,#0x50+var_20]                            ; +0x4c, 0x5c048\nLDP             X24, X23, [SP,#0x50+var_30]                            ; +0x50, 0x5c04c\nLDR             X25, [SP,#0x50+var_40]                                 ; +0x54, 0x5c050\nB               loc_5C6B4                                              ; +0x58, 0x5c054\nCMP             X23, #0                                                ; +0x5c, 0x5c058\nCSEL            X21, X23, X20, NE                                      ; +0x60, 0x5c05c\nCMP             X22, #0                                                ; +0x64, 0x5c060\nCSEL            X8, X25, X22, EQ                                       ; +0x68, 0x5c064\nSTP             X21, X8, [X19,#0x60]                                   ; +0x6c, 0x5c068\nSTR             X24, [X19,#0x70]                                       ; +0x70, 0x5c06c\nCBZ             X23, loc_5C13C                                         ; +0x74, 0x5c070\nLDRB            W22, [SP,#0x50+var_34]                                 ; +0x78, 0x5c074\nADD             X1, SP, #0x50+var_48                                   ; +0x7c, 0x5c078\nMOV             X2, SP                                                 ; +0x80, 0x5c07c\nADD             X3, SP, #0x50+var_38                                   ; +0x84, 0x5c080\nMOV             X0, X20                                                ; +0x88, 0x5c084\nBL              sub_C7F9C                                              ; +0x8c, 0x5c088\nCBNZ            W0, loc_5C040                                          ; +0x90, 0x5c08c\nLDP             X2, X1, [SP,#0x50+var_50]                              ; +0x94, 0x5c090\nLDRB            W3, [SP,#0x50+var_38]                                  ; +0x98, 0x5c094\nMOV             X0, X21                                                ; +0x9c, 0x5c098\nBL              sub_C7EB4                                              ; +0xa0, 0x5c09c\nCBNZ            W0, loc_5C040                                          ; +0xa4, 0x5c0a0\nLDR             S0, [X19,#0x34]                                        ; +0xa8, 0x5c0a4\nMOV             W1, #1                                                 ; +0xac, 0x5c0a8\nMOV             X0, X21                                                ; +0xb0, 0x5c0ac\nBL              sub_CC714                                              ; +0xb4, 0x5c0b0\nCBNZ            W0, loc_5C040                                          ; +0xb8, 0x5c0b4\nCMP             W22, #0                                                ; +0xbc, 0x5c0b8\nCSET            W1, EQ                                                 ; +0xc0, 0x5c0bc\nMOV             W2, #1                                                 ; +0xc4, 0x5c0c0\nMOV             X0, X21                                                ; +0xc8, 0x5c0c4\nBL              sub_C7D1C                                              ; +0xcc, 0x5c0c8\nCBNZ            W0, loc_5C040                                          ; +0xd0, 0x5c0cc\nMOV             X0, X20                                                ; +0xd4, 0x5c0d0\nMOV             X1, XZR                                                ; +0xd8, 0x5c0d4\nMOV             X2, XZR                                                ; +0xdc, 0x5c0d8\nMOV             W3, WZR                                                ; +0xe0, 0x5c0dc\nBL              sub_C7EB4                                              ; +0xe4, 0x5c0e0\nCBNZ            W0, loc_5C040                                          ; +0xe8, 0x5c0e4\nFMOV            S0, #1.0                                               ; +0xec, 0x5c0e8\nMOV             W1, #1                                                 ; +0xf0, 0x5c0ec\nMOV             X0, X20                                                ; +0xf4, 0x5c0f0\nBL              sub_CC714                                              ; +0xf8, 0x5c0f4\nCBNZ            W0, loc_5C040                                          ; +0xfc, 0x5c0f8\nCMP             X20, X24                                               ; +0x100, 0x5c0fc\nB.EQ            loc_5C118                                              ; +0x104, 0x5c100\nMOV             W1, #1                                                 ; +0x108, 0x5c104\nMOV             W2, #1                                                 ; +0x10c, 0x5c108\nMOV             X0, X20                                                ; +0x110, 0x5c10c\nBL              sub_C7D1C                                              ; +0x114, 0x5c110\nCBNZ            W0, loc_5C040                                          ; +0x118, 0x5c114\nLDR             X0, [X19,#0x1D8]                                       ; +0x11c, 0x5c118\nCBZ             X0, loc_5C13C                                          ; +0x120, 0x5c11c\nLDRB            W8, [SP,#0x50+var_34]                                  ; +0x124, 0x5c120\nCBZ             W8, loc_5C13C                                          ; +0x128, 0x5c124\nLDR             X8, [X0]                                               ; +0x12c, 0x5c128\nMOV             W1, #1                                                 ; +0x130, 0x5c12c\nLDR             X8, [X8,#0x58]                                         ; +0x134, 0x5c130\nBLR             X8                                                     ; +0x138, 0x5c134\nCBNZ            W0, loc_5C040                                          ; +0x13c, 0x5c138\nMOV             W0, WZR                                                ; +0x140, 0x5c13c\nB               loc_5C040                                              ; +0x144, 0x5c140", "xrefs": ["<???> @ 0x10c808"], "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"}