IopDequeueIrpFromFileObject
VOID __stdcall IopDequeueIrpFromFileObject(_IRP *Irp, _FILE_OBJECT *FileObject){
unsigned __int64 *p_IrpListLock;
_QWORD *v4;
unsigned __int8 v5;
unsigned __int64 v6;
__int64 v7;
_QWORD *v8;
__int64 v9;
p_IrpListLock = &FileObject->IrpListLock;
KeAcquireSpinLockRaiseToDpc(&FileObject->IrpListLock, (UINT64)FileObject);
v4 = (_QWORD *)((char *)Irp + 32);
v6 = v5;
v7 = *((_QWORD *)Irp + 4);
v8 = (_QWORD *)*((_QWORD *)Irp + 5);
if( *(_IRP **)(v7 + 8) != (_IRP *)((char *)Irp + 32) || (_QWORD *)*v8 != v4 )
__fastfail(3u);
*v8 = v7;
*(_QWORD *)(v7 + 8) = v8;
v9 = *((_QWORD *)Irp + 11);
*((_QWORD *)Irp + 5) = (char *)Irp + 32;
*v4 = v4;
ObfDereferenceObjectWithTag((PVOID)(v9 & 0xFFFFFFFFFFFFFFF9ui64), 0x70436F49ui64);
*((_DWORD *)Irp + 4) = *((_DWORD *)Irp + 4) & 0xFFFF5FFF | 0x8000;
KxReleaseSpinLock(p_IrpListLock);
__writecr8(v6);
}Referenced by:
IopCompleteRequest
IopDropIrp