IopPerfCompleteRequest

VOID __stdcall IopPerfCompleteRequest(_IRP *Irp, CHAR PriorityBoost){
  bool v2; 
  char v5; 
  char v6; 
  __int64 v7; 
  unsigned __int8 *v8; 
  IRP *v9; 
  __int64 v10; 
  __int64 v11; 
  signed __int32 v12; 
  bool v13; 
  char v14; 
  UINT64 Flag; 
  UINT64 Flaga; 
  __int128 v17; 
  __int128 v18; 
  _IRP *v19; 
  int v20; 
  __int64 v21[2]; 
  int v22; 
  EVENT_DATA_DESCRIPTOR EventData; 
  EVENT_DATA_DESCRIPTOR v24; 
  v2 = *(_WORD *)Irp == 6;
  v17 = 0i64;
  v18 = 0i64;
  if( v2 )
  {
    v5 = *((_BYTE *)Irp + 66);
    v6 = *((_BYTE *)Irp + 67);
    if( v6 <= (char)(v5 + 1) )
    {
      v7 = 0i64;
      v8 = 0i64;
      if( v6 <= v5 )
      {
        v8 = (unsigned __int8 *)*((_QWORD *)Irp + 23);
        if( *((_QWORD *)v8 + 5) )
        {
          if( (IopPerfStatus & 2) != 0 && IopIrpHasExtensionType(Irp, 1ui64) && !IopIrpHasExtensionType(v9, 4ui64) )
          {
            IopProcessIoTracking(
              *(_QWORD *)&KUSER_SHARED_DATA.SystemTime.LowPart - *(_QWORD *)(*((_QWORD *)Irp + 25) + 40i64),
              *(unsigned int *)(*((_QWORD *)v8 + 5) + 72i64));
            IopFreeIrpExtension((__int64)Irp, 1, 1);
          }
          v10 = *(_QWORD *)(*((_QWORD *)v8 + 5) + 8i64);
          if( v10 )
          {
            v11 = *v8;
            if( (unsigned __int8)v11 <= 0x1Bu )
              v7 = *(_QWORD *)(v10 + 8 * v11 + 112);
          }
        }
        else
        {
          v7 = *((_QWORD *)v8 + 7);
        }
      }
      if( (IopPerfStatus & 1) != 0 )
      {
        EventData.Reserved = 0;
        v21[0] = v7;
        v21[1] = (__int64)Irp;
        v12 = _InterlockedIncrement(&IopPerfDriverUniqueMatchId);
        LODWORD(Flag) = 4200450;
        v22 = v12;
        EventData.Ptr = (unsigned __int64)v21;
        EventData.Size = 20;
        EtwTraceKernelEvent(&EventData, 1ui64, 0x20000010ui64, 0x134u, Flag);
        if( !v8 )
        {
LABEL_19:
          IopfCompleteRequest(Irp, PriorityBoost);
          v24.Reserved = 0;
          v24.Ptr = (unsigned __int64)&v19;
          v19 = Irp;
          v20 = v12;
          v24.Size = 12;
          LODWORD(Flaga) = 4200450;
          EtwTraceKernelEvent(&v24, 1ui64, 0x20000010ui64, 0x135u, Flaga);
          return;
        }
        v13 = *((int *)Irp + 12) < 0;
        *((_QWORD *)&v17 + 1) = *((_QWORD *)v8 + 8);
        *(_QWORD *)&v17 = v8;
        DWORD2(v18) = v12;
        BYTE12(v18) = v8[3];
        v14 = v8[3];
        if( v13 )
        {
          if( v14 < 0 )
            goto LABEL_17;
        }
        else if( (v14 & 0x40) != 0 )
        {
          goto LABEL_17;
        }
        if( !*((_BYTE *)Irp + 68) || (v14 & 0x20) == 0 )
        {
          v8[3] = v14 | 0xC0;
          goto LABEL_18;
        }
LABEL_17:
        *(_QWORD *)&v18 = *((_QWORD *)v8 + 7);
        *((_QWORD *)&v17 + 1) = *((_QWORD *)v8 + 8);
LABEL_18:
        *((_QWORD *)v8 + 7) = IopPerfCompletionRoutine;
        *((_QWORD *)v8 + 8) = &v17;
        goto LABEL_19;
      }
    }
  }
  IopfCompleteRequest(Irp, PriorityBoost);
}

Referenced by:

IofCompleteRequest
IovCompleteRequest