HalpTimerConfigureQpcBypass
VOID __stdcall HalpTimerConfigureQpcBypass(){
int v0;
int v1;
char v2;
INT64 *Timer;
unsigned __int64 v4;
int v5;
int v6[8];
UINT8 v7;
__int64 v8;
v8 = 0i64;
v7 = 0;
NtQuerySystemInformation(0xC5ui64, (INT64)&v8, 8, 0i64);
v1 = v0;
v2 = 0;
Timer = HalpFindTimer(5, 0, 0, 0, 1);
if( Timer )
{
if( (Timer[28] & 0x1000000) != 0 )
{
v2 = 0x80;
}
else if( HalpGetCpuInfo(0i64, 0i64, 0i64, &v7) )
{
if( v7 == 2 )
{
v2 = 32;
}
else
{
v2 = 0;
if( v7 == 1 )
v2 = 16;
}
}
}
v4 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc(&qword_140C4A3F8);
v5 = *(_DWORD *)(HalpPerformanceCounter + 228);
if( (v5 == 5 || v5 == 8) && v1 >= 0 && v8 )
{
KUSER_SHARED_DATA.QpcShift = 0;
_InterlockedOr(v6, 0);
KUSER_SHARED_DATA.QpcBypassEnabled = v2 | 3;
}
else
{
KUSER_SHARED_DATA.QpcData = 0;
}
KxReleaseSpinLock(&qword_140C4A3F8);
__writecr8(v4);
}Referenced by:
No references.