{"type": "func", "start": 356768, "end": 356968, "name": "sub_571A0", "pseudocode": "// \n// sub_571A0 from 0x571a0 to 0x57268 (200 bytes)\n// \n// 2 xrefs:\n// > <???> @ 0x10c558\n// > <???> @ 0x10c780\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_571A0(__int64 a1, float a2, float a3, float a4)\n{\n  __int64 result; // x0\n  char v9; // zf\n  int v10; // w8\n  _BYTE v11[4]; // [xsp+Ch] [xbp-24h] BYREF\n\n  result = (*(__int64 (__fastcall **)(__int64, _BYTE *))(*(_QWORD *)a1 + 152LL))(a1, v11);\n  if ( !(_DWORD)result )\n  {\n    if ( (v11[0] & 0x10) != 0 )\n    {\n      if ( (~LODWORD(a2) & 0x7F800000) != 0 && (((void (*)(void))loc_578B8)(), !v9) && (~LODWORD(a4) & 0x7F800000) != 0 )\n      {\n        if ( a2 <= a3 )\n        {\n          v10 = *(_DWORD *)(a1 + 72) | 4;\n          *(float *)(a1 + 168) = a2;\n          *(float *)(a1 + 172) = a3;\n          *(float *)(a1 + 176) = fmaxf(fminf(a4, 1.0), 0.0);\n          *(_DWORD *)(a1 + 72) = v10;\n          return 0;\n        }\n        else\n        {\n          return 31;\n        }\n      }\n      else\n      {\n        return 29;\n      }\n    }\n    else\n    {\n      return 40;\n    }\n  }\n  return result;\n}", "assembly": "; \n; sub_571A0 from 0x571a0 to 0x57268 (200 bytes)\n; \n; 2 xrefs:\n; > <???> @ 0x10c558\n; > <???> @ 0x10c780\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, #0x40                                          ; +0x0, 0x571a0\nSTP             D9, D8, [SP,#0x30+var_18]                              ; +0x4, 0x571a4\nSTP             X29, X30, [SP,#0x30+var_s0]                            ; +0x8, 0x571a8\nLDR             X8, [X0]                                               ; +0xc, 0x571ac\nADD             X1, SP, #0x30+var_24                                   ; +0x10, 0x571b0\nSTR             D10, [SP,#0x30+var_20]                                 ; +0x14, 0x571b4\nSTR             X19, [SP,#0x30+var_8]                                  ; +0x18, 0x571b8\nLDR             X8, [X8,#0x98]                                         ; +0x1c, 0x571bc\nADD             X29, SP, #0x30                                         ; +0x20, 0x571c0\nMOV             V9.16B, V2.16B                                         ; +0x24, 0x571c4\nMOV             V8.16B, V1.16B                                         ; +0x28, 0x571c8\nMOV             X19, X0                                                ; +0x2c, 0x571cc\nMOV             V10.16B, V0.16B                                        ; +0x30, 0x571d0\nBLR             X8                                                     ; +0x34, 0x571d4\nCBNZ            W0, loc_57218                                          ; +0x38, 0x571d8\nLDRB            W8, [SP,#0x30+var_24]                                  ; +0x3c, 0x571dc\nTBNZ            W8, #4, loc_571EC                                      ; +0x40, 0x571e0\nMOV             W0, #0x28 ; '('                                        ; +0x44, 0x571e4\nB               loc_57218                                              ; +0x48, 0x571e8\nFMOV            W8, S10                                                ; +0x4c, 0x571ec\nMVN             W8, W8                                                 ; +0x50, 0x571f0\nTST             W8, #0x7F800000                                        ; +0x54, 0x571f4\nB.EQ            loc_57214                                              ; +0x58, 0x571f8\nBL              loc_578B8                                              ; +0x5c, 0x571fc\nB.EQ            loc_57214                                              ; +0x60, 0x57200\nFMOV            W8, S9                                                 ; +0x64, 0x57204\nMVN             W8, W8                                                 ; +0x68, 0x57208\nTST             W8, #0x7F800000                                        ; +0x6c, 0x5720c\nB.NE            loc_5722C                                              ; +0x70, 0x57210\nMOV             W0, #0x1D                                              ; +0x74, 0x57214\nLDP             X29, X30, [SP,#0x30+var_s0]                            ; +0x78, 0x57218\nLDR             X19, [SP,#0x30+var_8]                                  ; +0x7c, 0x5721c\nLDP             D9, D8, [SP,#0x30+var_18]                              ; +0x80, 0x57220\nLDR             D10, [SP,#0x30+var_20]                                 ; +0x84, 0x57224\nB               loc_57944                                              ; +0x88, 0x57228\nFCMP            S10, S8                                                ; +0x8c, 0x5722c\nB.LE            loc_5723C                                              ; +0x90, 0x57230\nMOV             W0, #0x1F                                              ; +0x94, 0x57234\nB               loc_57218                                              ; +0x98, 0x57238\nLDR             W8, [X19,#0x48]                                        ; +0x9c, 0x5723c\nFMOV            S0, #1.0                                               ; +0xa0, 0x57240\nFMOV            S1, WZR                                                ; +0xa4, 0x57244\nFMINNM          S0, S9, S0                                             ; +0xa8, 0x57248\nMOV             W0, WZR                                                ; +0xac, 0x5724c\nFMAXNM          S0, S0, S1                                             ; +0xb0, 0x57250\nORR             W8, W8, #4                                             ; +0xb4, 0x57254\nSTP             S10, S8, [X19,#0xA8]                                   ; +0xb8, 0x57258\nSTR             S0, [X19,#0xB0]                                        ; +0xbc, 0x5725c\nSTR             W8, [X19,#0x48]                                        ; +0xc0, 0x57260\nB               loc_57218                                              ; +0xc4, 0x57264", "xrefs": ["<???> @ 0x10c558", "<???> @ 0x10c780"], "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"}