MiReturnWsToExpansionList

VOID __stdcall MiReturnWsToExpansionList(_MMSUPPORT_INSTANCE *Vm, UINT64 InsertAtFront){
  _LIST_ENTRY *p_WorkingSetExpansionLinks; 
  _LIST_ENTRY *v3; 
  _LIST_ENTRY *Flink; 
  _KGATE *ExitOutswapGate; 
  _LIST_ENTRY *v6; 

  p_WorkingSetExpansionLinks = &Vm->WorkingSetExpansionLinks;
  v3 = (_LIST_ENTRY *)(*(_QWORD *)(*(&stru_140C4DB30 + 267) + 8i64 * Vm->PartitionId) + 6856i64);
  if( (_DWORD)InsertAtFront )
  {
    Flink = v3->Flink;
    if( v3->Flink->Blink == v3 )
    {
      p_WorkingSetExpansionLinks->Flink = Flink;
      Vm->WorkingSetExpansionLinks.Blink = v3;
      Flink->Blink = p_WorkingSetExpansionLinks;
      v3->Flink = p_WorkingSetExpansionLinks;
      goto LABEL_4;
    }
LABEL_8:
    __fastfail(3u);
  }
  v6 = *(_LIST_ENTRY **)(*(_QWORD *)(*(&stru_140C4DB30 + 267) + 8i64 * Vm->PartitionId) + 6864i64);
  if( v6->Flink != v3 )
    goto LABEL_8;
  p_WorkingSetExpansionLinks->Flink = v3;
  Vm->WorkingSetExpansionLinks.Blink = v6;
  v6->Flink = p_WorkingSetExpansionLinks;
  v3->Blink = p_WorkingSetExpansionLinks;
LABEL_4:
  ExitOutswapGate = Vm->ExitOutswapGate;
  if( ExitOutswapGate )
    KeSignalGate(ExitOutswapGate, 1i64);
}

Referenced by:

KiInSwapProcesses
MiAllowWorkingSetExpansion
MiEmptyTargetedWorkingSet
MiProcessWorkingSets