// // sub_57CC0 from 0x57cc0 to 0x57dc8 (264 bytes) // // 3 xrefs: // > sub_57CBC @ 0x57cbc // > sub_57CC0 @ 0x57d74 // > sub_581C4 @ 0x58354 // // This function is hookable on this platform! // // Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA // Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings // __int64 __fastcall sub_57CC0(__int64 a1) { float v2; // s1 float v3; // s0 __int64 v4; // x8 float v5; // s1 __int64 result; // x0 unsigned int v7; // w20 char v8; // zf __int64 v9; // x8 v2 = 0.0; v3 = 0.0; if ( (*(_BYTE *)(a1 + 72) & 2) == 0 ) { v4 = *(_QWORD *)(a1 + 32); if ( v4 ) { v5 = *(float *)(v4 + 488); v3 = *(float *)(a1 + 92) + (float)(*(float *)(a1 + 88) * *(float *)(v4 + 492)); } else { v3 = *(float *)(a1 + 92) + *(float *)(a1 + 88); v5 = 1.0; } v2 = *(float *)(a1 + 48) * v5; } if ( v3 == *(float *)(a1 + 492) && v2 == *(float *)(a1 + 488) ) return 0; v7 = 0; *(float *)(a1 + 488) = v2; *(float *)(a1 + 492) = v3; while ( v7 != 4 ) { result = sub_5875C(a1, v7++); if ( (_DWORD)result ) return result; } do { result = ((__int64 (*)(void))sub_5937C)(); if ( v8 ) break; result = sub_57CC0(*(_QWORD *)(a1 + 416)); } while ( !(_DWORD)result ); while ( 1 ) { sub_5937C(result); if ( v8 ) break; result = (*(__int64 (__fastcall **)(_QWORD))(**(_QWORD **)(a1 + 440) + 512LL))(*(_QWORD *)(a1 + 440)); if ( (_DWORD)result ) return result; } v9 = *(_QWORD *)(a1 + 584); if ( !v9 ) return 0; *(_DWORD *)(v9 + 636) = *(_DWORD *)(a1 + 492); return 0; }