MiLockTransitionLeafPage

_MMPFN *__fastcall MiLockTransitionLeafPage(_MMPTE *PoINTerPte, UINT8 *PageIrql){
  INT64 v4; 
  ULONG_PTR v5; 
  unsigned __int64 v6; 
  __int64 v7; 
  _MMPFN *PfnDb; 
  char *v9; 
  signed __int8 v10; 
  unsigned __int64 v12; 
  UINT64 SpinCount; 
  while( 1 )
  {
    while( 1 )
    {
      v4 = MI_READ_PTE_LOCK_FREE((INT64)PoINTerPte);
      v5 = v4;
      if( (unsigned __int64)PageIrql > 1 && ((v4 & 1) != 0 || (v4 & 0x400) != 0) || (v4 & 0x800) == 0 )
        return 0i64;
      if( MiInvalidPteConforms(v4) )
      {
        v6 = v5;
        if( qword_140C4DC80 )
        {
          if( (v5 & 0x10) != 0 )
            v6 = v5 & 0xFFFFFFFFFFFFFFEFui64;
          else
            v6 = v5 & ~qword_140C4DC80;
        }
        v7 = 6 * ((v6 >> 12) & 0xFFFFFFFFFi64);
        if( (*((_QWORD *)MmGetPfnDb() + 6 * ((v6 >> 12) & 0xFFFFFFFFFi64) + 5) & 0x4000000000000i64) != 0 )
          break;
      }
    }
    PfnDb = MmGetPfnDb();
    v9 = (char *)PfnDb + 8 * v7;
    if( (unsigned __int64)PageIrql <= 1 )
    {
      v10 = _interlockedbittestandset64((volatile signed __int32 *)v9 + 6, 0x3Fui64);
      if( PageIrql == (UINT8 *)1 )
      {
        if( v10 )
          return 0i64;
      }
      else
      {
        LODWORD(SpinCount) = 0;
        if( v10 )
        {
          do
          {
            do
              KeYieldProcessorEx(&SpinCount);
            while( *((__int64 *)v9 + 3) < 0 );
          }
          while( _interlockedbittestandset64((volatile signed __int32 *)v9 + 6, 0x3Fui64) );
        }
      }
    }
    else
    {
      *PageIrql = MiLockPageInline((INT64)PfnDb + 8 * v7);
    }
    if( MI_READ_PTE_LOCK_FREE((INT64)PoINTerPte) == v5 )
      break;
    if( (unsigned __int64)PageIrql <= 1 )
    {
      _InterlockedAnd64((volatile signed __int64 *)v9 + 3, 0x7FFFFFFFFFFFFFFFui64);
    }
    else
    {
      v12 = *PageIrql;
      _InterlockedAnd64((volatile signed __int64 *)v9 + 3, 0x7FFFFFFFFFFFFFFFui64);
      __writecr8(v12);
    }
  }
  if( (unsigned __int64)PageIrql <= 1
    && (_MMPTE *)(*((_QWORD *)v9 + 1) | 0x8000000000000000ui64) != PoINTerPte
    && (*((_QWORD *)v9 + 5) & 0x1000000000i64) == 0 )
  {
    KeBugCheckEx(0x1Au, 0x411ui64, (ULONG_PTR)PoINTerPte, v5, *((_QWORD *)v9 + 1));
  }
  return(_MMPFN *)v9;
}

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