MiUnmapLargePages

VOID __stdcall MiUnmapLargePages(VOID *BaseAddress, UINT64 NumberOfBytes, _MI_SYSTEM_VA_TYPE VaType){
  _MI_SYSTEM_VA_TYPE v3; 
  UINT64 v4; 
  char *v6; 
  unsigned __int64 *v7; 
  char *i; 
  __int64 v9; 
  unsigned __int64 Long; 
  int v11; 

  v3 = MiVaSystemPtesLarge;
  v4 = NumberOfBytes;
  if( VaType != MiVaSystemPtes )
    v3 = VaType;
  if( (NumberOfBytes & 0x1FFFFF) != 0 )
  {
    v6 = (char *)MmGetPteBase() + (((unsigned __int64)BaseAddress >> 9) & 0x7FFFFFFFF8i64);
    v7 = (unsigned __int64 *)&v6[4096 * (NumberOfBytes >> 21)];
    for( i = &v6[8 * ((((unsigned __int16)BaseAddress & 0xFFF) + NumberOfBytes + 4095) >> 12)];
          v7 < (unsigned __int64 *)i;
          ++v7 )
    {
      LODWORD(v9) = MI_READ_PTE_LOCK_FREE((INT64)v7);
      if( !v9 )
        break;
      Long = ZeroPte.u.Long;
      LOBYTE(v11) = MiPteInShadowRange((UINT64)v7);
      if( v11 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (ZeroPte.u.Long & 1) != 0 )
        Long = ZeroPte.u.Long | 0x8000000000000000ui64;
      *v7 = Long;
    }
    v4 = (v4 + 0x1FFFFF) & 0xFFFFFFFFFFE00000ui64;
  }
  MiReturnSystemVa(BaseAddress, (char *)BaseAddress + v4, v3, 0i64);
}

Referenced by:

MiInsertInSystemSpace
MiRemoveFromSystemSpace
MiUnmapLargeDriver
MmUnmapIoSpace