MiReturnSystemVa

VOID __fastcall MiReturnSystemVa(UINT64 a1, UINT64 a2, INT64 a3){
  unsigned int v3; 
  _MMPTE *PteBase; 
  UINT64 v7; 
  UINT64 v8; 
  __int64 v9; 
  __int64 v10; 
  int v11; 
  INT64 AnyMultiplexedVm; 
  unsigned int v13; 
  unsigned int a5; 
  unsigned int v15; 
  INT64 v16; 
  unsigned int v17; 
  int v18; 
  int v19; 
  int result; 
  __int16 result_4; 
  int v22; 
  __int64 v23; 
  __int64 v24; 
  v3 = a3;
  memset((INT64)&result, 0i64);
  PteBase = MmGetPteBase();
  v7 = ((unsigned __int64)PteBase + ((a1 >> 9) & 0x7FFFFFFFF8i64) + 4095) & 0xFFFFFFFFFFFFF000ui64;
  v8 = ((unsigned __int64)PteBase + ((a2 >> 9) & 0x7FFFFFFFF8i64)) & 0xFFFFFFFFFFFFF000ui64;
  if( v7 < v8 )
  {
    v9 = (__int64)((v8 << 25) - ((_QWORD)PteBase << 25)) >> 16;
    v10 = (__int64)((v7 << 25) - ((_QWORD)PteBase << 25)) >> 16;
    v11 = 2;
    result_4 = 0;
    v23 = 0i64;
    v24 = 0i64;
    v22 = 20;
    if( v3 != 1 )
      v11 = 0;
    result = v11;
    AnyMultiplexedVm = (INT64)MiGetAnyMultiplexedVm(5i64);
    if( v3 == a5 )
    {
      AnyMultiplexedVm = MiGetSessionVm();
      goto LABEL_11;
    }
    if( v3 - a5 == 5 )
    {
      v16 = v13;
    }
    else
    {
      v15 = v3 - a5 - 5 - v13;
      if( v15 )
      {
        v16 = v13 + 1;
        v17 = v15 - a5;
        if( v17 )
        {
          v18 = v17 - v16;
          if( v18 )
          {
            v19 = v18 - a5;
            if( v19 )
            {
              if( v19 != a5 )
                goto LABEL_11;
              v16 = 4i64;
            }
          }
          else
          {
            v16 = a5;
          }
        }
      }
      else
      {
        v16 = 0i64;
      }
    }
    AnyMultiplexedVm = (INT64)MiGetAnyMultiplexedVm(v16);
LABEL_11:
    MiDeleteSystemPageTables(AnyMultiplexedVm, v3, v10, v9 - 1, a5, (INT64)&result);
    MiMakeSystemRangeAvailable((PVOID)v10, (PVOID)(v9 - v10));
  }
}

Referenced by:

MiDeleteBootRange
MiExpandPtes
MiGetPageTablesForLargeMap
MiMapBBTMemory
MiObtainSystemCacheView
MiReleaseDriverPtes
MiReleaseLargePteMappings
MiReleaseSystemCacheView
MiReserveDriverPtes
MiReturnSystemPtes
MiUnmapLargePages
MmFreePoolMemory
MmFreeSecurePoolMemory