ExAllocatePoolMm

VOID *__fastcall ExAllocatePoolMm(INT64 a1, UINT64 a2, UINT64 a3, UINT64 a4){
  int v4; 
  unsigned int v5; 
  unsigned int v7; 
  INT64 v9; 
  BYTE v10; 
  char v11[3]; 
  POOL_TYPE PoolType[5]; 
  v4 = 0;
  v5 = a4;
  PoolType[0] = NonPagedPool;
  v11[0] = 0;
  v7 = a3;
  v10 = 0;
  if( (int)ExpPoolFlagsToPoolType(a1, 1i64, (INT64 *)PoolType, (BYTE *)v11, &v10) < 0 )
    return 0i64;
  if( v10 )
    v4 = 1;
  if( v11[0] )
    return ExAllocatePoolWithQuotaTag(PoolType[0], a2, v7);
  LODWORD(v9) = v4;
  return ExpAllocatePoolWithTagFromNode((unsigned int)PoolType[0], a2, v7, v5, v9);
}

Referenced by:

MiAddSecureEntry
MiAllocateAccessLog
MiInsertSharedCommitNode
MiLockWorkingSetForLargeMapping
MiMapViewOfDataSection
MiReserveUserMemory
MiZeroPageCalibrate