IopDequeueIrpFromThread

VOID __stdcall IopDequeueIrpFromThread(_IRP *Irp){
  __int64 v1; 
  unsigned __int8 CurrentIrql; 
  __int64 v4; 
  _QWORD *v5; 
  _QWORD *v6; 
  v1 = *((_QWORD *)Irp + 19);
  CurrentIrql = 0;
  if( v1 )
  {
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(2ui64);
    if( _interlockedbittestandset64((volatile signed __int32 *)(v1 + 1416), 0i64) )
      KxWaitForSpinLockAndAcquire((UINT64 *)(v1 + 1416));
  }
  v4 = *((_QWORD *)Irp + 4);
  v5 = (_QWORD *)((char *)Irp + 32);
  v6 = (_QWORD *)*((_QWORD *)Irp + 5);
  if( *(_IRP **)(v4 + 8) != (_IRP *)((char *)Irp + 32) || (_QWORD *)*v6 != v5 )
    __fastfail(3u);
  *v6 = v4;
  *(_QWORD *)(v4 + 8) = v6;
  *((_QWORD *)Irp + 5) = (char *)Irp + 32;
  *v5 = v5;
  if( v1 )
  {
    _InterlockedAnd64((volatile signed __int64 *)(v1 + 1416), 0i64);
    __writecr8(CurrentIrql);
  }
}

Referenced by:

IoCancelFileOpen
IopCloseFile
IopCompleteRequest
IopDeleteFile
IopParseDevice
IopfCompleteRequest