MiTradeActivePage

__int64 __fastcall MiTradeActivePage(
        ULONG_PTR a1,
        __int64 a2,
        unsigned __int64 a3,
        unsigned int a4,
        unsigned int a5,
        UINT64 a6){
  unsigned __int64 v7; 
  _MMPFN *PfnDb; 
  __int64 v10; 
  __int64 v11; 
  BOOL v12; 
  INT64 *v13; 
  INT64 v14; 
  INT64 v15; 
  int v17; 
  char v18; 
  char v19; 
  __int64 v20; 
  unsigned __int64 v21; 
  UNICODE_STRING *v22; 
  UINT8 v23; 
  PWCHAR v24; 
  int v25; 
  INT64 *v26; 
  INT64 v27; 
  v7 = a3;
  if( (*(_QWORD *)(a1 + 24) & 0x3FFFFFFFFFFFFFFFi64) != 1 || *(_WORD *)(a1 + 32) != 1 )
    return 0i64;
  PfnDb = MmGetPfnDb();
  v10 = (a2 - (__int64)PfnDb) / 48;
  v11 = (__int64)(a1 - (_QWORD)PfnDb) / 48;
  v12 = (MiFlags & 0x8000) != 0 && (unsigned int)MiGetPagePrivilege(a1, 0, 0i64);
  v13 = (INT64 *)((char *)MmGetPteBase() + ((v7 >> 9) & 0x7FFFFFFFF8i64));
  v14 = MI_READ_PTE_LOCK_FREE((INT64)v13);
  v15 = v14;
  if( a5 == 2 )
  {
    if( (v14 & 0x42) != 0 || v12 )
      return 0i64;
  }
  else
  {
    *v13 = v14 & 0xFFFFFFFFFFFFFBFEui64 | 0x400;
    v7 = a3;
    KeFlushSingleTb(a3, a4, a5);
  }
  v17 = *(unsigned __int8 *)(a1 + 34) >> 6;
  LODWORD(a6) = 0;
  while( _interlockedbittestandset64((volatile signed __int32 *)(a1 + 24), 0x3Fui64) )
  {
    do
      KeYieldProcessorEx(&a6);
    while( *(__int64 *)(a1 + 24) < 0 );
  }
  MiLockNestedPageAtDpcInline(a2);
  MiFinalizePageAttribute((_MMPFN *)a2, (_MI_PFN_CACHE_ATTRIBUTE)v17, 1ui64);
  MiCopyPfnEntryEx(a2, a1);
  MiCopyPage(v10, v11, 0i64, 6);
  _InterlockedAnd64((volatile signed __int64 *)(a2 + 24), 0x7FFFFFFFFFFFFFFFui64);
  v18 = *(_BYTE *)(a1 + 35);
  *(_QWORD *)(a1 + 40) &= ~0x8000000000000000ui64;
  *(_BYTE *)(a1 + 35) = v18 & 0xF7;
  v19 = *(_BYTE *)(a1 + 34) & 0xF8 | 5;
  *(_BYTE *)(a1 + 34) = v19;
  *(_BYTE *)(a1 + 34) = v19 & 0xC7;
  *(_BYTE *)(a1 + 35) &= ~0x20u;
  _InterlockedAnd64((volatile signed __int64 *)(a1 + 24), 0x7FFFFFFFFFFFFFFFui64);
  v20 = (v10 & 0xFFFFFFFFFi64) << 12;
  v21 = v20 | v15 & 0xFFFF000000000FFFui64;
  if( a5 == 2 )
    MiWriteValidPteNewPage(v13, v21, 0i64);
  else
    *v13 = v21;
  KeFlushSingleTb(v7, a4, a5);
  LOBYTE(v25) = MI_PFN_IS_PROTO((UNICODE_STRING *)a2, v22, v23, v24);
  if( v25 )
  {
    v26 = (INT64 *)(*(_QWORD *)(a2 + 8) | 0x8000000000000000ui64);
    v27 = MI_READ_PTE_LOCK_FREE((INT64)v26);
    MiWriteValidPteNewPage(v26, v20 | v27 & 0xFFFF000000000FFFui64, 0i64);
  }
  return 1i64;
}

Referenced by:

MiLockCode
MiMakeVaRangePhysicallyContiguous
MiReplaceLockedPage