ExpAllocateMidLevelTable

CHAR *__fastcall ExpAllocateMidLevelTable(INT64 a1, CHAR **a2, INT64 a3){
  CHAR *TablePagedPool; 
  CHAR *LowLevelTable; 
  TablePagedPool = (CHAR *)ExpAllocateTablePagedPool(*(_QWORD *)(a1 + 16), 0x1000ui64);
  if( TablePagedPool )
  {
    LowLevelTable = ExpAllocateLowLevelTable(a1, a3);
    *a2 = LowLevelTable;
    if( LowLevelTable )
    {
      *(_QWORD *)TablePagedPool = LowLevelTable;
      return TablePagedPool;
    }
    ExpFreeTablePagedPool(*(_EPROCESS **)(a1 + 16), TablePagedPool, 0x1000ui64);
  }
  return 0i64;
}

Referenced by:

ExpAllocateHandleTableEntrySlow