HalUpdateTimerCapabilities
NTSTATUS __stdcall HalUpdateTimerCapabilities(PVOID TimerData){
int v1;
int v2;
int v3;
ULONG_PTR *v5;
ULONG_PTR *v6;
int v7;
int v8;
bool v9;
v3 = v1;
if( ((v2 | v1) & 0xFFFF9FFF) == 0 && (v1 & v2) == 0 && TimerData )
{
v5 = (ULONG_PTR *)HalpRegisteredTimers;
do
{
if( v5 == &HalpRegisteredTimers )
{
HalpTimerLastProblem = 13;
return -1073741275;
}
v6 = v5;
v5 = (ULONG_PTR *)*v5;
}
while( (PVOID)v6[9] != TimerData );
v7 = *((_DWORD *)v6 + 56);
v8 = ~v2 & (v3 | v7);
v9 = v6 == (ULONG_PTR *)HalpPerformanceCounter;
*((_DWORD *)v6 + 56) = v8;
if( v9
&& *((_DWORD *)v6 + 57) == 5
&& ((((unsigned __int16)v3 ^ (unsigned __int16)v7) & 0x2000) != 0
|| (v8 & 0x4000) != 0 && (unsigned __int8)HalpTimerDeepestIdleState > 1u) )
{
HalpTscProcessorFeatureFallback = 1;
}
return 0;
}
else
{
HalpTimerLastProblem = 12;
return -1073741811;
}
}Referenced by:
HalpArtInitialize
HalpTscInitialize