IovpCompleteRequest4

VOID __fastcall IovpCompleteRequest4(
        _IRP *Irp,
        INT64 ReturnedStatus,
        INT64 a3,
        INT64 *CompletionRoutine,
        _DEVICE_OBJECT *a5,
        _IRP *a6,
        VOID *a7,
        _IOFCOMPLETEREQUEST_STACKDATA *CompletionPacket){
  int v9; 
  INT64 v11; 
  _IO_STACK_LOCATION *CurrentStackLocation; 

  v9 = ReturnedStatus;
  if( *CompletionRoutine )
  {
    v11 = CompletionRoutine[1];
    *(_BYTE *)(v11 + 16) = KeAcquireSpinLockRaiseToDpc((UINT64 *)(v11 + 8));
    if( v9 != -1073741802 )
    {
      CurrentStackLocation = Irp->Tail.CurrentStackLocation;
      if( Irp->CurrentLocation <= Irp->StackCount
        && (unsigned __int8)(CurrentStackLocation->MajorFunction - 3) <= 1u
        && Irp->MdlAddress
        && (MmVerifierData & 0x6000) != 0 )
      {
        MdlInvariantPostDriverCompletion((_IOV_REQUEST_PACKET *)v11, Irp);
      }
      if( *(_QWORD *)(v11 + 216) && *(int *)(v11 + 56) >= 0 && (CurrentStackLocation->Control & 1) == 0 )
      {
        ViErrorReport1(552, (VOID *)a3, Irp);
        Irp->Tail.CurrentStackLocation->Control |= 1u;
      }
    }
    VfIrpDatabaseEntryReleaseLock((_IOV_DATABASE_HEADER *)v11);
  }
}

Referenced by:

IovpLocalCompletionRoutine