MiTransformValidPteInPlace

VOID __stdcall MiTransformValidPteInPlace(INT64 *a1, UINT64 a2, INT64 a3, UINT64 a4){
  unsigned int v4; 
  INT64 v8; 
  unsigned __int64 v9; 
  INT64 v10; 
  INT64 v11; 

  v4 = a4;
  if( (MiFlags & 0x4000000) != 0 )
    _mm_lfence();
  v8 = *a1;
  while( v8 != a3 )
  {
    while( (v8 & 0x20) != 0 )
    {
      v9 = v8 & 0xFFFFFFFFFFFFFFDFui64;
      v10 = v8;
      v8 = _InterlockedCompareExchange64(a1, v8 & 0xFFFFFFFFFFFFFFDFui64, v8);
      if( v10 == v8 )
      {
        MiFlushValidPteFromTb(a2, v8, v4);
        v8 = v9;
        break;
      }
    }
    v11 = v8;
    v8 = _InterlockedCompareExchange64(a1, a3, v8);
    if( v11 == v8 )
    {
      if( (MiFlags & 0x800) != 0 )
        LOBYTE(v8) = v8 | 0x20;
      if( (v8 & 0x20) != 0 )
        MiFlushValidPteFromTb(a2, v8, v4);
      return;
    }
  }
}

Referenced by:

MiDemoteValidLargePageOneLevel
MiInitializeDynamicBitmap
MiInitializeSystemPageTable
MiMakeLargePageTable
MiReplacePfnWithGapMapping
MiReplicatePteChangeToProcess