PopDispatchQuerySetIrp

VOID __stdcall PopDispatchQuerySetIrp(IRP *Irp){
  __int64 v2; 
  UINT64 v3; 
  _QWORD *v4; 
  _QWORD *v5; 
  __int64 v6; 
  v2 = *((_QWORD *)Irp + 23);
  *(_BYTE *)(v2 + 3) |= 1u;
  ObfReferenceObjectWithTag(*(PVOID *)(v2 + 40), 0x72496F50u);
  v4 = (_QWORD *)((char *)Irp + 168);
  if( Irp == (IRP *)PopInrushIrp )
  {
    v6 = PopIrpWorkerList;
    if( *(__int64 **)(PopIrpWorkerList + 8) == &PopIrpWorkerList )
    {
      *v4 = PopIrpWorkerList;
      *((_QWORD *)Irp + 22) = &PopIrpWorkerList;
      *(_QWORD *)(v6 + 8) = v4;
      PopIrpWorkerList = (__int64)Irp + 168;
      goto LABEL_4;
    }
LABEL_7:
    __fastfail(3u);
  }
  v5 = (_QWORD *)qword_140C23228;
  if( *(__int64 **)qword_140C23228 != &PopIrpWorkerList )
    goto LABEL_7;
  *v4 = &PopIrpWorkerList;
  *((_QWORD *)Irp + 22) = v5;
  *v5 = v4;
  qword_140C23228 = (__int64)Irp + 168;
LABEL_4:
  KeReleaseSemaphoreEx(&PopIrpWorkerSemaphore, 0i64, 1i64, v3);
}

Referenced by:

PoHandleIrp