KiDispatchInterrupt

VOID __stdcall KiDispatchInterrupt(UINT8 PreviousIrql){
  __int64 v1; 
  struct _KPRCB *CurrentPrcb; 
  _ETHREAD *CurrentThread; 
  char v4; 

  KiCheckForSListAddress((_KTRAP_FRAME *)(v1 - 128));
  CurrentPrcb = KeGetCurrentPrcb();
  _disable();
  if( (CurrentPrcb->DpcRequestSummary & 0x3F) != 0 )
  {
    KyRetireDpcList(CurrentPrcb);
  }
  else
  {
    _enable();
    if( CurrentPrcb->QuantumEnd )
    {
      CurrentPrcb->QuantumEnd = 0;
      KiQuantumEnd();
    }
    else if( CurrentPrcb->NextThread )
    {
      CurrentThread = CurrentPrcb->CurrentThread;
      if( (CurrentThread->Tcb.gap0[2] & 4) == 0 || (KiDeferGroupSchedulingPreemption(CurrentThread, CurrentPrcb), !v4) )
        KxDispatchInterrupt();
    }
  }
}

Referenced by:

KiDpcInterrupt
KiDpcInterruptBypass