IopInsertPassiveInterruptBlock

NTSTATUS __stdcall IopInsertPassiveInterruptBlock(VOID *PassiveInterrupt, _BYTE *NewPassiveBlock){
  PASSIVE_INTERRUPT_BLOCK *PassiveInterruptBlockLocked; 
  VOID **v5; 
  UINT8 v7; 

  v7 = 0;
  *NewPassiveBlock = 1;
  IopAcquireGlobalPassiveInterruptListLock(&v7);
  PassiveInterruptBlockLocked = IopFindPassiveInterruptBlockLocked(*((unsigned int *)PassiveInterrupt + 5));
  if( !PassiveInterruptBlockLocked )
  {
    _InterlockedIncrement((volatile signed __int32 *)PassiveInterrupt + 48);
    v5 = (VOID **)qword_140C45268;
    if( *(_QWORD **)qword_140C45268 != &qword_140C45260 )
      __fastfail(3u);
    *(_QWORD *)PassiveInterrupt = &qword_140C45260;
    *((_QWORD *)PassiveInterrupt + 1) = v5;
    *v5 = PassiveInterrupt;
    qword_140C45268 = (__int64)PassiveInterrupt;
  }
  KxReleaseSpinLock(&qword_140C45258);
  __writecr8(v7);
  if( PassiveInterruptBlockLocked )
    *NewPassiveBlock = 0;
  return 0;
}

Referenced by:

IopAllocatePassiveInterruptBlock