IovpCompleteRequest1

VOID __stdcall IovpCompleteRequest1(_IRP *Irp, INT8 PriorityBoost, _IOFCOMPLETEREQUEST_STACKDATA *CompletionPacket){
  unsigned __int8 CurrentIrql; 
  _IOV_DATABASE_HEADER *v7; 
  _IOV_DATABASE_HEADER *v8; 
  _IOV_FORCED_PENDING_TRACE *started; 
  __int64 v10; 
  _IO_STACK_LOCATION *CurrentStackLocation; 
  int v12; 
  INT64 LocationsAdvanced; 
  UINT64 v14; 
  UINT64 v15; 
  _IOV_STACK_LOCATION *StackLocationInfo; 

  CurrentIrql = KeGetCurrentIrql();
  v7 = VfIrpDatabaseEntryFindAndLock(Irp);
  v8 = v7;
  if( v7 )
  {
    *((_BYTE *)v7 + 61) = CurrentIrql;
    started = 0i64;
    *((_BYTE *)v7 + 60) = CurrentIrql;
    v10 = *((_QWORD *)v7 + 30);
    *(_QWORD *)CompletionPacket = v10;
    *((_QWORD *)CompletionPacket + 1) = v7;
    CurrentStackLocation = Irp->Tail.CurrentStackLocation;
    if( v10 )
    {
      if( (v7[14] & 0x10) != 0 )
        ViErrorReport1(521, *((VOID **)CompletionPacket + 4), Irp);
      *((_BYTE *)v8 + 185) = PriorityBoost;
      if( *((_QWORD *)v8 + 27) && v8[14] >= 0 )
      {
        started = VfPendingStartLogging(Irp);
        Irp->Tail.CurrentStackLocation->Control |= 1u;
      }
      *(_QWORD *)(v10 + 48) = 0i64;
      v12 = *((unsigned __int8 *)v8 + 186) - Irp->CurrentLocation;
      LODWORD(v15) = 0;
      LODWORD(v14) = 0;
      CompletionPacket[5] = v12;
      LODWORD(LocationsAdvanced) = v12;
      IovpAdvanceStackDownwards(
        (_IOV_STACK_LOCATION *)(v10 + 80),
        Irp->CurrentLocation,
        CurrentStackLocation,
        &CurrentStackLocation[v12],
        LocationsAdvanced,
        v14,
        v15,
        &StackLocationInfo);
      VfIrpDatabaseEntryReleaseLock(v8);
      if( started )
        VfPendingFinishLogging(started);
    }
    else
    {
      VfIrpDatabaseEntryReleaseLock(v7);
    }
  }
  else
  {
    *(_QWORD *)CompletionPacket = 0i64;
  }
}

Referenced by:

IovCompleteRequest