--- a/src/3rdparty/chromium/base/hash/md5_constexpr_internal.h
+++ b/src/3rdparty/chromium/base/hash/md5_constexpr_internal.h
@@ -281,15 +281,63 @@ struct MD5CE {
     return IntermediateDataToMD5Digest(ProcessMessage(data, n));
   }
 
-  static constexpr uint64_t Hash64(const char* data, uint32_t n) {
-    IntermediateData intermediate = ProcessMessage(data, n);
-    return (static_cast<uint64_t>(SwapEndian(intermediate.a)) << 32) |
-           static_cast<uint64_t>(SwapEndian(intermediate.b));
+  static constexpr uint64_t Hash64(const char* message, uint32_t n) {
+    const uint32_t m = GetPaddedMessageLength(n);
+    IntermediateData intermediate0 = kInitialIntermediateData;
+    for (uint32_t offset = 0; offset < m; offset += 64) {
+      RoundData data = {
+          GetPaddedMessageWord(message, n, m, offset),
+          GetPaddedMessageWord(message, n, m, offset + 4),
+          GetPaddedMessageWord(message, n, m, offset + 8),
+          GetPaddedMessageWord(message, n, m, offset + 12),
+          GetPaddedMessageWord(message, n, m, offset + 16),
+          GetPaddedMessageWord(message, n, m, offset + 20),
+          GetPaddedMessageWord(message, n, m, offset + 24),
+          GetPaddedMessageWord(message, n, m, offset + 28),
+          GetPaddedMessageWord(message, n, m, offset + 32),
+          GetPaddedMessageWord(message, n, m, offset + 36),
+          GetPaddedMessageWord(message, n, m, offset + 40),
+          GetPaddedMessageWord(message, n, m, offset + 44),
+          GetPaddedMessageWord(message, n, m, offset + 48),
+          GetPaddedMessageWord(message, n, m, offset + 52),
+          GetPaddedMessageWord(message, n, m, offset + 56),
+          GetPaddedMessageWord(message, n, m, offset + 60)};
+      IntermediateData intermediate1 = intermediate0;
+      for (uint32_t i = 0; i < 64; ++i)
+        intermediate1 = ApplyStep(i, data, intermediate1);
+      intermediate0 = Add(intermediate0, intermediate1);
+    }
+    return (static_cast<uint64_t>(SwapEndian(intermediate0.a)) << 32) |
+           static_cast<uint64_t>(SwapEndian(intermediate0.b));
   }
 
-  static constexpr uint32_t Hash32(const char* data, uint32_t n) {
-    IntermediateData intermediate = ProcessMessage(data, n);
-    return SwapEndian(intermediate.a);
+  static constexpr uint32_t Hash32(const char* message, uint32_t n) {
+    const uint32_t m = GetPaddedMessageLength(n);
+    IntermediateData intermediate0 = kInitialIntermediateData;
+    for (uint32_t offset = 0; offset < m; offset += 64) {
+      RoundData data = {
+          GetPaddedMessageWord(message, n, m, offset),
+          GetPaddedMessageWord(message, n, m, offset + 4),
+          GetPaddedMessageWord(message, n, m, offset + 8),
+          GetPaddedMessageWord(message, n, m, offset + 12),
+          GetPaddedMessageWord(message, n, m, offset + 16),
+          GetPaddedMessageWord(message, n, m, offset + 20),
+          GetPaddedMessageWord(message, n, m, offset + 24),
+          GetPaddedMessageWord(message, n, m, offset + 28),
+          GetPaddedMessageWord(message, n, m, offset + 32),
+          GetPaddedMessageWord(message, n, m, offset + 36),
+          GetPaddedMessageWord(message, n, m, offset + 40),
+          GetPaddedMessageWord(message, n, m, offset + 44),
+          GetPaddedMessageWord(message, n, m, offset + 48),
+          GetPaddedMessageWord(message, n, m, offset + 52),
+          GetPaddedMessageWord(message, n, m, offset + 56),
+          GetPaddedMessageWord(message, n, m, offset + 60)};
+      IntermediateData intermediate1 = intermediate0;
+      for (uint32_t i = 0; i < 64; ++i)
+        intermediate1 = ApplyStep(i, data, intermediate1);
+      intermediate0 = Add(intermediate0, intermediate1);
+    }
+    return SwapEndian(intermediate0.a);
   }
 };
 
--- a/src/3rdparty/chromium/net/third_party/quiche/src/quic/core/quic_versions.h
+++ b/src/3rdparty/chromium/net/third_party/quiche/src/quic/core/quic_versions.h
@@ -26,6 +26,7 @@
 #include <string>
 #include <vector>
 
+#include "absl/base/macros.h"
 #include "net/third_party/quiche/src/quic/core/quic_tag.h"
 #include "net/third_party/quiche/src/quic/core/quic_types.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_export.h"
@@ -181,8 +182,14 @@ QUIC_EXPORT_PRIVATE constexpr bool ParsedQuicVersionIsValid(
       transport_version == QUIC_VERSION_RESERVED_FOR_NEGOTIATION;
   if (!transport_version_is_valid) {
     // Iterators are not constexpr in C++14 which Chrome uses.
-    constexpr auto supported_transport_versions = SupportedTransportVersions();
-    for (size_t i = 0; i < supported_transport_versions.size(); ++i) {
+    constexpr QuicTransportVersion supported_transport_versions[] = {
+        QUIC_VERSION_IETF_DRAFT_29,
+        QUIC_VERSION_IETF_DRAFT_27,
+        QUIC_VERSION_51,
+        QUIC_VERSION_50,
+        QUIC_VERSION_46,
+        QUIC_VERSION_43};
+    for (size_t i = 0; i < ABSL_ARRAYSIZE(supported_transport_versions); ++i) {
       const QuicTransportVersion& trans_vers = supported_transport_versions[i];
       if (trans_vers == transport_version) {
         transport_version_is_valid = true;