MiCheckVirtualAddress

_MMPTE *__stdcall MiCheckVirtualAddress(VOID *VirtualAddress, UINT64 *ProtectCode, _MMVAD **VadOut){
  UINT64 *v4; 
  unsigned __int64 v5; 
  _MMVAD *Address; 
  UINT64 v7; 
  VOID *v8; 
  _MMPTE *result; 

  *VadOut = 0i64;
  v4 = ProtectCode;
  if( (unsigned __int64)VirtualAddress <= 0x7FFFFFFEFFFFi64 )
  {
    if( (KeGetCurrentThread()->ApcState.Process->Flags3 & 1) == 0 )
    {
      v5 = (unsigned __int64)VirtualAddress & 0x7FFFFFFFF000i64;
      if( ((unsigned __int64)VirtualAddress & 0xFFFFFFFFFFFFF000ui64) == 2147352576 )
      {
        result = (_MMPTE *)*(&stru_140C4DB30 + 9);
LABEL_10:
        *(_DWORD *)ProtectCode = 1;
        return result;
      }
      if( v5 == *(&stru_140C4DB30 + 11) && v5 )
      {
        result = (_MMPTE *)*(&stru_140C4DB30 + 10);
        goto LABEL_10;
      }
    }
    Address = MiLocateAddress(VirtualAddress);
    *VadOut = Address;
    if( Address )
      return MiCheckUserVirtualAddress(v8, v4, Address, v7);
    goto LABEL_14;
  }
  if( VirtualAddress < MmGetPteBase() || VirtualAddress > MmGetPteLimit() )
  {
LABEL_14:
    *(_DWORD *)v4 = 24;
    return 0i64;
  }
  *(_DWORD *)ProtectCode = 4;
  return 0i64;
}

Referenced by:

MiCheckProtoAccess
MiFindActualFaultingPte
MiIsFaultPteIntact
MiResolveDemandZeroFault
MiSystemFault
MiTranslatePageForCopy