MiRecheckCombineVm

NTSTATUS __stdcall MiRecheckCombineVm(_MI_PAGE_COMBINING_SUPPORT *Pcs, _MMPFN *PrivatePfn, _MMSUPPORT_INSTANCE *Vm){
  _MMSUPPORT_INSTANCE *v3; 
  _MMSUPPORT_INSTANCE *v4; 
  _MI_COMBINE_CANDIDATE v6; 
  VOID *v7; 
  _MI_COMBINE_CANDIDATE v8; 
  _MMPFN *TopLevelPfn; 
  unsigned __int64 v10; 
  __int64 v11; 
  _MMSUPPORT_INSTANCE *AnyMultiplexedVm; 

  v4 = v3;
  v6 = MiCombineCandidate(Pcs, PrivatePfn);
  v8 = v6;
  if( v6 == MiCombineNone )
    return 0;
  if( v6 == MiCombinePagedPool )
  {
    AnyMultiplexedVm = MiGetAnyMultiplexedVm(MiWorkingSetTypePagedPool, v7);
  }
  else
  {
    TopLevelPfn = MiGetTopLevelPfn((_MMPFN *)Vm, (UINT64 *)v7);
    v10 = ((unsigned __int64)TopLevelPfn->u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0 >> 13) & 0x7FFFFFFFFFF0i64 | 0xFFFF800000000000ui64;
    v11 = ((unsigned __int64)TopLevelPfn->u2._bf_0 >> 62) & 1;
    if( TopLevelPfn != (_MMPFN *)Vm )
      _InterlockedAnd64(&TopLevelPfn->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
    if( v8 != MiCombineUser )
      return !(_DWORD)v11 && v4 == (_MMSUPPORT_INSTANCE *)(v10 + 256);
    AnyMultiplexedVm = (_MMSUPPORT_INSTANCE *)(v10 + 1664);
  }
  return v4 == AnyMultiplexedVm;
}

Referenced by:

MiConvertStandbyToProto