MiAllocateHyperSpace

VOID *__stdcall MiAllocateHyperSpace(){
  unsigned __int64 v0; 
  unsigned __int64 v1; 
  _MI_ZERO_THREAD_CONTEXT *MmInternal; 
  VOID *result; 
  unsigned __int64 HyperPte; 
  unsigned __int64 v5; 
  VOID *v6; 

  v1 = v0;
  MmInternal = (_MI_ZERO_THREAD_CONTEXT *)KeGetCurrentPrcb()->MmInternal;
  if( MmInternal )
  {
    MiGetUltraMapping(MmInternal + 3112, 3i64);
    *((_QWORD *)MmInternal + 1543) = (char *)MmGetPteBase() + (((unsigned __int64)result >> 9) & 0x7FFFFFFFF8i64);
  }
  else
  {
    HyperPte = (unsigned __int64)KeGetCurrentPrcb()->HyperPte;
    v5 = HyperPte & 0xFFFFFFFFFFFFF000ui64;
    if( 64 - (HyperPte & 0xFFF) > v0 )
    {
      v6 = (VOID *)(v5 + ((HyperPte & 0xFFF) << 12));
    }
    else
    {
      MiFlushHyperSpace();
      HyperPte = v5;
      v6 = (VOID *)v5;
    }
    result = v6;
    KeGetCurrentPrcb()->HyperPte = (void *)(HyperPte + v1);
  }
  return result;
}

Referenced by:

MiCopyPage
MiFillPageWithImageExtentContents
MiGetPteMappingPair