MiDeleteSessionAddressSpace

VOID __stdcall MiDeleteSessionAddressSpace(_MM_SESSION_SPACE *SessionGlobal, _MI_DELETE_VA_INFO *DeleteInfo){
  INT64 v4; 
  unsigned __int64 v5; 
  _MMSUPPORT_SHARED *SharedVm; 
  UINT8 v7; 
  UINT8 v8; 
  VOID *v9; 
  INT64 v10; 

  LODWORD(v4) = MI_READ_PTE_LOCK_FREE((INT64)MmGetPteBase() + (((unsigned __int64)SessionGlobal >> 9) & 0x7FFFFFFFF8i64));
  v10 = v4;
  LODWORD(v5) = MI_READ_PTE_LOCK_FREE((INT64)&v10);
  MiIncrementPfn(&MmGetPfnDb()[(v5 >> 12) & 0xFFFFFFFFFi64]);
  MiDrainSystemAccessLog((_MMSUPPORT_INSTANCE *)((char *)SessionGlobal + 256));
  SharedVm = MiGetSharedVm((_MMSUPPORT_INSTANCE *)((char *)SessionGlobal + 256));
  v7 = ExAcquireSpinLockExclusive((INT64 *)&SharedVm->WorkingSetLock);
  SharedVm->GoodCitizenWaiting = 0;
  v8 = v7;
  if( (*((_DWORD *)SessionGlobal + 1) & 0x10) != 0 )
    MiDeleteWorkingSetList((INT64)SessionGlobal + 256);
  MiUnlockWorkingSetExclusive((_MMSUPPORT_INSTANCE *)((char *)SessionGlobal + 256), v8);
  if( MiIsPteCachingOptimizationEnabled() )
    MiAttemptCoalesce(
      (_MI_SYSTEM_PTE_TYPE *)((char *)SessionGlobal + 880),
      *((_QWORD *)SessionGlobal + 119),
      *((_QWORD *)SessionGlobal + 110) - *((_QWORD *)SessionGlobal + 119));
  LOBYTE(v9) = 17;
  MiDeletePagablePteRange((_EPROCESS *)((char *)SessionGlobal + 256), v9);
  MiDeleteTopLevelSessionMapping((INT64)SessionGlobal);
  --*(_QWORD *)&DeleteInfo->ReducedCommitClonePages;
}

Referenced by:

MiDereferenceSessionFinal