MiTryLockLeafPage

_MMPFN *__stdcall MiTryLockLeafPage(_MMPTE *ProtoPte, UINT64 PageLockHeld){
  _MMPFN **v2; 
  _MMPTE *v3; 
  INT64 Long; 
  unsigned __int64 v5; 
  int v6; 
  _MMPFN *v7; 

  *v2 = 0i64;
  v3 = ProtoPte;
  while( 1 )
  {
    while( 1 )
    {
      Long = v3->u.Long;
      v5 = v3->u.Long;
      if( (v3->u.Long & 1) != 0 )
        goto LABEL_8;
      if( (v3->u.Long & 0xC00) != 2048 )
        return(_MMPFN *)3221226548i64;
      LOBYTE(v6) = MiInvalidPteConforms(Long, (INT64 *)(PageLockHeld * 48));
      if( v6 )
      {
        v5 = Long;
        if( *(&stru_140C4DB30 + 42) )
        {
          if( (Long & 0x10) == 0 )
            v5 = Long & ~*(&stru_140C4DB30 + 42);
        }
LABEL_8:
        PageLockHeld = (v5 >> 12) & 0xFFFFFFFFFi64;
        if( (((unsigned __int64)MmGetPfnDb()[PageLockHeld].u4._bf_0 >> 50) & 1) != 0 )
          break;
      }
    }
    v7 = &MmGetPfnDb()[PageLockHeld];
    if( _interlockedbittestandset64((volatile signed __int32 *)&v7->u2, 0x3Fui64) )
      return(_MMPFN *)3221225557i64;
    if( v3->u.Long == Long )
    {
      *v2 = v7;
      return 0i64;
    }
    _InterlockedAnd64(&v7->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
  }
}

Referenced by:

MiConvertStandbyToProto
MiCopyDataPageToImagePage
MiCopyFileOnlyGlobalSubsectionPage
MiDeleteClusterSection
MiTryLockProtoPoolPageAtDpc