IovpCompleteRequest4
void __fastcall IovpCompleteRequest4(__int64 a1, UINT64 a2, const void *a3, _QWORD *a4){
int v5;
INT64 v7;
char v8;
_BYTE *v9;
v5 = a2;
if( *a4 )
{
v7 = a4[1];
KeAcquireSpinLockRaiseToDpc((UINT64 *)(v7 + 8), a2);
*(_BYTE *)(v7 + 16) = v8;
if( v5 != -1073741802 )
{
v9 = *(_BYTE **)(a1 + 184);
if( *(_BYTE *)(a1 + 67) <= *(_BYTE *)(a1 + 66)
&& (unsigned __int8)(*v9 - 3) <= 1u
&& *(_QWORD *)(a1 + 8)
&& (MmVerifierData & 0x6000) != 0 )
{
MdlInvariantPostDriverCompletion(v7, a1);
}
if( *(_QWORD *)(v7 + 216) && *(int *)(v7 + 56) >= 0 && (v9[3] & 1) == 0 )
{
ViErrorReport1(552i64, a3, (const VOID *)a1);
*(_BYTE *)(*(_QWORD *)(a1 + 184) + 3i64) |= 1u;
}
}
VfIrpDatabaseEntryReleaseLock((_QWORD *)v7);
}
}Referenced by:
IovpLocalCompletionRoutine