{"type": "func", "start": 359616, "end": 359880, "name": "sub_57CC0", "pseudocode": "// \n// sub_57CC0 from 0x57cc0 to 0x57dc8 (264 bytes)\n// \n// 3 xrefs:\n// > sub_57CBC @ 0x57cbc\n// > sub_57CC0 @ 0x57d74\n// > sub_581C4 @ 0x58354\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_57CC0(__int64 a1)\n{\n  float v2; // s1\n  float v3; // s0\n  __int64 v4; // x8\n  float v5; // s1\n  __int64 result; // x0\n  unsigned int v7; // w20\n  char v8; // zf\n  __int64 v9; // x8\n\n  v2 = 0.0;\n  v3 = 0.0;\n  if ( (*(_BYTE *)(a1 + 72) & 2) == 0 )\n  {\n    v4 = *(_QWORD *)(a1 + 32);\n    if ( v4 )\n    {\n      v5 = *(float *)(v4 + 488);\n      v3 = *(float *)(a1 + 92) + (float)(*(float *)(a1 + 88) * *(float *)(v4 + 492));\n    }\n    else\n    {\n      v3 = *(float *)(a1 + 92) + *(float *)(a1 + 88);\n      v5 = 1.0;\n    }\n    v2 = *(float *)(a1 + 48) * v5;\n  }\n  if ( v3 == *(float *)(a1 + 492) && v2 == *(float *)(a1 + 488) )\n    return 0;\n  v7 = 0;\n  *(float *)(a1 + 488) = v2;\n  *(float *)(a1 + 492) = v3;\n  while ( v7 != 4 )\n  {\n    result = sub_5875C(a1, v7++);\n    if ( (_DWORD)result )\n      return result;\n  }\n  do\n  {\n    result = ((__int64 (*)(void))sub_5937C)();\n    if ( v8 )\n      break;\n    result = sub_57CC0(*(_QWORD *)(a1 + 416));\n  }\n  while ( !(_DWORD)result );\n  while ( 1 )\n  {\n    sub_5937C(result);\n    if ( v8 )\n      break;\n    result = (*(__int64 (__fastcall **)(_QWORD))(**(_QWORD **)(a1 + 440) + 512LL))(*(_QWORD *)(a1 + 440));\n    if ( (_DWORD)result )\n      return result;\n  }\n  v9 = *(_QWORD *)(a1 + 584);\n  if ( !v9 )\n    return 0;\n  *(_DWORD *)(v9 + 636) = *(_DWORD *)(a1 + 492);\n  return 0;\n}", "assembly": "; \n; sub_57CC0 from 0x57cc0 to 0x57dc8 (264 bytes)\n; \n; 3 xrefs:\n; > sub_57CBC @ 0x57cbc\n; > sub_57CC0 @ 0x57d74\n; > sub_581C4 @ 0x58354\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, 0x57cc0\nSTP             X20, X19, [SP,#0x20+var_10]                            ; +0x4, 0x57cc4\nSTP             X29, X30, [SP,#0x20+var_s0]                            ; +0x8, 0x57cc8\nLDRB            W8, [X0,#0x48]                                         ; +0xc, 0x57ccc\nMOV             X19, X0                                                ; +0x10, 0x57cd0\nFMOV            S1, WZR                                                ; +0x14, 0x57cd4\nFMOV            S0, WZR                                                ; +0x18, 0x57cd8\nADD             X29, SP, #0x20                                         ; +0x1c, 0x57cdc\nTBNZ            W8, #1, loc_57D14                                      ; +0x20, 0x57ce0\nLDR             X8, [X19,#0x20]                                        ; +0x24, 0x57ce4\nCBZ             X8, loc_57D00                                          ; +0x28, 0x57ce8\nLDR             S0, [X8,#0x1EC]                                        ; +0x2c, 0x57cec\nLDP             S2, S3, [X19,#0x58]                                    ; +0x30, 0x57cf0\nLDR             S1, [X8,#0x1E8]                                        ; +0x34, 0x57cf4\nFMADD           S0, S2, S0, S3                                         ; +0x38, 0x57cf8\nB               loc_57D0C                                              ; +0x3c, 0x57cfc\nLDP             S0, S1, [X19,#0x58]                                    ; +0x40, 0x57d00\nFADD            S0, S1, S0                                             ; +0x44, 0x57d04\nFMOV            S1, #1.0                                               ; +0x48, 0x57d08\nLDR             S2, [X19,#0x30]                                        ; +0x4c, 0x57d0c\nFMUL            S1, S2, S1                                             ; +0x50, 0x57d10\nLDR             S2, [X19,#0x1EC]                                       ; +0x54, 0x57d14\nFCMP            S0, S2                                                 ; +0x58, 0x57d18\nB.NE            loc_57D34                                              ; +0x5c, 0x57d1c\nLDR             S2, [X19,#0x1E8]                                       ; +0x60, 0x57d20\nFCMP            S1, S2                                                 ; +0x64, 0x57d24\nB.NE            loc_57D34                                              ; +0x68, 0x57d28\nMOV             W0, WZR                                                ; +0x6c, 0x57d2c\nB               loc_57DBC                                              ; +0x70, 0x57d30\nMOV             W20, WZR                                               ; +0x74, 0x57d34\nSTR             S1, [X19,#0x1E8]                                       ; +0x78, 0x57d38\nSTR             S0, [X19,#0x1EC]                                       ; +0x7c, 0x57d3c\nCMP             W20, #4                                                ; +0x80, 0x57d40\nB.EQ            loc_57D60                                              ; +0x84, 0x57d44\nMOV             X0, X19                                                ; +0x88, 0x57d48\nMOV             W1, W20                                                ; +0x8c, 0x57d4c\nBL              sub_5875C                                              ; +0x90, 0x57d50\nADD             W20, W20, #1                                           ; +0x94, 0x57d54\nCBZ             W0, loc_57D40                                          ; +0x98, 0x57d58\nB               loc_57DBC                                              ; +0x9c, 0x57d5c\nADD             X20, X19, #0x190                                       ; +0xa0, 0x57d60\nMOV             X21, X20                                               ; +0xa4, 0x57d64\nBL              sub_5937C                                              ; +0xa8, 0x57d68\nB.EQ            loc_57D80                                              ; +0xac, 0x57d6c\nLDR             X0, [X21,#0x10]                                        ; +0xb0, 0x57d70\nBL              sub_57CC0                                              ; +0xb4, 0x57d74\nCBZ             W0, loc_57D68                                          ; +0xb8, 0x57d78\nB               loc_57DBC                                              ; +0xbc, 0x57d7c\nADD             X20, X19, #0x1A8                                       ; +0xc0, 0x57d80\nMOV             X21, X20                                               ; +0xc4, 0x57d84\nBL              sub_5937C                                              ; +0xc8, 0x57d88\nB.EQ            loc_57DA8                                              ; +0xcc, 0x57d8c\nLDR             X0, [X21,#0x10]                                        ; +0xd0, 0x57d90\nLDR             X8, [X0]                                               ; +0xd4, 0x57d94\nLDR             X8, [X8,#0x200]                                        ; +0xd8, 0x57d98\nBLR             X8                                                     ; +0xdc, 0x57d9c\nCBZ             W0, loc_57D88                                          ; +0xe0, 0x57da0\nB               loc_57DBC                                              ; +0xe4, 0x57da4\nLDR             X8, [X19,#0x248]                                       ; +0xe8, 0x57da8\nCBZ             X8, loc_57D2C                                          ; +0xec, 0x57dac\nLDR             W9, [X19,#0x1EC]                                       ; +0xf0, 0x57db0\nMOV             W0, WZR                                                ; +0xf4, 0x57db4\nSTR             W9, [X8,#0x27C]                                        ; +0xf8, 0x57db8\nLDP             X29, X30, [SP,#0x20+var_s0]                            ; +0xfc, 0x57dbc\nLDP             X20, X19, [SP,#0x20+var_10]                            ; +0x100, 0x57dc0\nB               loc_59350                                              ; +0x104, 0x57dc4", "xrefs": ["sub_57CBC @ 0x57cbc", "sub_57CC0 @ 0x57d74", "sub_581C4 @ 0x58354"], "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"}