PnpDeviceCompletionQueueDispatchedEntryCompleted

VOID __stdcall PnpDeviceCompletionQueueDispatchedEntryCompleted(
        _PNP_DEVICE_COMPLETION_QUEUE *Queue,
        _LIST_ENTRY *DispatchedEntry){
  UINT64 v3; 
  _LIST_ENTRY *Flink; 
  unsigned __int8 v5; 
  unsigned __int64 v6; 
  _LIST_ENTRY *Blink; 
  _LIST_ENTRY *v8; 
  KeAcquireSpinLockRaiseToDpc(&qword_140C448E8, (UINT64)DispatchedEntry);
  Flink = DispatchedEntry->Flink;
  v6 = v5;
  Blink = DispatchedEntry->Blink;
  if( DispatchedEntry->Flink->Blink != DispatchedEntry
    || Blink->Flink != DispatchedEntry
    || (Blink->Flink = Flink,
        Flink->Blink = Blink,
        v8 = (_LIST_ENTRY *)qword_140C448C0,
        --dword_140C448B0,
        *(__int64 **)qword_140C448C0 != &qword_140C448B8) )
  {
    __fastfail(3u);
  }
  DispatchedEntry->Flink = (_LIST_ENTRY *)&qword_140C448B8;
  DispatchedEntry->Blink = v8;
  v8->Flink = DispatchedEntry;
  qword_140C448C0 = (__int64)DispatchedEntry;
  KeReleaseSemaphoreEx(&Semaphore, 0i64, 1i64, v3);
  KxReleaseSpinLock(&qword_140C448E8);
  __writecr8(v6);
}

Referenced by:

PipEnumerateDevice
PnpDeviceCompletionRoutine