// // sub_596C0 from 0x596c0 to 0x59774 (180 bytes) // // 10 xrefs: // > sub_58828 @ 0x588a0 // > sub_595BC @ 0x59620 // > sub_5A244 @ 0x5a274 // > sub_5C728 @ 0x5c730 // > sub_8D6F8 @ 0x8f06c // > sub_925EC @ 0x928a0 // > sub_964C8 @ 0x964f0 // > sub_A1024 @ 0xa104c // > sub_A3828 @ 0xa39dc // > FMOD::Channel::setFrequency @ 0xced4c // // 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_596C0(__int64 a1) { __int64 v1; // x30 __int64 v2; // x0 float v3; // s0 char v4; // zf __int64 result; // x0 __int64 v6; // x19 float *v7; // x0 float v8; // s8 v2 = sub_5C748(a1, v1); if ( v4 ) return 29; v6 = v2; v7 = *(float **)(v2 + 472); if ( !v7 || !*(_QWORD *)(v6 + 32) ) return 30; v8 = *(float *)(v6 + 556); *(float *)(v6 + 556) = fminf(fmaxf(v7[26], v3), v7[25]); result = (*(__int64 (__fastcall **)(float *))(*(_QWORD *)v7 + 112LL))(v7); if ( !(_DWORD)result ) { if ( *(_QWORD *)(v6 + 496) && (v8 < 0.0 && *(float *)(v6 + 556) > 0.0 || v8 > 0.0 && *(float *)(v6 + 556) < 0.0) ) sub_5C71C(); return 0; } return result; }