IoProcessPassiveInterrupts

VOID __stdcall IoProcessPassiveInterrupts(UINT64 Vector){
  PASSIVE_INTERRUPT_BLOCK *PassiveInterruptBlock; 
  PASSIVE_INTERRUPT_BLOCK *v2; 
  bool v3; 
  UINT8 OldIrql; 

  OldIrql = 0;
  PassiveInterruptBlock = IopFindPassiveInterruptBlock(Vector);
  v2 = PassiveInterruptBlock;
  if( PassiveInterruptBlock )
  {
    if( !PassiveInterruptBlock[8] )
      ((void(__fastcall *)(_QWORD, __int64))off_140C00770[0])((unsigned int)PassiveInterruptBlock[6], 1i64);
    IopAcquirePassiveInterruptBlockLock(v2, &OldIrql);
    v3 = *((_BYTE *)v2 + 64) == 0;
    *((_BYTE *)v2 + 65) = 1;
    if( v3 )
    {
      *((_BYTE *)v2 + 64) = 1;
      KiInsertQueueDpc((_KDPC *)(v2 + 26), 0i64, 0i64, 0i64, 0);
    }
    KxReleaseSpinLock((UINT64 *)v2 + 7);
    __writecr8(OldIrql);
  }
}

Referenced by:

KiDispatchPassiveInterrupts
KiInterruptDispatchCommon