KiResetForceIdle

VOID __fastcall KiResetForceIdle(INT64 a1, CHAR a2){
  bool v2; 
  unsigned int v4; 
  __int16 v5; 
  INT64 v6; 
  EVENT_DESCRIPTOR *v7; 
  __int64 v8; 
  __int64 v9; 
  INT64 v10; 
  EVENT_DESCRIPTOR *v11; 
  __int16 v12; 
  UINT64 SpinCount; 
  INT64 CurrentQpc; 
  CurrentQpc = 0i64;
  v2 = 0;
  v4 = a1;
  if( !a2 )
  {
    v5 = v12;
    _disable();
    v2 = (v5 & 0x200) != 0;
    LODWORD(SpinCount) = 0;
    while( _interlockedbittestandset64((volatile signed __int32 *)&KiForceIdleLock, 0i64) )
    {
      do
        KeYieldProcessorEx(&SpinCount);
      while( KiForceIdleLock );
    }
  }
  if( KeIsForceIdleEngaged() )
  {
    KiSetForceIdleState(3i64, v6, v7);
    if( v4 == 3 )
    {
      v8 = 0i64;
    }
    else
    {
      LODWORD(v9) = RtlGetInterruptTimePrecise(&CurrentQpc);
      v8 = 10000000i64 * (unsigned int)KiForceIdleGracePeriodInSec + v9;
    }
    KiForceIdleStartTime = v8;
    if( !KiForceIdleStopDpc.DpcData )
      KiForceIdleStopDpc.Number = KiClockTimerOwner + 1280;
    KeInsertQueueDpc(&KiForceIdleStopDpc, 0i64, 0i64);
    PoTraceForceIdleReset(v4, v10, v11);
  }
  if( !a2 )
  {
    _InterlockedAnd64(&KiForceIdleLock, 0i64);
    if( v2 )
      _enable();
  }
}

Referenced by:

KeClearForceIdle
KeClockInterruptNotify
KeResumeClockTimerFromIdle
KiCallInterruptServiceRoutine