MiRecheckCombineVm

INT64 __fastcall MiRecheckCombineVm(_MI_PAGE_COMBINING_SUPPORT *Pcs, _MMPFN *PrivatePfn, _MMSUPPORT_INSTANCE *Vm){
  CHAR *v3; 
  CHAR *v4; 
  int v6; 
  int v7; 
  UINT64 TopLevelPfn; 
  unsigned __int64 v9; 
  __int64 v10; 
  CHAR *AnyMultiplexedVm; 
  v4 = v3;
  v6 = MiCombineCandidate(Pcs, PrivatePfn);
  v7 = v6;
  if( !v6 )
    return 0i64;
  if( v6 == 2 )
  {
    AnyMultiplexedVm = MiGetAnyMultiplexedVm(2i64);
  }
  else
  {
    TopLevelPfn = MiGetTopLevelPfn((UINT64)Vm);
    v9 = (*(_QWORD *)TopLevelPfn >> 13) & 0x7FFFFFFFFFF0i64 | 0xFFFF800000000000ui64;
    v10 = (*(_QWORD *)(TopLevelPfn + 24) >> 62) & 1i64;
    if( (_MMSUPPORT_INSTANCE *)TopLevelPfn != Vm )
      _InterlockedAnd64((volatile signed __int64 *)(TopLevelPfn + 24), 0x7FFFFFFFFFFFFFFFui64);
    if( v7 != 1 )
      return !(_DWORD)v10 && v4 == (CHAR *)(v9 + 256);
    AnyMultiplexedVm = (CHAR *)(v9 + 1664);
  }
  return v4 == AnyMultiplexedVm;
}

Referenced by:

MiConvertStandbyToProto