IovCompleteRequest
VOID __fastcall IovCompleteRequest(_IRP *Irp, CHAR PriorityBoost){
UINT64 v4;
UINT64 v5;
bool v6;
__int64 v7;
char v8;
UINT64 v9;
__int64 v10;
__int128 v11;
__int64 v12;
__int64 v13;
__int64 v14[3];
__int64 v15;
__int128 v16;
__int128 v17;
__int128 v18;
__int128 v19;
__int64 v20;
__int64 retaddr;
v10 = 0i64;
v12 = 0i64;
v11 = 0i64;
IovpLogStackTrace(Irp);
if( (MmVerifierData & 0x10) != 0 && !IovpDisabledWithoutReboot )
{
if( *((char *)Irp + 67) > (char)(*((_BYTE *)Irp + 66) + 1) || *(_WORD *)Irp != 6 )
VerifierBugCheckIfAppropriate(0x44ui64, (UINT64)Irp, 0x486ui64, 0i64, 0i64, v9);
v4 = *((_QWORD *)Irp + 13);
if( v4 )
VerifierBugCheckIfAppropriate(0xC9ui64, 7ui64, v4, (UINT64)Irp, 0i64, v9);
v5 = *((int *)Irp + 12);
if( (_DWORD)v5 == 259 || (_DWORD)v5 == -1 )
VerifierBugCheckIfAppropriate(0xC9ui64, 6ui64, v5, (UINT64)Irp, 0i64, v9);
if( KeGetCurrentIrql() > 2u )
VerifierBugCheckIfAppropriate(0xC9ui64, 0xEui64, KeGetCurrentIrql(), (UINT64)Irp, 0i64, v9);
}
v13 = retaddr;
IovpCompleteRequest1((unsigned __int64)Irp, PriorityBoost, (__int64)&v10);
if( (!IovpDisabledWithoutReboot || v10) && *((_BYTE *)Irp + 67) <= *((_BYTE *)Irp + 66) )
{
v6 = *((int *)Irp + 12) < 0;
v7 = *((_QWORD *)Irp + 23);
v14[2] = (__int64)&v10;
v14[1] = *(_QWORD *)(v7 + 64);
v14[0] = v7;
v16 = *(_OWORD *)v7;
v17 = *(_OWORD *)(v7 + 16);
v18 = *(_OWORD *)(v7 + 32);
v19 = *(_OWORD *)(v7 + 48);
v20 = *(_QWORD *)(v7 + 64);
v8 = *(_BYTE *)(v7 + 3);
if( v6 )
{
if( v8 < 0 )
goto LABEL_18;
}
else if( (v8 & 0x40) != 0 )
{
goto LABEL_18;
}
if( !*((_BYTE *)Irp + 68) || (v8 & 0x20) == 0 )
{
v15 = 0i64;
*(_BYTE *)(v7 + 3) |= 0xE0u;
goto LABEL_19;
}
LABEL_18:
v15 = *(_QWORD *)(v7 + 56);
LABEL_19:
*(_QWORD *)(v7 + 56) = IovpLocalCompletionRoutine;
*(_QWORD *)(v7 + 64) = v14;
}
if( (IopFunctionPointerMask & 2) != 0 )
IopPerfCompleteRequest(Irp, PriorityBoost);
else
IopfCompleteRequest(Irp, PriorityBoost);
}Referenced by:
IofCompleteRequest