MiDecommitRegion

VOID __stdcall MiDecommitRegion(_MMVAD_SHORT *Vad, VOID *StartingAddress, VOID *EndingAddress){
  _EPROCESS *Process; 
  VOID *v5; 
  _MMPTE *PteAddress; 
  _MMPTE *v7; 
  __int64 v8; 
  VOID *v9; 
  __int64 v10; 
  union {unsigned int LongFlags1;_MMVAD_FLAGS1 VadFlags1;} v11; 
  __int64 LongFlags1; 
  UINT64 v13; 
  unsigned __int64 v14; 
  _EPROCESS *v15; 
  _MI_PARTITION *ProcessPartition; 
  UINT64 v17; 
  UINT64 VadLockHeld; 
  __int128 CommitReturnInfo; 
  _MI_DELETE_VA_INFO DeleteInfo; 
  __int128 v21; 
  __int128 v22; 

  DeleteInfo = 0i64;
  v21 = 0i64;
  v22 = 0i64;
  CommitReturnInfo = 0i64;
  Process = KeGetCurrentThread()->ApcState.Process;
  MiGetPteAddress(EndingAddress);
  PteAddress = MiGetPteAddress(v5);
  v8 = v7 - PteAddress + 1;
  LODWORD(VadLockHeld) = 1;
  MiDecommitPages(v9, v7, (ULONG_PTR)Process, Vad, VadLockHeld, &DeleteInfo);
  if( *((_QWORD *)&v22 + 1) )
  {
    MiFreeLargePages(*((_MMPFN **)&v22 + 1));
    *(_QWORD *)&DeleteInfo.ReducedCommitClonePages = v10;
  }
  v11.LongFlags1 = (unsigned int)Vad->u1;
  LongFlags1 = v11.LongFlags1;
  LODWORD(LongFlags1) = v11.LongFlags1 & 0x7FFFFFFF;
  v13 = v8 - *((_QWORD *)&v21 + 1);
  v14 = (LongFlags1 | ((unsigned __int64)Vad->CommitChargeHigh << 31)) - v13;
  Vad->CommitChargeHigh = v14 >> 31;
  Vad->u1.LongFlags1 = v11.LongFlags1 ^ (v14 ^ v11.LongFlags1) & 0x7FFFFFFF;
  if( (Vad->u.LongFlags & 0x500000) == 5242880 )
    _InterlockedExchangeAdd64((volatile signed __int64 *)&Process->VadPhysicalPages, -(__int64)v13);
  if( !MiVadCommitCrossPartition((INT64)Vad) )
  {
    MiFillCommitReturnInfo(v13, &DeleteInfo, (_MI_COMMIT_RETURN_INFO *)&CommitReturnInfo);
    v15 = (_EPROCESS *)CommitReturnInfo;
    if( (_QWORD)CommitReturnInfo )
      MiReturnFullProcessCharges((ULONG_PTR)Process, CommitReturnInfo);
    if( *((_QWORD *)&CommitReturnInfo + 1) )
    {
      ProcessPartition = MiGetProcessPartition(Process, v15);
      MiReturnCommit(ProcessPartition, v17);
    }
  }
}

Referenced by:

MiFreeToSubAllocatedRegion
MiLoadDataIntoVsmEnclave
MiLoadSectionIntoVsmEnclave
MmFreeVirtualMemory