MiEmptyWorkingSetHelper

NTSTATUS __stdcall MiEmptyWorkingSetHelper(
        _MMSUPPORT_INSTANCE *Vm,
        _MMPTE *PointerPte,
        UINT64 WorkingSetIndex,
        _MMWSLE_FLUSH_LIST *WsleFlushList){
  unsigned __int64 PteBase; 
  unsigned int v5; 
  unsigned __int64 v9; 
  UINT64 v10; 
  UINT64 v11; 
  _MMPFN *v12; 
  int v13; 
  _MMPTE *v14; 
  UINT64 v16; 

  PteBase = (unsigned __int64)MmGetPteBase();
  v5 = (unsigned int)WsleFlushList;
  v9 = (__int64)(((_QWORD)PointerPte << 25) - (PteBase << 25)) >> 16;
  LODWORD(v10) = MI_READ_PTE_LOCK_FREE((INT64)PointerPte);
  v16 = v10;
  v11 = v10;
  MiPteInShadowRange((UINT64)&v16);
  v12 = &MmGetPfnDb()[(v11 >> 12) & 0xFFFFFFFFFi64];
  v13 = v9 < PteBase || v9 > (unsigned __int64)MmGetPteLimit();
  if( !(unsigned int)MiWalkVaCheckCommon(Vm, PointerPte, v12, v13, (__int64)&v16)
    || v12->u3.ReferenceCount > 1u && (Vm->Flags._bf_0 & 7) != 0 )
  {
    return 0;
  }
  if( *(&stru_140C4DB30 + 654) )
    MI_WSLE_LOG_ACCESS(Vm, (_MMWSLE *)PointerPte, v14);
  MiInsertTbFlushEntry((_MI_TB_FLUSH_LIST *)WorkingSetIndex, (VOID *)v9, 1ui64, 0i64);
  if( *(_DWORD *)(WorkingSetIndex + 12) == *(_DWORD *)(WorkingSetIndex + 8) )
    MiFreeWsleList(Vm, (_MMWSLE_FLUSH_LIST *)WorkingSetIndex, v5);
  return 1;
}

Referenced by:

MiEmptyPte
MiUpdateOldPteWorker