HalpInterruptRestoreClock
NTSTATUS __stdcall HalpInterruptRestoreClock(){
void *v0;
void *v1;
unsigned int v2;
unsigned int v3;
__int64 v4;
__int64 v5;
_INTERRUPT_LINE *v7;
_LIST_ENTRY *Lines;
_REGISTERED_INTERRUPT_CONTROLLER *v9;
__int64 v10;
NTSTATUS v11;
_INTERRUPT_LINE Line;
Line = 0i64;
v2 = 0;
v3 = HalpTimerCriticalClockSourceCount;
if( HalpTimerCriticalClockSourceCount )
{
v7 = (_INTERRUPT_LINE *)&qword_140C4A4A0;
while( 1 )
{
Line = *v7;
HalpInterruptApplyOverrides(&Line, 0i64, 0i64);
Lines = HalpInterruptFindLines((unsigned int *)&Line);
if( !Lines )
break;
v9 = HalpInterruptLookupController(LODWORD(Lines[1].Flink));
if( !v9 )
{
*(&CmpDummyThreadEvent + 1789) = 17;
LABEL_11:
v11 = -1073741810;
LABEL_12:
KeBugCheckEx(0x5Cu, (PVOID)0x200, (PVOID)*(&CmpDummyThreadEvent + 1789), (PVOID)2, (PVOID)v11);
}
v11 = HalpInterruptSetLineStateInternal(v9, &Line, *(_INTERRUPT_LINE_STATE **)(v10 + 40));
if( v11 < 0 )
goto LABEL_12;
++v2;
++v7;
if( v2 >= v3 )
goto LABEL_2;
}
*(&CmpDummyThreadEvent + 1789) = 18;
goto LABEL_11;
}
LABEL_2:
HalpTimerGetInternalData((_KDPC *)HalpClockTimer, HalpClockTimer, v0, v1);
return(*(__int64(__fastcall **)(__int64))(v4 + 120))(v5);
}Referenced by:
HalpPostSleepMP