HalpSfiTimerArm
NTSTATUS __fastcall HalpSfiTimerArm(PVOID TimerData, INT64 a2, UINT64 a3){
int v3;
_DWORD *v5;
unsigned int v6;
unsigned int i;
unsigned int v8;
signed __int32 v10[10];
v3 = a3;
if( a3 > 0xFFFFFFFF || (unsigned int)(a2 - 2) > 1 )
{
HalSetTimerProblem(TimerData);
return -1073741811;
}
else
{
v5 = (_DWORD *)*((_QWORD *)TimerData + 1);
v6 = 0;
for( i = 0; i < 0x64; ++i )
{
if( (v5[4] & 1) == 0 )
break;
KeStallExecutionProcessor(0x32u);
}
if( i == 100 )
goto LABEL_12;
v5[2] = v5[2] & 0xFFFFFFFA | 4;
_InterlockedOr(v10, 0);
v5[2] |= 2u;
_InterlockedOr(v10, 0);
*v5 = v3;
_InterlockedOr(v10, 0);
v5[2] = v5[2] & 0xFFFFFFFA | 1;
_InterlockedOr(v10, 0);
v8 = v5[1];
do
{
if( v8 > v5[1] )
break;
KeStallExecutionProcessor(0x32u);
++v6;
}
while( v6 < 0x64 );
if( v6 == 100 )
{
LABEL_12:
HalSetTimerProblem(TimerData);
return -1073741823;
}
else
{
return 0;
}
}
}Referenced by:
No references.