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