MiTryLockProtoPoolPageAtDpc

INT64 __fastcall MiTryLockProtoPoolPageAtDpc(INT64 *a1, INT64 a2, _MMPFN **a3, _MMPFN **a4){
  MMPTE *v7; 
  unsigned __int64 v8; 
  UINT64 v9; 
  __int64 v10; 
  int v11; 
  volatile signed __int32 *v12; 
  unsigned __int64 v13; 
  char v14; 
  unsigned __int64 v16; 
  *a3 = 0i64;
  v7 = (_MMPTE *)((char *)MmGetPteBase() + (((unsigned __int64)a1 >> 9) & 0x7FFFFFFFF8i64));
  v16 = *(_QWORD *)v7;
  v8 = v16;
  if( (v16 & 1) == 0 )
    return 3221435187i64;
  MiPteInShadowRange((UINT64)&v16);
  v10 = (v8 >> 12) & 0xFFFFFFFFFi64;
  if( ((*((_QWORD *)MmGetPfnDb() + 6 * v10 + 5) >> 50) & 1) == 0 )
    return 3221225557i64;
  v11 = 0;
  v12 = (volatile signed __int32 *)((char *)MmGetPfnDb() + 48 * v10);
  if( _interlockedbittestandset64(v12 + 6, 0x3Fui64) )
    return 3221225557i64;
  if( (*((_QWORD *)v12 + 3) & 0x4000000000000000i64) != 0
    || (v13 = *(_QWORD *)v7, v16 = v13, (v13 & 1) == 0)
    || (v13 & 0x200) != 0
    || v10 != ((v13 >> 12) & 0xFFFFFFFFFi64)
    || (*((_BYTE *)v12 + 34) & 0x20) != 0 )
  {
    v11 = -1073741739;
  }
  else
  {
    if( (v16 & 0x20) == 0 )
      MiWriteValidPteVolatile(v7, 1ui64);
    if( !a4 || (v11 = (unsigned int)MiTryLockLeafPage((_MMPTE *)a1, v9), v11 >= 0) )
    {
      MiAddLockedPageCharge((INT64)v12, 1);
      v14 = *((_BYTE *)v12 + 34) | 0x20;
      *a3 = (_MMPFN *)v12;
      *((_BYTE *)v12 + 34) = v14;
    }
  }
  _InterlockedAnd64((volatile signed __int64 *)v12 + 3, 0x7FFFFFFFFFFFFFFFui64);
  return(unsigned int)v11;
}

Referenced by:

MiCopyDataPageToImagePage
MiCopyFileOnlyGlobalSubsectionPage
MiCopyHeaderIfResident
MiGetPageProtection