// // sub_52858 from 0x52858 to 0x52958 (256 bytes) // // 1 xrefs: // > @ 0x10c220 // // 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 // float __fastcall sub_52858(__int64 a1, int a2, __int64 a3, __int64 a4) { float result; // s0 __int64 v6; // x20 int v7; // w8 __int64 v8; // x0 __int64 v9; // x20 unsigned int *v10; // x8 unsigned int v11; // w9 __int64 v12; // [xsp+8h] [xbp-18h] BYREF if ( !(unsigned int)sub_524B8(a1, a2, a3, a4) ) { v6 = *(_QWORD *)(a1 + 8); v7 = *(_DWORD *)(v6 + 120); if ( (v7 & 0x300) != 0 ) { if ( (unsigned int)sub_6DFFC(*(_QWORD *)(a1 + 8), 20, a1 + 752) ) return result; v6 = *(_QWORD *)(a1 + 8); v7 = *(_DWORD *)(v6 + 120); } if ( (v7 & 0x200) != 0 ) { if ( (unsigned int)sub_6DFFC(v6, 26, a1 + 760) ) return result; v6 = *(_QWORD *)(a1 + 8); } v12 = a1 + 112; v8 = sub_C6F2C(); if ( !(unsigned int)sub_77040(v6, v8, 0, &v12, 0) ) { v9 = v12; if ( !(*(unsigned int (__fastcall **)(__int64, __int64, __int64, _QWORD))(*(_QWORD *)v12 + 40LL))(v12, 1, 1, 0) && !(unsigned int)sub_CC7C4(v9, a1) ) { v10 = (unsigned int *)(v9 + 100); *(float *)(v9 + 568) = (float)*(int *)(*(_QWORD *)(a1 + 8) + 1744LL); do v11 = __ldaxr(v10); while ( __stlxr(v11 | 0x200, v10) ); result = -*(float *)(a1 + 100); *(float *)(a1 + 104) = result; } } } return result; }