MiMapArbitraryPage

NTSTATUS __stdcall MiMapArbitraryPage(
        _MI_PAGE_COMBINING_SUPPORT *Pcs,
        _MI_ARBITRARY_PAGE_MAP *PageMap,
        _MI_COMBINE_CANDIDATE EntryCandidate,
        UINT64 StandbyOnly){
  __int64 v4; 
  int v5; 
  _XSTATE_CONFIGURATION *v6; 
  __int64 v10; 
  unsigned __int8 CurrentIrql; 
  _MI_COMBINE_CANDIDATE v12; 
  char v13; 
  INT64 v14; 
  unsigned __int64 v15; 
  unsigned __int64 v16; 
  int v17; 
  UINT64 SpinCount; 
  int v20; 

  v4 = *((_QWORD *)PageMap + 8);
  v5 = StandbyOnly;
  v6 = (_XSTATE_CONFIGURATION *)*((_QWORD *)PageMap + 9);
  v10 = (v4 - (__int64)MmGetPfnDb()) / 48;
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  LODWORD(SpinCount) = 0;
  while( _interlockedbittestandset64((volatile signed __int32 *)(v4 + 24), 0x3Fui64) )
  {
    do
      KeYieldProcessorEx(&SpinCount);
    while( *(__int64 *)(v4 + 24) < 0 );
  }
  v12 = MiCombineCandidate(Pcs, (_MMPFN *)(unsigned int)EntryCandidate);
  if( !v5 )
  {
    if( v12 )
      goto LABEL_4;
LABEL_18:
    _InterlockedAnd64((volatile signed __int64 *)(v4 + 24), 0x7FFFFFFFFFFFFFFFui64);
    __writecr8(CurrentIrql);
    return 0;
  }
  if( v12 != v5 )
    goto LABEL_18;
LABEL_4:
  if( v20 == 1 && (unsigned __int8)((*(_BYTE *)(v4 + 34) & 7) - 2) > 1u )
    goto LABEL_18;
  v13 = *(_BYTE *)(v4 + 34) >> 6;
  if( v13 == 3 )
    goto LABEL_18;
  v14 = 1i64;
  if( v13 )
  {
    if( v13 == 2 )
      v14 = 25i64;
  }
  else
  {
    v14 = 9i64;
  }
  LODWORD(v14) = v14 | 0x20000000;
  LODWORD(v15) = MiMakeValidPte(v6, v10, v14);
  *((_QWORD *)PageMap + 7) = v6;
  v16 = v15;
  *((_QWORD *)PageMap + 6) = v4;
  LOBYTE(v17) = MiPteInShadowRange((UINT64)v6);
  if( v17 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (v16 & 1) != 0 )
    v16 |= 0x8000000000000000ui64;
  v6->EnabledFeatures = v16;
  _InterlockedAnd64((volatile signed __int64 *)(v4 + 24), 0x7FFFFFFFFFFFFFFFui64);
  __writecr8(CurrentIrql);
  return 1;
}

Referenced by:

MiCombineAllPhysicalMemory
MiCombinePte
MiSharePages