VfPnpVerifyIrpStackUpward
void __fastcall VfPnpVerifyIrpStackUpward(__int64 a1, __int64 a2, __int64 a3, __int64 a4, int a5){
const VOID *v9;
__int64 v10;
const void *v11;
int v12;
int v13;
int v14;
INT64 v15;
void *LowerDeviceObjectWithTag;
DEVICE_OBJECT *v17;
DEVICE_OBJECT *v18;
DEVICE_OBJECT *v19;
int IsPdo;
const VOID *v21;
if( !(unsigned int)IovUtilIsWdmStack(*(_DEVICE_OBJECT **)(a2 + 40)) )
return;
v9 = *(const VOID **)a1;
v10 = *(_QWORD *)(a1 + 240);
v11 = *(const void **)(a4 + 40);
v12 = *(_DWORD *)(*(_QWORD *)a1 + 48i64);
if( !a5 )
goto LABEL_16;
v13 = *(_DWORD *)(a1 + 56) & 0x20;
v14 = *(_DWORD *)(a4 + 4) & 0x10000000;
if( *(int *)(a4 + 4) < 0 )
goto LABEL_14;
if( v14 )
{
LABEL_15:
ViPnpVerifyMinorWasProcessedProperly((__int64)v9, a2, 0, (v12 != -1073741637) + 1, v11, 0);
goto LABEL_16;
}
if( *(_BYTE *)(a2 + 1) == 8 )
goto LABEL_14;
if( v13 )
{
v15 = 557i64;
goto LABEL_24;
}
if( (int)(v12 + 0x80000000) >= 0 && v12 != -1073741637 )
goto LABEL_14;
if( VfIoSwitchedOffNoReboot )
goto LABEL_16;
if( v12 >= 0 )
{
v15 = 558i64;
LABEL_24:
ViErrorReport1(v15, *(const VOID **)(a4 + 40), v9);
goto LABEL_16;
}
if( v12 == -1073741637 )
{
ViErrorReport1(559i64, *(const VOID **)(a4 + 40), v9);
LABEL_14:
if( v14 )
goto LABEL_15;
LABEL_16:
if( v12 == -1073741637 && (*(_DWORD *)(a3 + 4) & 0x2000000) == 0 && *(_DWORD *)(a3 + 96) != -1073741637 )
{
ViErrorReport1(534i64, v11, v9);
*(_DWORD *)(a3 + 4) |= 0x2000000u;
}
}
if( *(_BYTE *)(a2 + 1) == 23 )
{
LowerDeviceObjectWithTag = IovUtilGetLowerDeviceObjectWithTag(*(_QWORD *)(a2 + 40));
if( LowerDeviceObjectWithTag )
{
ObfDereferenceObjectWithTag(LowerDeviceObjectWithTag, 0x49667256ui64);
}
else
{
v17 = *(DEVICE_OBJECT **)(a2 + 40);
LODWORD(v18) = IovUtilGetBottomDeviceObjectWithTag(v17);
v19 = v18;
if( v18 == v17 )
IsPdo = PpvUtilIsPdo(v18);
else
IsPdo = 0;
ObfDereferenceObjectWithTag(v19, 0x49667256ui64);
if( !IsPdo )
ViErrorReport10(577i64, v11, *(const VOID **)(v10 + 64), *(const VOID **)(a2 + 40));
}
if( (unsigned int)IovUtilIsDeviceObjectMarked(*(_QWORD *)(a2 + 40), 0) )
ViErrorReport10(578i64, v11, *(const VOID **)(v10 + 64), v21);
}
}Referenced by:
No references.