MiPageTableLockIsContended

__int64 __fastcall MiPageTableLockIsContended(__int64 a1, UINT64 a2){
  char v3; 
  _MMPTE *Pml4eBase; 
  _MMPTE *Pml4eLimit; 
  unsigned __int64 v6; 
  _KLOCK_QUEUE_HANDLE *SelfmapLockHandle; 
  struct _KPRCB *CurrentPrcb; 
  bool v10; 
  _MMPTE *NextPteToAge; 
  char *PageTableLockBuffer; 
  int v13; 

  v3 = *(_BYTE *)(a1 + 184) & 7;
  v13 = 0;
  if( (_MMPTE *)a2 == MmGetPxeSelfRef() )
  {
    if( v3 )
    {
      if( v3 == 7 )
      {
        SelfmapLockHandle = &KeGetCurrentPrcb()->SelfmapLockHandle[1];
      }
      else
      {
        CurrentPrcb = KeGetCurrentPrcb();
        v10 = v3 == 5;
        SelfmapLockHandle = CurrentPrcb->SelfmapLockHandle;
        if( !v10 )
          SelfmapLockHandle = &CurrentPrcb->SelfmapLockHandle[3];
      }
    }
    else
    {
      SelfmapLockHandle = &KeGetCurrentPrcb()->SelfmapLockHandle[2];
    }
    return SelfmapLockHandle->LockQueue.Next != 0;
  }
  Pml4eBase = MmGetPml4eBase();
  Pml4eLimit = MmGetPml4eLimit();
  if( !v3 )
  {
    if( a2 >= (unsigned __int64)Pml4eBase && a2 <= (unsigned __int64)Pml4eLimit )
    {
      NextPteToAge = KeGetCurrentThread()->ApcState.Process->Vm.Instance.VmWorkingSetList[15].NextPteToAge;
      if( NextPteToAge )
        return(*((_DWORD *)&NextPteToAge->u.Long + ((a2 >> 3) & 0x1FF)) >> 30) & 1;
    }
LABEL_4:
    v6 = *(_QWORD *)a2;
    MiPteInShadowRange(a2);
    return(v6 >> 60) & 2;
  }
  if( a2 < (unsigned __int64)Pml4eBase || a2 > (unsigned __int64)Pml4eLimit )
    goto LABEL_4;
  PageTableLockBuffer = MiGetPageTableLockBuffer(a1, a2, &v13);
  return((*(_DWORD *)PageTableLockBuffer >> v13) & 2) != 0;
}

Referenced by:

MiAddPagesToEnclave
MiCommitEnclavePages
MiDecommitHardwareEnclavePages
MiDeleteSystemPagableVm
MiDispatchFault
MiFreePhysicalPages
MiInsertViewOfPhysicalSection
MiMapLockedPagesInUserSpaceHelper
MiProbeAndLockPages
MiProbePacketContended
MiProtectEnclavePages
MiRemoveMappedPtes
MiReplaceRotateWithDemandZero
MiScrubLargeMappedPage
MiSharePages
MiWriteAwePtes
NtLockVirtualMemory
NtUnlockVirtualMemory