MiReplicatePteChange

VOID __stdcall MiReplicatePteChange(MMPTE *PointerPte, MMPTE *LastPte){
  _MMPTE *PteBase; 
  UINT64 v4; 
  __int64 v5; 
  __int64 v6; 
  UINT64 LeafVa; 
  __int64 v8; 
  __int64 *v9; 
  __int64 *i; 
  INT64 v11; 
  int v12; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  PteBase = MmGetPteBase();
  memset(&LockHandle, 0, sizeof(LockHandle));
  v4 = (UINT64)PointerPte;
  v5 = 3i64;
  do
  {
    v4 = (UINT64)PteBase + ((v4 >> 9) & 0x7FFFFFFFF8i64);
    LastPte = (_MMPTE *)((char *)PteBase + (((unsigned __int64)LastPte >> 9) & 0x7FFFFFFFF8i64));
    --v5;
  }
  while( v5 );
  v6 = *((_QWORD *)KeGetCurrentThread() + 23);
  LeafVa = MiGetLeafVa((UINT64)PointerPte);
  if( (unsigned int)MiGetSystemRegionType(LeafVa) == 1 )
  {
    v8 = *(_QWORD *)(*((_QWORD *)KeGetCurrentThread() + 23) + 1368i64);
    v9 = (__int64 *)(v8 + 16);
  }
  else
  {
    v8 = 0i64;
    v9 = &qword_140C4DB68;
  }
  KeAcquireInStackQueuedSpinLock(&WorkerRoutine, &LockHandle);
  for( i = (__int64 *)*v9; i != v9; i = (__int64 *)*i )
  {
    v11 = (INT64)i + (v8 != 0 ? -1184i64 : -1984i64);
    v12 = *(_DWORD *)(v11 + 1124);
    if( (v12 & 0x800000) == 0 )
    {
      if( (v12 & 0xC00) != 0 && (v12 & 0x80u) == 0 )
      {
        if( v11 != v6 )
          MiReplicatePteChangeToProcess(v11, v4, (UINT64)LastPte);
      }
      else
      {
        _InterlockedOr((volatile signed __int32 *)(v11 + 1124), 0x800000u);
      }
    }
  }
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  __writecr8(LockHandle.OldIrql);
}

Referenced by:

MiCreateSystemPageTable
MiDecommitLargePoolVa
MiDeleteSystemPageTable
MiDeleteVaTail
MiInitializeShadowPageTable
MiReplicatePfnDatabaseMappings
MiZeroAndFlushPtes