// // sub_57630 from 0x57630 to 0x57724 (244 bytes) // // 2 xrefs: // > @ 0x10c5d0 // > @ 0x10c7f8 // // 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_57630(__int64 a1, char a2, float a3, float a4) { __int64 result; // x0 char v9; // zf int v11; // w8 int v12; // w9 unsigned int v13; // w8 _BYTE v14[4]; // [xsp+Ch] [xbp-24h] BYREF result = (*(__int64 (__fastcall **)(__int64, _BYTE *))(*(_QWORD *)a1 + 152LL))(a1, v14); if ( !(_DWORD)result ) { if ( (v14[0] & 0x10) == 0 ) return 40; ((void (*)(void))loc_578B8)(); if ( v9 || (~LODWORD(a4) & 0x7F800000) == 0 ) return 29; if ( a3 < 0.0 || a3 > 1.0 ) return 31; if ( a4 >= 0.0001 ) { result = 31; if ( a4 < 10.0 || a4 > 22050.0 ) return result; } else { a4 = *(float *)(*(_QWORD *)(a1 + 8) + 69712LL); } v11 = *(_DWORD *)(a1 + 72); result = 0; *(float *)(a1 + 248) = a3; *(float *)(a1 + 252) = a4; v12 = v11 | 0x100000; v13 = v11 & 0xFFEFFFFF; if ( (a2 & 1) != 0 ) v13 = v12; *(_DWORD *)(a1 + 72) = v13; } return result; }