// // sub_5C3A0 from 0x5c3a0 to 0x5c4a0 (256 bytes) // // 1 xrefs: // > @ 0x10c6b0 // // 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_5C3A0(__int64 *a1, int a2) { _DWORD *v3; // x0 int v4; // w21 __int64 result; // x0 __int64 v7; // x9 __int64 v8; // x8 __int64 v9; // [xsp+0h] [xbp-30h] BYREF int v10; // [xsp+8h] [xbp-28h] v3 = (_DWORD *)a1[59]; if ( !v3 || !a1[4] ) return 30; v4 = v3[14]; result = (*(__int64 (__fastcall **)(_DWORD *))(*(_QWORD *)v3 + 200LL))(v3); if ( (_DWORD)result ) return result; if ( (a2 & 8) == 0 || (v4 & 8) != 0 ) { if ( (a2 & 0x10) != 0 && (v4 & 0x10) == 0 || ((v4 ^ a2) & 0x4F00000) != 0 ) { v7 = a1[16]; v10 = *((_DWORD *)a1 + 34); v9 = v7; v8 = *a1; *((float *)a1 + 32) = *((float *)a1 + 32) + 1.0; result = (*(__int64 (__fastcall **)(__int64 *, __int64 *, __int64))(v8 + 320))(a1, &v9, (__int64)a1 + 140); if ( (_DWORD)result ) return result; } } else { result = sub_5C5F4(); if ( (_DWORD)result ) return result; sub_5C514(result); } if ( (a2 & 0x40000000) != (v4 & 0x40000000) ) { if ( (a2 & 0x40000000) == 0 ) { *((_DWORD *)a1 + 18) |= 4u; return 0; } (*(void (__fastcall **)(__int64 *, __int64, float, float))(*a1 + 408))( a1, 1, *((float *)a1 + 52), *((float *)a1 + 53)); } return 0; }