// // sub_597E0 from 0x597e0 to 0x5999c (444 bytes) // // 5 xrefs: // > sub_5B538 @ 0x5b590 // > sub_5BB4C @ 0x5bb5c // > sub_5C64C @ 0x5c654 // > sub_6E15C @ 0x6e2c0 // > sub_6E374 @ 0x6e438 // // 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_597E0(__int64 a1) { __int64 v1; // x8 __int64 v3; // x21 __int64 v4; // x9 float v5; // s8 int v6; // w8 int v7; // w9 int v8; // w10 int v9; // w8 int v10; // w22 float v12; // [xsp+Ch] [xbp-24h] BYREF if ( (*(_BYTE *)(a1 + 74) & 4) != 0 ) return 0; v1 = *(_QWORD *)(a1 + 472); if ( !v1 || !*(_QWORD *)(a1 + 32) ) return 30; if ( (*(_BYTE *)(v1 + 62) & 1) != 0 ) return 0; v3 = *(_QWORD *)(v1 + 40); sub_5999C(a1, &v12, 0); v4 = *(_QWORD *)(a1 + 8); v5 = *(float *)(a1 + 536) * v12; LOBYTE(v6) = 0; if ( v5 <= *(float *)(v4 + 69696) ) v6 = (*(unsigned __int8 *)(v4 + 122) >> 1) & 1; sub_59AE8( a1, (unsigned __int8)(((float)((float)((float)(1.0 - *(float *)(a1 + 192)) - (float)(*(float *)(a1 + 208) * (float)(1.0 - *(float *)(a1 + 192)))) * *(float *)(*(_QWORD *)(a1 + 32) + 496LL)) != 0.0 || (float)((float)((float)(1.0 - *(float *)(a1 + 196)) - (float)(*(float *)(a1 + 212) * (float)(1.0 - *(float *)(a1 + 196)))) * *(float *)(*(_QWORD *)(a1 + 32) + 500LL)) <= 0.0) & v6) & (*(_DWORD *)(a1 + 480) != 0)); v7 = 10001 * *(_DWORD *)(a1 + 480); v8 = v7 - (int)(float)(v5 * 1000.0) + 10000; v9 = *(_DWORD *)(a1 + 484); *(_DWORD *)(a1 + 484) = v8; v10 = *(_DWORD *)(a1 + 488); *(_DWORD *)(a1 + 488) = v7 - (int)(float)(v12 * 10000.0) + 10000; if ( v8 != v9 ) { sub_59598(a1 + 400); sub_59C90(a1 + 400, *(_QWORD *)(a1 + 8) + 1616LL, *(_QWORD *)(a1 + 8) + 1616LL, *(unsigned int *)(a1 + 484)); *(_QWORD *)(a1 + 416) = a1; } if ( !v3 || !*(_QWORD *)(v3 + 280) || *(_DWORD *)(a1 + 488) == v10 ) return 0; sub_59598(a1 + 432); sub_59C90(a1 + 432, *(_QWORD *)(v3 + 280) + 64LL, *(_QWORD *)(v3 + 280) + 64LL, *(unsigned int *)(a1 + 488)); *(_QWORD *)(a1 + 448) = a1; return 0; }