MiLockTransitionLeafPage

_MMPFN *__stdcall MiLockTransitionLeafPage(ULONG_PTR PointerPte, _BYTE *PageIrql){
  void *v3; 
  INT64 v4; 
  INT64 *v5; 
  unsigned __int64 v6; 
  int v7; 
  unsigned __int64 v8; 
  __int64 v9; 
  _MMPFN *PfnDb; 
  _MMPFN *v11; 
  signed __int8 v12; 
  void *v14; 
  unsigned __int64 v15; 
  UINT64 SpinCount; 

  v3 = *(void **)&PointerPte;
  while( 1 )
  {
    while( 1 )
    {
      LODWORD(v4) = MI_READ_PTE_LOCK_FREE((INT64)v3);
      v6 = v4;
      if( (unsigned __int64)PageIrql > 1 && ((v4 & 1) != 0 || (v4 & 0x400) != 0) || (v4 & 0x800) == 0 )
        return 0i64;
      LOBYTE(v7) = MiInvalidPteConforms(v4, v5);
      if( v7 )
      {
        v8 = v6;
        if( *(&stru_140C4DB30 + 42) )
        {
          if( (v6 & 0x10) != 0 )
            v8 = v6 & 0xFFFFFFFFFFFFFFEFui64;
          else
            v8 = v6 & ~*(&stru_140C4DB30 + 42);
        }
        v9 = (v8 >> 12) & 0xFFFFFFFFFi64;
        if( (MmGetPfnDb()[(v8 >> 12) & 0xFFFFFFFFFi64].u4._bf_0 & 0x4000000000000i64) != 0 )
          break;
      }
    }
    PfnDb = MmGetPfnDb();
    v11 = &PfnDb[v9];
    if( (unsigned __int64)PageIrql <= 1 )
    {
      v12 = _interlockedbittestandset64((volatile signed __int32 *)&v11->u2, 0x3Fui64);
      if( PageIrql == (_BYTE *)1 )
      {
        if( v12 )
          return 0i64;
      }
      else
      {
        LODWORD(SpinCount) = 0;
        if( v12 )
        {
          do
          {
            do
              KeYieldProcessorEx(&SpinCount);
            while( v11->u2._bf_0 < 0 );
          }
          while( _interlockedbittestandset64((volatile signed __int32 *)&v11->u2, 0x3Fui64) );
        }
      }
    }
    else
    {
      *PageIrql = MiLockPageInline(&PfnDb[v9]);
    }
    LODWORD(v14) = MI_READ_PTE_LOCK_FREE((INT64)v3);
    if( v14 == (void *)v6 )
      break;
    if( (unsigned __int64)PageIrql <= 1 )
    {
      _InterlockedAnd64(&v11->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
    }
    else
    {
      v15 = (unsigned __int8)*PageIrql;
      _InterlockedAnd64(&v11->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
      __writecr8(v15);
    }
  }
  if( (unsigned __int64)PageIrql <= 1
    && (void *)(v11->PteLong | 0x8000000000000000ui64) != v3
    && (v11->u4._bf_0 & 0x1000000000i64) == 0 )
  {
    KeBugCheckEx(0x1Au, (PVOID)0x411, v3, (PVOID)v6, v11->ListEntry.Blink);
  }
  return v11;
}

Referenced by:

MiAccessCheck
MiActOnPte
MiCheckCommitReleaseFromVad
MiCheckPteForWriteCluster
MiDecommitPages
MiDeleteSystemPagableVm
MiGetPageProtection
MiGetWorkingSetInfoList
MiHandleForkTransitionPte
MiMakeVaRangePhysicallyContiguous
MiOutSwapWorkingSetPte
MiQueryVaPhysicalContiguity
MiReplacePageTablePage
MiReservePageFileSpaceForPage
MiSetProtectionOnTransitionPte
MiSetSystemCodeProtection
MiSharePages
MiTranslatePageForCopy
MiTryDeleteTransitionPte
MiUpdatePrefetchPriority
MiUserFault
MiWalkResetCommitPte
MmProtectPool