HalpIommuCreateDmarPageTable

INT64 __fastcall HalpIommuCreateDmarPageTable(INT64 a1, UINT64 a2, UINT64 a3, INT64 a4, INT64 a5, INT64 a6, INT64 *a7){
  unsigned int v7; 
  unsigned int v8; 
  unsigned int v9; 
  INT64 MemoryInternal; 
  INT64 v11; 
  __int64 v12; 
  __int64 v14; 
  int v15; 
  INT64 v16; 
  v7 = a3;
  v8 = a2;
  v9 = a1;
  if( a6 )
    MemoryInternal = (INT64)HalpMmAllocateMemoryInternal(0x60ui64, MmCached);
  else
    MemoryInternal = HalpMmAllocCtxAlloc(a1, 96i64);
  v12 = MemoryInternal;
  if( !MemoryInternal )
    return 3221225626i64;
  if( v7 > 6 || v8 < 2 || v7 < v8 )
    return 3221225485i64;
  v15 = HalpIommuInitializeDmarPageTable(v9, v8, v7, v11, v16, a6, MemoryInternal);
  if( v15 < 0 )
  {
    *a7 = 0i64;
    if( !a6 )
      HalpMmAllocCtxFree(v14, v12);
  }
  else
  {
    *a7 = v12;
  }
  return(unsigned int)v15;
}

Referenced by:

HalpIommuAllocateDmaDomain
HalpIommuConstructReservedPageTable