// // sub_590BC from 0x590bc to 0x59168 (172 bytes) // // 1 xrefs: // > @ 0x10c590 // // 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_590BC(__int64 a1, char a2, float a3, float a4) { float v4; // s2 float v5; // s4 float v6; // s1 float v7; // s0 __int64 v8; // x8 float v9; // s1 __int64 *v10; // x19 __int64 *v11; // x20 float v12; // s0 v4 = 1.0; v5 = fminf(a4, 1.0); v6 = fmaxf(fminf(a3, 1.0), 0.0); v7 = fmaxf(v5, 0.0); *(float *)(a1 + 192) = v6; *(float *)(a1 + 196) = v7; if ( (a2 & 1) != 0 ) { *(float *)(a1 + 200) = v6; *(float *)(a1 + 204) = v7; } v8 = *(_QWORD *)(a1 + 32); if ( v8 ) { v4 = *(float *)(v8 + 500); v9 = (float)(*(float *)(v8 + 496) - (float)(v6 * *(float *)(v8 + 496))) - (float)(*(float *)(a1 + 208) * (float)(*(float *)(v8 + 496) - (float)(v6 * *(float *)(v8 + 496)))); } else { v9 = (float)(1.0 - v6) - (float)(*(float *)(a1 + 208) * (float)(1.0 - v6)); } v10 = (__int64 *)(a1 + 400); v11 = (__int64 *)(a1 + 400); v12 = (float)(v4 - (float)(v7 * v4)) - (float)(*(float *)(a1 + 212) * (float)(v4 - (float)(v7 * v4))); *(float *)(a1 + 496) = v9; *(float *)(a1 + 500) = v12; while ( 1 ) { v11 = (__int64 *)*v11; if ( v11 == v10 ) break; (*(void (__fastcall **)(__int64, _QWORD, float, float))(*(_QWORD *)v11[2] + 408LL))( v11[2], 0, *(float *)(v11[2] + 192), *(float *)(v11[2] + 196)); } return 0; }