{"type": "func", "start": 359204, "end": 359496, "name": "sub_57B24", "pseudocode": "// \n// sub_57B24 from 0x57b24 to 0x57c48 (292 bytes)\n// \n// 1 xrefs:\n// > <???> @ 0x10c5e0\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_57B24(__int64 a1, __int64 a2, __int64 a3)\n{\n  __int64 v3; // x19\n  __int64 v4; // x25\n  __int64 v5; // x24\n  __int64 result; // x0\n  __int64 v10; // x20\n  __int64 v11; // x8\n  _BYTE v12[4]; // [xsp+0h] [xbp-50h] BYREF\n  _BYTE v13[4]; // [xsp+4h] [xbp-4Ch] BYREF\n  __int64 v14; // [xsp+8h] [xbp-48h] BYREF\n  __int64 v15; // [xsp+18h] [xbp-38h] 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, v12);\n  if ( !(_DWORD)result )\n  {\n    if ( a2 )\n      v10 = a2;\n    else\n      v10 = v3;\n    if ( a3 )\n      v11 = a3;\n    else\n      v11 = v4;\n    *(_QWORD *)(a1 + 96) = v10;\n    *(_QWORD *)(a1 + 104) = v11;\n    *(_QWORD *)(a1 + 112) = v5;\n    if ( !a2 )\n      return 0;\n    result = sub_C7F9C(v3, &v15, &v14, v13);\n    if ( !(_DWORD)result )\n    {\n      result = sub_C7EB4(v10, v15, v14, v13[0]);\n      if ( !(_DWORD)result )\n      {\n        result = sub_CC714(v10, 1, *(float *)(a1 + 52));\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              result = sub_C7D1C(v10, v12[0] == 0, 1);\n              if ( !(_DWORD)result )\n              {\n                result = sub_C7D1C(v3, 1, 1);\n                if ( !(_DWORD)result )\n                  return 0;\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n  return result;\n}", "assembly": "; \n; sub_57B24 from 0x57b24 to 0x57c48 (292 bytes)\n; \n; 1 xrefs:\n; > <???> @ 0x10c5e0\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, 0x57b24\nSTP             X24, X23, [SP,#0x50+var_30]                            ; +0x4, 0x57b28\nSTP             X22, X21, [SP,#0x50+var_20]                            ; +0x8, 0x57b2c\nSTP             X20, X19, [SP,#0x50+var_10]                            ; +0xc, 0x57b30\nSTP             X29, X30, [SP,#0x50+var_s0]                            ; +0x10, 0x57b34\nLDR             X8, [X0]                                               ; +0x14, 0x57b38\nSTR             X25, [SP,#0x50+var_40]                                 ; +0x18, 0x57b3c\nLDP             X19, X25, [X0,#0x60]                                   ; +0x1c, 0x57b40\nLDR             X24, [X0,#0x70]                                        ; +0x20, 0x57b44\nLDR             X8, [X8,#0x18]                                         ; +0x24, 0x57b48\nMOV             X23, X1                                                ; +0x28, 0x57b4c\nMOV             X1, SP                                                 ; +0x2c, 0x57b50\nADD             X29, SP, #0x50                                         ; +0x30, 0x57b54\nMOV             X22, X2                                                ; +0x34, 0x57b58\nMOV             X21, X0                                                ; +0x38, 0x57b5c\nBLR             X8                                                     ; +0x3c, 0x57b60\nCBZ             W0, loc_57B84                                          ; +0x40, 0x57b64\nLDP             X29, X30, [SP,#0x50+var_s0]                            ; +0x44, 0x57b68\nLDP             X20, X19, [SP,#0x50+var_10]                            ; +0x48, 0x57b6c\nLDP             X22, X21, [SP,#0x50+var_20]                            ; +0x4c, 0x57b70\nLDP             X24, X23, [SP,#0x50+var_30]                            ; +0x50, 0x57b74\nLDR             X25, [SP,#0x50+var_40]                                 ; +0x54, 0x57b78\nADD             SP, SP, #0x60 ; '`'                                    ; +0x58, 0x57b7c\nRET                                                                    ; +0x5c, 0x57b80\nCMP             X23, #0                                                ; +0x60, 0x57b84\nCSEL            X20, X23, X19, NE                                      ; +0x64, 0x57b88\nCMP             X22, #0                                                ; +0x68, 0x57b8c\nCSEL            X8, X25, X22, EQ                                       ; +0x6c, 0x57b90\nSTP             X20, X8, [X21,#0x60]                                   ; +0x70, 0x57b94\nSTR             X24, [X21,#0x70]                                       ; +0x74, 0x57b98\nCBZ             X23, loc_57C40                                         ; +0x78, 0x57b9c\nADD             X1, SP, #0x50+var_38                                   ; +0x7c, 0x57ba0\nADD             X2, SP, #0x50+var_48                                   ; +0x80, 0x57ba4\nADD             X3, SP, #0x50+var_4C                                   ; +0x84, 0x57ba8\nMOV             X0, X19                                                ; +0x88, 0x57bac\nBL              sub_C7F9C                                              ; +0x8c, 0x57bb0\nCBNZ            W0, loc_57B68                                          ; +0x90, 0x57bb4\nLDR             X1, [SP,#0x50+var_38]                                  ; +0x94, 0x57bb8\nLDR             X2, [SP,#0x50+var_48]                                  ; +0x98, 0x57bbc\nLDRB            W3, [SP,#0x50+var_4C]                                  ; +0x9c, 0x57bc0\nMOV             X0, X20                                                ; +0xa0, 0x57bc4\nBL              sub_C7EB4                                              ; +0xa4, 0x57bc8\nCBNZ            W0, loc_57B68                                          ; +0xa8, 0x57bcc\nLDR             S0, [X21,#0x34]                                        ; +0xac, 0x57bd0\nMOV             W1, #1                                                 ; +0xb0, 0x57bd4\nMOV             X0, X20                                                ; +0xb4, 0x57bd8\nBL              sub_CC714                                              ; +0xb8, 0x57bdc\nCBNZ            W0, loc_57B68                                          ; +0xbc, 0x57be0\nMOV             X0, X19                                                ; +0xc0, 0x57be4\nMOV             X1, XZR                                                ; +0xc4, 0x57be8\nMOV             X2, XZR                                                ; +0xc8, 0x57bec\nMOV             W3, WZR                                                ; +0xcc, 0x57bf0\nBL              sub_C7EB4                                              ; +0xd0, 0x57bf4\nCBNZ            W0, loc_57B68                                          ; +0xd4, 0x57bf8\nFMOV            S0, #1.0                                               ; +0xd8, 0x57bfc\nMOV             W1, #1                                                 ; +0xdc, 0x57c00\nMOV             X0, X19                                                ; +0xe0, 0x57c04\nBL              sub_CC714                                              ; +0xe4, 0x57c08\nCBNZ            W0, loc_57B68                                          ; +0xe8, 0x57c0c\nLDRB            W8, [SP,#0x50+var_50]                                  ; +0xec, 0x57c10\nMOV             W2, #1                                                 ; +0xf0, 0x57c14\nMOV             X0, X20                                                ; +0xf4, 0x57c18\nCMP             W8, #0                                                 ; +0xf8, 0x57c1c\nCSET            W1, EQ                                                 ; +0xfc, 0x57c20\nBL              sub_C7D1C                                              ; +0x100, 0x57c24\nCBNZ            W0, loc_57B68                                          ; +0x104, 0x57c28\nMOV             W1, #1                                                 ; +0x108, 0x57c2c\nMOV             W2, #1                                                 ; +0x10c, 0x57c30\nMOV             X0, X19                                                ; +0x110, 0x57c34\nBL              sub_C7D1C                                              ; +0x114, 0x57c38\nCBNZ            W0, loc_57B68                                          ; +0x118, 0x57c3c\nMOV             W0, WZR                                                ; +0x11c, 0x57c40\nB               loc_57B68                                              ; +0x120, 0x57c44", "xrefs": ["<???> @ 0x10c5e0"], "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"}