HalpTimerStallCounterPowerChange
CHAR __fastcall HalpTimerStallCounterPowerChange(PVOID BugCheckParameter3, VOID *a2, VOID *a3, VOID *a4){
_KDPC *v4;
int v5;
__int64 v6;
unsigned __int64 BugCheckParameter4;
v4 = (_KDPC *)HalpSavedStallCounter;
LOBYTE(v5) = (_BYTE)a2;
if( HalpSavedStallCounter )
{
if( BugCheckParameter3 == HalpSavedStallCounter && (_BYTE)a2 )
{
if( HalpSavedStallCounter != (PVOID)HalpPerformanceCounter )
{
HalpTimerGetInternalData((_KDPC *)HalpSavedStallCounter, a2, a3, a4);
v5 = ((__int64(__fastcall *)(__int64))v4[1].SystemArgument1)(v6);
if( v5 < 0 )
KeBugCheckEx(0x5Cu, (PVOID)0x113, (PVOID)0xF, v4, (PVOID)v5);
}
HalpSavedStallCounter = 0i64;
HalpStallCounter = v4;
}
}
else if( BugCheckParameter3 == HalpStallCounter && !(_BYTE)a2 )
{
LOBYTE(v5) = (_BYTE)HalpAlwaysOnCounter;
if( !HalpAlwaysOnCounter )
KeBugCheckEx(
(_DWORD)HalpAlwaysOnCounter + 92,
(PVOID)0x113,
(PVOID)(unsigned int)((_DWORD)HalpAlwaysOnCounter + 34),
BugCheckParameter3,
(PVOID)((unsigned __int64)HalpAlwaysOnCounter & BugCheckParameter4));
HalpSavedStallCounter = HalpStallCounter;
HalpStallCounter = (_KDPC *)HalpAlwaysOnCounter;
}
return v5;
}Referenced by:
HalpTimerPowerChange