HalpMmReservePageTablePages

INT64 __stdcall HalpMmReservePageTablePages(){
  INT64 result; 
  __int64 v1; 
  unsigned __int64 v2; 
  char *v3; 
  unsigned __int64 v4; 
  result = HalpInterruptModel();
  if( (_DWORD)result == 3 )
  {
    result = HalQueryMaximumProcessorCount();
    v1 = ((unsigned int)result + 16i64) << 18;
  }
  v2 = 0i64;
  v3 = (char *)HalpOriginalHeapStart;
  v4 = (unsigned __int64)(v1 + (HalpMmEarlyPhysicalPagesAllocated << 12) + 0x1FFFFF) >> 21;
  if( v4 )
  {
    do
    {
      if( (unsigned __int64)v3 > HalpOriginalHeapEnd )
        break;
      result = (INT64)HalpMmGetPteAddressSafe(v3);
      ++v2;
      v3 += 0x200000;
    }
    while( v2 < v4 );
  }
  return result;
}

Referenced by:

HalpMmInitSystem