HalpInterruptRestoreClock
INT64 __stdcall HalpInterruptRestoreClock(){
void *v0;
void *v1;
unsigned int v2;
unsigned int v3;
__int64 v4;
__int64 v5;
__int64 *v7;
ULONG_PTR *Lines;
ULONG_PTR *v9;
__int64 v10;
int v11;
__int64 v12;
v12 = 0i64;
v2 = 0;
v3 = HalpTimerCriticalClockSourceCount;
if( HalpTimerCriticalClockSourceCount )
{
v7 = &HalpTimerCriticalClockSource;
while( 1 )
{
v12 = *v7;
HalpInterruptApplyOverrides(&v12, 0i64, 0i64);
Lines = HalpInterruptFindLines((int *)&v12);
if( !Lines )
break;
v9 = HalpInterruptLookupController(*((_DWORD *)Lines + 4));
if( !v9 )
{
HalpInterruptLastProblem = 17;
LABEL_11:
v11 = -1073741810;
LABEL_12:
KeBugCheckEx(0x5Cu, 0x200ui64, HalpInterruptLastProblem, 2ui64, v11);
}
v11 = HalpInterruptSetLineStateInternal((__int64)v9, (__int64)&v12, *(_QWORD *)(v10 + 40));
if( v11 < 0 )
goto LABEL_12;
++v2;
++v7;
if( v2 >= v3 )
goto LABEL_2;
}
HalpInterruptLastProblem = 18;
goto LABEL_11;
}
LABEL_2:
HalpTimerGetInternalData((KDPC *)HalpClockTimer, (PVOID)HalpClockTimer, v0, v1);
return(*(__int64(__fastcall **)(__int64))(v4 + 120))(v5);
}Referenced by:
HalpPostSleepMP