HalpTimerPowerChange

NTSTATUS __stdcall HalpTimerPowerChange(PVOID BugCheckParameter3){
  void *v1; 
  VOID *v2; 
  void *v3; 
  INT8 v4; 
  NTSTATUS result; 
  v4 = (char)v1;
  if( (_BYTE)v1 )
  {
    *((_DWORD *)BugCheckParameter3 + 46) &= ~0x80u;
  }
  else if( (*((_DWORD *)BugCheckParameter3 + 56) & 0x8000) != 0 )
  {
    KeBugCheckEx(0x5Cu, 0x113ui64, 0x20ui64, (ULONG_PTR)BugCheckParameter3, 0i64);
  }
  if( BugCheckParameter3 == (PVOID)HalpClockTimer )
    result = HalpTimerClockPowerChange(BugCheckParameter3, (INT8)v1);
  if( BugCheckParameter3 == (PVOID)HalpPerformanceCounter
    || BugCheckParameter3 == (PVOID)HalpTimerSavedPerformanceCounter )
  {
    LOBYTE(v1) = v4;
    result = (unsigned int)HalpTimerPerformanceCounterPowerChange(
                             (ULONG_PTR)BugCheckParameter3,
                             v1,
                             (unsigned __int64)v2,
                             v3);
  }
  if( BugCheckParameter3 == HalpStallCounter || BugCheckParameter3 == (PVOID)HalpSavedStallCounter )
    LOBYTE(result) = HalpTimerStallCounterPowerChange(BugCheckParameter3, v4);
  if( BugCheckParameter3 == HalpProfileTimer )
    HalpTimerProfilePowerChange((INT64)BugCheckParameter3, v4, v2, v3);
  if( !v4 )
    *((_DWORD *)BugCheckParameter3 + 46) |= 0x80u;
  return result;
}

Referenced by:

HalpTimerPowerCriticalTransitionCallback