MiTryLockProtoPoolPageAtDpc

_MMPFN *__stdcall MiTryLockProtoPoolPageAtDpc(_MMPTE *ProtoPte, UINT64 PageLockHeld){
  _MMPFN **v2; 
  __int64 v3; 
  __int64 v4; 
  _MMPFN **v5; 
  _MMPTE *v7; 
  _MMPTE v8; 
  UINT64 v9; 
  __int64 v10; 
  int v11; 
  _MMPFN *v12; 
  _MMPTE v13; 
  char v14; 
  _MMPTE v16; 

  *v2 = 0i64;
  v4 = v3;
  v5 = v2;
  v7 = (_MMPTE *)((char *)MmGetPteBase() + (((unsigned __int64)ProtoPte >> 9) & 0x7FFFFFFFF8i64));
  v16.u.Long = v7->u.Long;
  v8.u.Long = v16.u.Long;
  if( (v16.u.Long & 1) == 0 )
    return(_MMPFN *)3221435187i64;
  MiPteInShadowRange((UINT64)&v16);
  v10 = (v8.u.Long >> 12) & 0xFFFFFFFFFi64;
  if( (((unsigned __int64)MmGetPfnDb()[v10].u4._bf_0 >> 50) & 1) == 0 )
    return(_MMPFN *)3221225557i64;
  v11 = 0;
  v12 = &MmGetPfnDb()[v10];
  if( _interlockedbittestandset64((volatile signed __int32 *)&v12->u2, 0x3Fui64) )
    return(_MMPFN *)3221225557i64;
  if( (v12->u2._bf_0 & 0x4000000000000000i64) != 0
    || (v13.u.Long = v7->u.Long, v16.u.Long = v13.u.Long, (v13.u.Long & 1) == 0)
    || (v13.u.Long & 0x200) != 0
    || v10 != ((v13.u.Long >> 12) & 0xFFFFFFFFFi64)
    || (*(_BYTE *)(&v12->u3 + 1) & 0x20) != 0 )
  {
    v11 = -1073741739;
  }
  else
  {
    if( (v16.u.Long & 0x20) == 0 )
      MiWriteValidPteVolatile(v7, 1ui64);
    if( !v4 || (v11 = (unsigned int)MiTryLockLeafPage(ProtoPte, v9), v11 >= 0) )
    {
      MiAddLockedPageCharge(v12, 1ui64);
      v14 = *((_BYTE *)&v12->u3 + 2) | 0x20;
      *v5 = v12;
      *((_BYTE *)&v12->u3 + 2) = v14;
    }
  }
  _InterlockedAnd64(&v12->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
  return(_MMPFN *)(unsigned int)v11;
}

Referenced by:

MiCopyDataPageToImagePage
MiCopyFileOnlyGlobalSubsectionPage
MiCopyHeaderIfResident
MiGetPageProtection