// // sub_595BC from 0x595bc to 0x596c0 (260 bytes) // // 2 xrefs: // > sub_59FEC @ 0x5a0e8 // > sub_5A364 @ 0x5a41c // // 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 sub_595BC() { __int64 v0; // x19 long double v1; // q8 __int64 v2; // x0 __int64 v3; // x8 __int64 v4; // x8 __int64 v5; // x9 __int64 v6; // x9 float v7; // s0 int v8; // w8 int v9; // w20 __int64 result; // x0 __int64 v11; // x2 __int64 v12; // x3 __int64 v13; // [xsp+8h] [xbp-28h] BYREF v2 = sub_5C6DC(); if ( !v3 ) return 30; sub_5C688(v2); if ( !v5 ) return 30; v6 = *(_QWORD *)(v4 + 40); if ( v6 ) { v7 = *(float *)(v6 + 108); v8 = *(_DWORD *)(v6 + 112); v9 = *(_DWORD *)(v6 + 116); } else { if ( !*(_QWORD *)(v4 + 48) ) return 28; v9 = 0; v8 = 128; v7 = (float)*(int *)(*(_QWORD *)(v0 + 8) + 1744LL); } *(_DWORD *)(v0 + 480) = v8; *(_OWORD *)(v0 + 192) = 0u; *(_OWORD *)(v0 + 208) = 0u; sub_596C0(v0, v7); LODWORD(v1) = 1.0; (*(void (__fastcall **)(__int64, _QWORD, long double))(*(_QWORD *)v0 + 32LL))(v0, 0, v1); (*(void (__fastcall **)(__int64, long double))(*(_QWORD *)v0 + 72LL))(v0, v1); result = sub_5C50C(v0, 0xFFFFFFFFLL, &v13); if ( !(_DWORD)result ) { if ( v9 == 3 ) { v11 = 1; v12 = 2; } else if ( v9 == 4 ) { v11 = 2; v12 = 3; } else { v12 = 0; v11 = 0; } return sub_C7E34(v13, 0, v11, v12); } return result; }