VfPnpVerifyIrpStackDownward

UINT64 __fastcall VfPnpVerifyIrpStackDownward(INT64 a1, DEVICE_OBJECT *a2, INT64 a3, INT64 a4, INT64 a5, INT64 a6){
  UINT64 result; 
  __int64 v11; 
  const void *v12; 
  int v13; 
  __int64 v14; 
  const void *v15; 
  __int64 v16; 
  int IsDeviceObjectMarked; 
  int v18; 
  int v19; 
  const void *v20; 
  result = IovUtilIsWdmStack(a2);
  if( (_DWORD)result )
  {
    v11 = *(_QWORD *)(a1 + 240);
    v12 = *(const void **)a1;
    v13 = *(_DWORD *)(*(_QWORD *)a1 + 48i64);
    v19 = *(_DWORD *)(a5 + 96);
    if( *(_DWORD *)(v11 + 56) == 3 )
      VfErrorReport1(529i64, v20, v12);
    v14 = *((_QWORD *)a2 + 1);
    result = (UINT64)IopInvalidDeviceRequest;
    if( *(NTSTATUS(__stdcall **)(_DEVICE_OBJECT *, _IRP *))(v14 + 328) == IopInvalidDeviceRequest )
    {
      *(_DWORD *)(a5 + 4) |= 0x1000000u;
      LODWORD(v15) = VfGetPristineDriverInit((DRIVER_OBJECT *)v14);
      VfErrorReport1(543i64, v15, v12);
      result = a6;
      *(_DWORD *)(a6 + 4) |= 0x80000000;
    }
    if( a3 )
    {
      if( v13 < 0 )
      {
        if( v13 == -1073741637 )
        {
          if( v19 != -1073741637 && (*(_DWORD *)(a5 + 4) & 0x2000000) == 0 )
          {
            VfErrorReport1(534i64, v20, v12);
            *(_DWORD *)(a5 + 4) |= 0x2000000u;
          }
        }
        else if( (*(_DWORD *)(a5 + 4) & 0x2000000) == 0 )
        {
          VfErrorReport1(533i64, v20, v12);
          *(_DWORD *)(a5 + 4) |= 0x2000000u;
        }
      }
      if( *(_QWORD *)(v11 + 48) )
      {
        result = IovUtilIsDeviceObjectMarked(*(_QWORD *)(v11 + 48), 2);
        if( (_DWORD)result )
        {
          IsDeviceObjectMarked = IovUtilIsDeviceObjectMarked(v16, 3);
          ViPnpVerifyMinorWasProcessedProperly((__int64)v12, a4, IsDeviceObjectMarked == 0 ? 4 : 0, v18, v20, 1);
        }
      }
    }
  }
  return result;
}

Referenced by:

No references.