VslAllocatePool
NTSTATUS __stdcall VslAllocatePool(_SIZE_T NumberOfBytes, UINT32 Tag, INT64 a3){
VOID **v3;
VOID **v4;
VOID **PoolWithTag;
VOID **v9;
VOID **v10;
int v11;
VOID ***v12;
v4 = v3;
if( *(_QWORD *)&NumberOfBytes > 0x1FA000ui64 )
return -1073741637;
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, *(UINT64 *)&NumberOfBytes, Tag);
if( !PoolWithTag )
return -1073741670;
v9 = ExAllocatePoolWithTag(0x200ui64, 0x48ui64, 1416850774i64);
v10 = v9;
if( !v9 )
{
v11 = -1073741670;
LABEL_9:
ExFreePoolWithTag(PoolWithTag, 0);
return v11;
}
v11 = VslpLockPagesForTransfer((INT64)v9, (INT64)PoolWithTag, (unsigned int)NumberOfBytes, 1i64, 0);
if( v11 < 0 )
{
ExFreePoolWithTag(v10, 0);
goto LABEL_9;
}
*(_QWORD *)a3 = v10[7];
*v4 = *v10;
*v12 = v10;
return 0;
}Referenced by:
PsDispatchIumService