IoProcessPassiveInterrupts

VOID __stdcall IoProcessPassiveInterrupts(UINT64 Vector){
  __int64 PassiveInterruptBlock; 
  __int64 v2; 
  bool v3; 
  unsigned __int8 v4; 
  v4 = 0;
  PassiveInterruptBlock = IopFindPassiveInterruptBlock(Vector);
  v2 = PassiveInterruptBlock;
  if( PassiveInterruptBlock )
  {
    if( !*(_DWORD *)(PassiveInterruptBlock + 32) )
      ((void(__fastcall *)(_QWORD, __int64))off_140C00770[0])(*(unsigned int *)(PassiveInterruptBlock + 24), 1i64);
    IopAcquirePassiveInterruptBlockLock(v2, &v4);
    v3 = *(_BYTE *)(v2 + 64) == 0;
    *(_BYTE *)(v2 + 65) = 1;
    if( v3 )
    {
      *(_BYTE *)(v2 + 64) = 1;
      KiInsertQueueDpc((_KDPC *)(v2 + 104), 0i64, 0i64, 0i64, 0);
    }
    KxReleaseSpinLock((UINT64 *)(v2 + 56));
    __writecr8(v4);
  }
}

Referenced by:

KiDispatchPassiveInterrupts
KiInterruptDispatchCommon