ViGenericVerifyIrpStackDownward

void __fastcall ViGenericVerifyIrpStackDownward(
        __int64 a1,
        __int64 a2,
        __int64 a3,
        unsigned __int8 *a4,
        __int64 a5,
        int a6,
        const void *a7){
  const VOID *v7; 
  __int64 v9; 
  unsigned int v11; 
  int IsNewRequest; 
  unsigned __int8 v14; 
  int v15; 
  UINT64 v16; 
  int v17; 
  INT64 v18; 
  int v19; 
  int v20; 
  int v21; 
  __int64 v22; 
  __int64 v23; 
  char pszDest[96]; 
  v7 = *(const VOID **)a1;
  v9 = *(_QWORD *)(a1 + 240);
  v11 = *(_DWORD *)(*(_QWORD *)a1 + 48i64);
  v21 = *(_DWORD *)(a5 + 96);
  v23 = *(_QWORD *)(*(_QWORD *)a1 + 56i64);
  v22 = *(_QWORD *)(a5 + 104);
  v20 = *(_DWORD *)(a5 + 4) & 0x8000000;
  IsNewRequest = VfMajorIsNewRequest((_IO_STACK_LOCATION *)a3, (_IO_STACK_LOCATION *)a4);
  v14 = *a4;
  v15 = IsNewRequest;
  v19 = IsNewRequest;
  if( (*a4 < 3u || v14 > 4u && (v14 <= 0xDu || v14 > 0xFu && v14 != 22)) && *(_DWORD *)(v9 + 56) == 2 )
  {
    v16 = *(unsigned __int8 *)(a1 + 60);
    if( (unsigned __int8)v16 >= 2u && (*(_DWORD *)(a1 + 56) & 0x2000000) == 0 )
    {
      ViErrorDisplayDescription(769);
      if( (int)RtlStringCbPrintfA(pszDest, 0x5Bui64, (INT8 *)"CulpritAddress = %p, Irp = %p, IRQL = %u.\n") >= 0 )
        VfUtilDbgPrint(pszDest);
      ViErrorFinishReport(769i64, (UINT64)a7, (UINT64)v7, v16);
      *(_DWORD *)(a1 + 56) |= 0x2000000u;
      v15 = v19;
    }
  }
  if( a3 )
  {
    v17 = *(_DWORD *)(a5 + 4);
    if( (*(_BYTE *)(a1 + 56) & 0x20) != 0 && (v17 & 0x1000000) == 0 )
    {
      if( v15 && !v20 )
      {
        *(_DWORD *)(a5 + 4) = v17 | 0x1000000;
        ViErrorReport1(530i64, a7, v7);
      }
      if( v11 != v21 )
      {
        *(_DWORD *)(a5 + 4) |= 0x1000000u;
        v18 = 571i64;
        if( a4[1] != 0xFF )
          v18 = 531i64;
        ViErrorReport1(v18, a7, v7);
      }
      if( v23 != v22 )
      {
        *(_DWORD *)(a5 + 4) |= 0x1000000u;
        ViErrorReport1(532i64, a7, v7);
      }
    }
    if( !(unsigned int)VfMajorIsValidIrpStatus((IO_STACK_LOCATION *)a4, v11) )
      ViErrorReport6(768i64, a7, v7, v11);
  }
}

Referenced by:

No references.