HalpInterruptPowerChange

INT64 __stdcall HalpInterruptPowerChange(PVOID BugCheckParameter3, INT8 a2){
  DOUBLE v2; 
  int v3; 
  INT64 result; 
  int v6; 
  v3 = *((_DWORD *)BugCheckParameter3 + 56);
  if( a2 )
  {
    result = v3 & 0xFFFFFFFB;
    *((_DWORD *)BugCheckParameter3 + 56) = result;
    if( (result & 2) == 0 )
    {
      v6 = HalpInterruptInitializeController(BugCheckParameter3, v2);
      if( v6 < 0 )
        KeBugCheckEx(0x5Cu, 0x204ui64, HalpInterruptLastProblem, (ULONG_PTR)BugCheckParameter3, v6);
      result = HalpInterruptRestoreController((__int64)BugCheckParameter3, 0);
      if( (int)result < 0 )
        KeBugCheckEx(0x5Cu, 0x204ui64, HalpInterruptLastProblem, (ULONG_PTR)BugCheckParameter3, (int)result);
    }
  }
  else
  {
    result = v3 & 0xFFFFFFFA | 4;
    *((_DWORD *)BugCheckParameter3 + 56) = result;
  }
  return result;
}

Referenced by:

HalpInterruptPowerComponentActiveCallback
HalpInterruptPowerComponentIdleCallback
HalpInterruptPowerCriticalTransitionCallback