MiIsPageTableLocked

UINT64 __fastcall MiIsPageTableLocked(INT64 a1, UINT64 a2){
  char v2; 
  char v4; 
  INT64 v5; 
  INT64 v6; 
  __int64 v8; 
  __int64 *v9; 
  bool v10; 
  CHAR *PageTableLockBuffer; 
  int a3; 
  v2 = *(_BYTE *)(a1 + 184);
  a3 = 0;
  v4 = v2 & 7;
  if( (_MMPTE *)a2 == MmGetPxeSelfRef() )
  {
    if( v4 )
    {
      if( v4 == 7 )
      {
        v9 = qword_140C4E238;
      }
      else
      {
        v9 = &qword_140C4E230;
        if( v4 != 5 )
          v9 = qword_140C4E248;
      }
    }
    else
    {
      v9 = (__int64 *)(a1 + 176);
    }
    v10 = *v9 == 0;
  }
  else
  {
    if( v4
      || a2 < (unsigned __int64)MmGetPml4eBase()
      || a2 > (unsigned __int64)MmGetPml4eLimit()
      || (v8 = *(_QWORD *)(*(_QWORD *)(*((_QWORD *)KeGetCurrentThread() + 23) + 1680i64) + 608i64)) == 0 )
    {
      if( MiShouldLockPteDirectly(a1, a2) )
        return((unsigned __int64)MI_READ_PTE_LOCK_FREE(v5) >> 60) & 1;
      PageTableLockBuffer = MiGetPageTableLockBuffer(v6, v5, &a3);
      return((*(_DWORD *)PageTableLockBuffer >> a3) & 1) != 0;
    }
    v10 = *(_DWORD *)(v8 + 4 * ((a2 >> 3) & 0x1FF)) == 0;
  }
  return !v10;
}

Referenced by:

MiAgePte
MiResetAccessBitPte
MiTrimPte
MiWalkVaCheckCommon