PopDispatchQuerySetIrp
VOID __stdcall PopDispatchQuerySetIrp(_IRP *Irp){
_IO_STACK_LOCATION *CurrentStackLocation;
VOID *v3;
_LIST_ENTRY *p_ListEntry;
_LIST_ENTRY *v5;
__int64 v6;
UINT64 v7;
CurrentStackLocation = Irp->Tail.CurrentStackLocation;
CurrentStackLocation->Control |= 1u;
ObfReferenceObjectWithTag(CurrentStackLocation->DeviceObject, 0x72496F50ui64);
p_ListEntry = &Irp->Tail.ListEntry;
if( Irp == (_IRP *)PopInrushIrp )
{
v6 = PopIrpWorkerList;
if( *(__int64 **)(PopIrpWorkerList + 8) == &PopIrpWorkerList )
{
p_ListEntry->Flink = (_LIST_ENTRY *)PopIrpWorkerList;
Irp->Tail.ListEntry.Blink = (_LIST_ENTRY *)&PopIrpWorkerList;
*(_QWORD *)(v6 + 8) = p_ListEntry;
PopIrpWorkerList = (__int64)&Irp->Tail.ListEntry;
goto LABEL_4;
}
LABEL_7:
__fastfail(3u);
}
v5 = (_LIST_ENTRY *)qword_140C23228;
if( *(__int64 **)qword_140C23228 != &PopIrpWorkerList )
goto LABEL_7;
p_ListEntry->Flink = (_LIST_ENTRY *)&PopIrpWorkerList;
Irp->Tail.ListEntry.Blink = v5;
v5->Flink = p_ListEntry;
qword_140C23228 = (__int64)&Irp->Tail.ListEntry;
LABEL_4:
LODWORD(v7) = 0;
KeReleaseSemaphoreEx(&PopIrpWorkerSemaphore, 0i64, 1i64, v3, v7);
}Referenced by:
PoHandleIrp