// // sub_5999C from 0x5999c to 0x59ae8 (332 bytes) // // 2 xrefs: // > sub_597E0 @ 0x59828 // > sub_5C1A8 @ 0x5c1ac // // 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_5999C(__int64 a1, float *a2, char a3) { __int64 v3; // x8 __int64 v4; // x9 float v6; // s0 float v7; // s1 float v8; // s0 float v9; // s1 float v10; // s1 float v11; // s0 float v12; // s0 float v13; // s0 float v14; // s0 float v15; // s0 __int64 v16; // x8 float v17; // s1 if ( !a2 ) return 31; v3 = *(_QWORD *)(a1 + 472); if ( !v3 ) return 30; v4 = *(_QWORD *)(a1 + 32); if ( !v4 ) return 30; if ( (*(_DWORD *)(a1 + 72) & 0x800002) != 0 ) { *a2 = 0.0; return 0; } if ( (*(_BYTE *)(v3 + 56) & 0x10) != 0 ) { v8 = *(float *)(a1 + 240); v9 = 1.0; if ( v8 >= 1.0 ) { v12 = (float)(*(float *)(a1 + 164) * *(float *)(a1 + 120)) - (float)(*(float *)(a1 + 192) * (float)(*(float *)(a1 + 164) * *(float *)(a1 + 120))); v13 = v12 - (float)(*(float *)(a1 + 208) * v12); if ( (a3 & 1) != 0 ) v9 = *(float *)(a1 + 536); v11 = (float)(v13 * v9) * (float)(*(float *)(v4 + 496) * *(float *)(v4 + 492)); goto LABEL_20; } v10 = 1.0; if ( (a3 & 1) != 0 ) v10 = *(float *)(a1 + 536); v7 = (float)((float)((float)(1.0 - v8) + (float)(*(float *)(a1 + 164) * v8)) * (float)((float)((float)((float)(1.0 - v8) + (float)(*(float *)(a1 + 120) * v8)) * (float)((float)(1.0 - v8) + (float)((float)(1.0 - *(float *)(a1 + 192)) * v8))) * (float)((float)(1.0 - v8) + (float)((float)(1.0 - *(float *)(a1 + 208)) * v8)))) * v10; v6 = *(float *)(v4 + 492) * (float)((float)(1.0 - v8) + (float)(*(float *)(v4 + 496) * v8)); } else { v6 = *(float *)(v4 + 492); if ( (a3 & 1) != 0 ) v7 = *(float *)(a1 + 536); else v7 = 1.0; } v11 = v7 * v6; LABEL_20: *a2 = v11; v14 = v11 * *(float *)(a1 + 88); *a2 = v14; v15 = *(float *)(a1 + 92) + v14; *a2 = v15; v16 = *(_QWORD *)(v3 + 40); if ( v16 ) { v17 = *(float *)(v16 + 316); if ( v17 != 0.0 ) { v15 = v17 * v15; *a2 = v15; } } *a2 = fabsf(v15); return 0; }