KiCheckAndRearmForceIdle

VOID __stdcall KiCheckAndRearmForceIdle(){
  INT64 v0; 
  NPTEXTMETRIC *v1; 
  __int64 v2; 
  UINT64 SpinCount; 
  INT64 CurrentQpc; 

  CurrentQpc = 0i64;
  if( !KiForceIdleDisabled )
  {
    _disable();
    LODWORD(SpinCount) = 0;
    while( _interlockedbittestandset64((_DWORD *)&KiSwapEvent + 42, 0i64) )
    {
      do
        KeYieldProcessorEx(&SpinCount);
      while( *(&KiSwapEvent + 21) );
    }
    if( (_DWORD)KiForceIdleState == 1 )
    {
      KeRemoveQueueDpcEx((_KDPC *)&KiSwapEvent + 3, 0i64);
      KiSetForceIdleState(2i64, v0, v1);
    }
    else if( (_DWORD)KiForceIdleState != 2 )
    {
LABEL_6:
      _InterlockedAnd64((_QWORD *)&KiSwapEvent + 21, 0i64);
      _enable();
      return;
    }
    LODWORD(v2) = RtlGetInterruptTimePrecise(&CurrentQpc);
    *(&KiSwapEvent + 20) = 10000000i64 * (unsigned int)KiForceIdleGracePeriodInSec + v2;
    goto LABEL_6;
  }
}

Referenced by:

KiCallInterruptServiceRoutine
KiTimer2Expiration