; LLVM IR from chensoft/libsocket :: lib/libchen/test/lib/googletest/googlemock/test (gmock-matchers_test)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.testing::Matcher" = type { %"class.testing::internal::MatcherBase" }
%"class.testing::internal::MatcherBase" = type { ptr, %"class.testing::internal::linked_ptr" }
%"class.testing::internal::linked_ptr" = type { ptr, %"class.testing::internal::linked_ptr_internal" }
%"class.testing::internal::linked_ptr_internal" = type { ptr }
%"class.testing::internal::EitherOfMatcher" = type { %"class.testing::internal::LeMatcher.139", %"class.testing::internal::GeMatcher" }
%"class.testing::internal::LeMatcher.139" = type { %"class.testing::internal::ComparisonBase.140" }
%"class.testing::internal::ComparisonBase.140" = type { i32 }
%"class.testing::internal::GeMatcher" = type { %"class.testing::internal::ComparisonBase.131" }
%"class.testing::internal::ComparisonBase.131" = type { i32 }
%"class.testing::AssertionResult" = type { i8, %"class.testing::internal::scoped_ptr" }
%"class.testing::internal::scoped_ptr" = type { ptr }
%"class.testing::Message" = type { %"class.testing::internal::scoped_ptr.0" }
%"class.testing::internal::scoped_ptr.0" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }
%"class.testing::internal::EitherOfMatcher.552" = type { %"class.testing::internal::LtMatcher.144", %"class.testing::internal::EitherOfMatcher.553" }
%"class.testing::internal::LtMatcher.144" = type { %"class.testing::internal::ComparisonBase.145" }
%"class.testing::internal::ComparisonBase.145" = type { i32 }
%"class.testing::internal::EitherOfMatcher.553" = type { %"class.testing::internal::EqMatcher.41", %"class.testing::internal::EqMatcher.41" }
%"class.testing::internal::EqMatcher.41" = type { %"class.testing::internal::ComparisonBase.42" }
%"class.testing::internal::ComparisonBase.42" = type { i32 }
%"class.testing::internal::EitherOfMatcher.554" = type { %"class.testing::internal::EitherOfMatcher.555", %"class.testing::internal::EitherOfMatcher.553" }
%"class.testing::internal::EitherOfMatcher.555" = type { %"class.testing::internal::LtMatcher.144", %"class.testing::internal::EqMatcher.41" }
%"class.testing::internal::EitherOfMatcher.556" = type { %"class.testing::internal::EitherOfMatcher.557", %"class.testing::internal::EitherOfMatcher.558" }
%"class.testing::internal::EitherOfMatcher.557" = type { %"class.testing::internal::LeMatcher.139", %"class.testing::internal::GtMatcher" }
%"class.testing::internal::GtMatcher" = type { %"class.testing::internal::ComparisonBase.134" }
%"class.testing::internal::ComparisonBase.134" = type { i32 }
%"class.testing::internal::EitherOfMatcher.558" = type { i32, %"class.testing::internal::EitherOfMatcher.559" }
%"class.testing::internal::EitherOfMatcher.559" = type { i32, i32 }
%"class.testing::internal::EitherOfMatcher.560" = type { %"class.testing::internal::EitherOfMatcher.559", %"class.testing::internal::EitherOfMatcher.559" }
%"class.testing::internal::EitherOfMatcher.561" = type { %"class.testing::internal::EitherOfMatcher.559", %"class.testing::internal::EitherOfMatcher.558" }
%"class.testing::internal::EitherOfMatcher.562" = type { %"class.testing::internal::EitherOfMatcher.558", %"class.testing::internal::EitherOfMatcher.558" }
%"class.testing::internal::EitherOfMatcher.563" = type { %"class.testing::internal::EitherOfMatcher.558", %"class.testing::internal::EitherOfMatcher.560" }
%"class.testing::internal::EitherOfMatcher.564" = type { %"class.testing::internal::EitherOfMatcher.560", %"class.testing::internal::EitherOfMatcher.560" }
%"class.testing::internal::EitherOfMatcher.565" = type { %"class.testing::internal::EitherOfMatcher.560", %"class.testing::internal::EitherOfMatcher.561" }
%"class.testing::internal::EitherOfMatcher.566" = type { %"class.testing::internal::EitherOfMatcher.561", %"class.testing::internal::EitherOfMatcher.561" }

@.str.5 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.671 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.677 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.723 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.724 = external hidden unnamed_addr constant [14 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

declare void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2

declare void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef, i32 noundef, ptr noundef) unnamed_addr #2

declare void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: nounwind
declare void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef) unnamed_addr #5 align 2

declare void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN7testing2EqIiEENS_8internal9EqMatcherIT_EES3_(i32 noundef) #6

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN7testing2GeIiEENS_8internal9GeMatcherIT_EES3_(i32 noundef) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN7testing2GtIiEENS_8internal9GtMatcherIT_EES3_(i32 noundef) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN7testing2LeIiEENS_8internal9LeMatcherIT_EES3_(i32 noundef) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN7testing2LtIiEENS_8internal9LtMatcherIT_EES3_(i32 noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing7MatcherIiEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN7testing7MatcherIiEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef, ptr noundef nonnull align 8 dereferenceable(24)) #5

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7testing19gmock_matchers_test36AnyOfTest_MatchesWhenAnyMatches_Test8TestBodyEv(ptr noundef nonnull align 8 dereferenceable(16) %0) unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.testing::Matcher", align 8
  %4 = alloca %"class.testing::Matcher", align 8
  %5 = alloca %"class.testing::internal::EitherOfMatcher", align 4
  %6 = alloca %"class.testing::internal::LeMatcher.139", align 4
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.testing::internal::GeMatcher", align 4
  %10 = alloca %"class.testing::AssertionResult", align 8
  %11 = alloca i8, align 1
  %12 = alloca %"class.testing::Message", align 8
  %13 = alloca %"class.testing::internal::AssertHelper", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.testing::AssertionResult", align 8
  %16 = alloca i8, align 1
  %17 = alloca %"class.testing::Message", align 8
  %18 = alloca %"class.testing::internal::AssertHelper", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.testing::AssertionResult", align 8
  %21 = alloca i8, align 1
  %22 = alloca %"class.testing::Message", align 8
  %23 = alloca %"class.testing::internal::AssertHelper", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.testing::Matcher", align 8
  %26 = alloca %"class.testing::internal::EitherOfMatcher.552", align 4
  %27 = alloca %"class.testing::internal::LtMatcher.144", align 4
  %28 = alloca %"class.testing::internal::EqMatcher.41", align 4
  %29 = alloca %"class.testing::internal::EqMatcher.41", align 4
  %30 = alloca { i64, i32 }, align 8
  %31 = alloca %"class.testing::AssertionResult", align 8
  %32 = alloca i8, align 1
  %33 = alloca %"class.testing::Message", align 8
  %34 = alloca %"class.testing::internal::AssertHelper", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.testing::AssertionResult", align 8
  %37 = alloca i8, align 1
  %38 = alloca %"class.testing::Message", align 8
  %39 = alloca %"class.testing::internal::AssertHelper", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.testing::AssertionResult", align 8
  %42 = alloca i8, align 1
  %43 = alloca %"class.testing::Message", align 8
  %44 = alloca %"class.testing::internal::AssertHelper", align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.testing::AssertionResult", align 8
  %47 = alloca i8, align 1
  %48 = alloca %"class.testing::Message", align 8
  %49 = alloca %"class.testing::internal::AssertHelper", align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.testing::Matcher", align 8
  %52 = alloca %"class.testing::internal::EitherOfMatcher.554", align 4
  %53 = alloca %"class.testing::internal::LtMatcher.144", align 4
  %54 = alloca %"class.testing::internal::EqMatcher.41", align 4
  %55 = alloca %"class.testing::internal::EqMatcher.41", align 4
  %56 = alloca %"class.testing::internal::EqMatcher.41", align 4
  %57 = alloca %"class.testing::AssertionResult", align 8
  %58 = alloca i8, align 1
  %59 = alloca %"class.testing::Message", align 8
  %60 = alloca %"class.testing::internal::AssertHelper", align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.testing::AssertionResult", align 8
  %63 = alloca i8, align 1
  %64 = alloca %"class.testing::Message", align 8
  %65 = alloca %"class.testing::internal::AssertHelper", align 8
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"class.testing::AssertionResult", align 8
  %68 = alloca i8, align 1
  %69 = alloca %"class.testing::Message", align 8
  %70 = alloca %"class.testing::internal::AssertHelper", align 8
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca %"class.testing::AssertionResult", align 8
  %73 = alloca i8, align 1
  %74 = alloca %"class.testing::Message", align 8
  %75 = alloca %"class.testing::internal::AssertHelper", align 8
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.testing::AssertionResult", align 8
  %78 = alloca i8, align 1
  %79 = alloca %"class.testing::Message", align 8
  %80 = alloca %"class.testing::internal::AssertHelper", align 8
  %81 = alloca %"class.std::__cxx11::basic_string", align 8
  %82 = alloca %"class.testing::Matcher", align 8
  %83 = alloca %"class.testing::internal::EitherOfMatcher.556", align 4
  %84 = alloca %"class.testing::internal::LeMatcher.139", align 4
  %85 = alloca %"class.testing::internal::GtMatcher", align 4
  %86 = alloca %"class.testing::AssertionResult", align 8
  %87 = alloca i8, align 1
  %88 = alloca %"class.testing::Message", align 8
  %89 = alloca %"class.testing::internal::AssertHelper", align 8
  %90 = alloca %"class.std::__cxx11::basic_string", align 8
  %91 = alloca %"class.testing::AssertionResult", align 8
  %92 = alloca i8, align 1
  %93 = alloca %"class.testing::Message", align 8
  %94 = alloca %"class.testing::internal::AssertHelper", align 8
  %95 = alloca %"class.std::__cxx11::basic_string", align 8
  %96 = alloca %"class.testing::AssertionResult", align 8
  %97 = alloca i8, align 1
  %98 = alloca %"class.testing::Message", align 8
  %99 = alloca %"class.testing::internal::AssertHelper", align 8
  %100 = alloca %"class.std::__cxx11::basic_string", align 8
  %101 = alloca %"class.testing::AssertionResult", align 8
  %102 = alloca i8, align 1
  %103 = alloca %"class.testing::Message", align 8
  %104 = alloca %"class.testing::internal::AssertHelper", align 8
  %105 = alloca %"class.std::__cxx11::basic_string", align 8
  %106 = alloca %"class.testing::Matcher", align 8
  %107 = alloca %"class.testing::internal::EitherOfMatcher.559", align 4
  %108 = alloca %"class.testing::Matcher", align 8
  %109 = alloca %"class.testing::internal::EitherOfMatcher.558", align 4
  %110 = alloca { i64, i32 }, align 8
  %111 = alloca %"class.testing::Matcher", align 8
  %112 = alloca %"class.testing::internal::EitherOfMatcher.560", align 4
  %113 = alloca %"class.testing::Matcher", align 8
  %114 = alloca %"class.testing::internal::EitherOfMatcher.561", align 4
  %115 = alloca %"class.testing::Matcher", align 8
  %116 = alloca %"class.testing::internal::EitherOfMatcher.562", align 4
  %117 = alloca %"class.testing::Matcher", align 8
  %118 = alloca %"class.testing::internal::EitherOfMatcher.563", align 4
  %119 = alloca %"class.testing::Matcher", align 8
  %120 = alloca %"class.testing::internal::EitherOfMatcher.564", align 4
  %121 = alloca %"class.testing::Matcher", align 8
  %122 = alloca %"class.testing::internal::EitherOfMatcher.565", align 4
  %123 = alloca %"class.testing::Matcher", align 8
  %124 = alloca %"class.testing::internal::EitherOfMatcher.566", align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %125 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr %3) #8
  call void @_ZN7testing7MatcherIiEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3)
  call void @llvm.lifetime.start.p0(i64 24, ptr %4) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #8
  %126 = invoke i32 @_ZN7testing2LeIiEENS_8internal9LeMatcherIT_EES3_(i32 noundef 1)
          to label %127 unwind label %152

127:                                              ; preds = %1
  %128 = getelementptr inbounds %"class.testing::internal::LeMatcher.139", ptr %6, i32 0, i32 0
  %129 = getelementptr inbounds %"class.testing::internal::ComparisonBase.140", ptr %128, i32 0, i32 0
  store i32 %126, ptr %129, align 4
  %130 = invoke i32 @_ZN7testing2GeIiEENS_8internal9GeMatcherIT_EES3_(i32 noundef 3)
          to label %131 unwind label %152

131:                                              ; preds = %127
  %132 = getelementptr inbounds %"class.testing::internal::GeMatcher", ptr %9, i32 0, i32 0
  %133 = getelementptr inbounds %"class.testing::internal::ComparisonBase.131", ptr %132, i32 0, i32 0
  store i32 %130, ptr %133, align 4
  %134 = getelementptr inbounds %"class.testing::internal::LeMatcher.139", ptr %6, i32 0, i32 0
  %135 = getelementptr inbounds %"class.testing::internal::ComparisonBase.140", ptr %134, i32 0, i32 0
  %136 = load i32, ptr %135, align 4
  %137 = getelementptr inbounds %"class.testing::internal::GeMatcher", ptr %9, i32 0, i32 0
  %138 = getelementptr inbounds %"class.testing::internal::ComparisonBase.131", ptr %137, i32 0, i32 0
  %139 = load i32, ptr %138, align 4
  %140 = invoke i64 @_ZN7testing5AnyOfINS_8internal9LeMatcherIiEENS1_9GeMatcherIiEEEENS1_12AnyOfResult2IT_T0_E4typeES7_S8_(i32 %136, i32 %139)
          to label %141 unwind label %152

141:                                              ; preds = %131
  store i64 %140, ptr %5, align 4
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS0_9LeMatcherIiEENS0_9GeMatcherIiEEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind writable sret(%"class.testing::Matcher") align 8 %4, ptr noundef nonnull align 4 dereferenceable(8) %5)
          to label %142 unwind label %152

142:                                              ; preds = %141
  %143 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN7testing7MatcherIiEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %4)
          to label %144 unwind label %156

144:                                              ; preds = %142
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %4) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #8
  %145 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef 1)
          to label %146 unwind label %161

146:                                              ; preds = %144
  %147 = zext i1 %145 to i8
  store i8 %147, ptr %11, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 1 dereferenceable(1) %11, ptr noundef null)
          to label %148 unwind label %161

148:                                              ; preds = %146
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #8
  %149 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %150 unwind label %165

150:                                              ; preds = %148
  br i1 %149, label %151, label %169

151:                                              ; preds = %150
  br label %194

152:                                              ; preds = %141, %131, %127, %1
  %153 = landingpad { ptr, i32 }
          cleanup
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %7, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %8, align 4
  br label %160

156:                                              ; preds = %142
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %7, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %8, align 4
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  br label %160

160:                                              ; preds = %156, %152
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %4) #8
  br label %1069

161:                                              ; preds = %146, %144
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %7, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #8
  br label %203

165:                                              ; preds = %148
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %7, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %8, align 4
  br label %202

169:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %170 unwind label %175

170:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef @.str.677, ptr noundef @.str.17, ptr noundef @.str.18)
          to label %171 unwind label %179

171:                                              ; preds = %170
  %172 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %13, i32 noundef 1, ptr noundef @.str.5, i32 noundef 2258, ptr noundef %172)
          to label %173 unwind label %183

173:                                              ; preds = %171
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %174 unwind label %187

174:                                              ; preds = %173
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  br label %194

175:                                              ; preds = %169
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %7, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %8, align 4
  br label %193

179:                                              ; preds = %170
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %7, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %8, align 4
  br label %192

183:                                              ; preds = %171
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %7, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %8, align 4
  br label %191

187:                                              ; preds = %173
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %7, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %8, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  br label %191

191:                                              ; preds = %187, %183
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  br label %192

192:                                              ; preds = %191, %179
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  br label %193

193:                                              ; preds = %192, %175
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  br label %202

194:                                              ; preds = %174, %151
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #8
  %195 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef 4)
          to label %196 unwind label %204

196:                                              ; preds = %194
  %197 = zext i1 %195 to i8
  store i8 %197, ptr %16, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 1 dereferenceable(1) %16, ptr noundef null)
          to label %198 unwind label %204

198:                                              ; preds = %196
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #8
  %199 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %200 unwind label %208

200:                                              ; preds = %198
  br i1 %199, label %201, label %212

201:                                              ; preds = %200
  br label %237

202:                                              ; preds = %193, %165
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #8
  br label %203

203:                                              ; preds = %202, %161
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #8
  br label %1069

204:                                              ; preds = %196, %194
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %7, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #8
  br label %247

208:                                              ; preds = %198
  %209 = landingpad { ptr, i32 }
          cleanup
  %210 = extractvalue { ptr, i32 } %209, 0
  store ptr %210, ptr %7, align 8
  %211 = extractvalue { ptr, i32 } %209, 1
  store i32 %211, ptr %8, align 4
  br label %246

212:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %213 unwind label %218

213:                                              ; preds = %212
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef @.str.46, ptr noundef @.str.17, ptr noundef @.str.18)
          to label %214 unwind label %222

214:                                              ; preds = %213
  %215 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %18, i32 noundef 1, ptr noundef @.str.5, i32 noundef 2259, ptr noundef %215)
          to label %216 unwind label %226

216:                                              ; preds = %214
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %217 unwind label %230

217:                                              ; preds = %216
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  br label %237

218:                                              ; preds = %212
  %219 = landingpad { ptr, i32 }
          cleanup
  %220 = extractvalue { ptr, i32 } %219, 0
  store ptr %220, ptr %7, align 8
  %221 = extractvalue { ptr, i32 } %219, 1
  store i32 %221, ptr %8, align 4
  br label %236

222:                                              ; preds = %213
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %7, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %8, align 4
  br label %235

226:                                              ; preds = %214
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %7, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %8, align 4
  br label %234

230:                                              ; preds = %216
  %231 = landingpad { ptr, i32 }
          cleanup
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %7, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %8, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  br label %234

234:                                              ; preds = %230, %226
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %235

235:                                              ; preds = %234, %222
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br label %236

236:                                              ; preds = %235, %218
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  br label %246

237:                                              ; preds = %217, %201
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #8
  %238 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef 2)
          to label %239 unwind label %248

239:                                              ; preds = %237
  %240 = xor i1 %238, true
  %241 = zext i1 %240 to i8
  store i8 %241, ptr %21, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 1 dereferenceable(1) %21, ptr noundef null)
          to label %242 unwind label %248

242:                                              ; preds = %239
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #8
  %243 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %244 unwind label %252

244:                                              ; preds = %242
  br i1 %243, label %245, label %256

245:                                              ; preds = %244
  br label %281

246:                                              ; preds = %236, %208
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #8
  br label %247

247:                                              ; preds = %246, %204
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #8
  br label %1069

248:                                              ; preds = %239, %237
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %7, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #8
  br label %316

252:                                              ; preds = %242
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %7, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %8, align 4
  br label %315

256:                                              ; preds = %244
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %257 unwind label %262

257:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef @.str.33, ptr noundef @.str.18, ptr noundef @.str.17)
          to label %258 unwind label %266

258:                                              ; preds = %257
  %259 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %23, i32 noundef 1, ptr noundef @.str.5, i32 noundef 2260, ptr noundef %259)
          to label %260 unwind label %270

260:                                              ; preds = %258
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %261 unwind label %274

261:                                              ; preds = %260
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  br label %281

262:                                              ; preds = %256
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %7, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %8, align 4
  br label %280

266:                                              ; preds = %257
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %7, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %8, align 4
  br label %279

270:                                              ; preds = %258
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %7, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %8, align 4
  br label %278

274:                                              ; preds = %260
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %7, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %8, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  br label %278

278:                                              ; preds = %274, %270
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %279

279:                                              ; preds = %278, %266
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  br label %280

280:                                              ; preds = %279, %262
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  br label %315

281:                                              ; preds = %261, %245
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %26) #8
  %282 = invoke i32 @_ZN7testing2LtIiEENS_8internal9LtMatcherIT_EES3_(i32 noundef 0)
          to label %283 unwind label %317

283:                                              ; preds = %281
  %284 = getelementptr inbounds %"class.testing::internal::LtMatcher.144", ptr %27, i32 0, i32 0
  %285 = getelementptr inbounds %"class.testing::internal::ComparisonBase.145", ptr %284, i32 0, i32 0
  store i32 %282, ptr %285, align 4
  %286 = invoke i32 @_ZN7testing2EqIiEENS_8internal9EqMatcherIT_EES3_(i32 noundef 1)
          to label %287 unwind label %317

287:                                              ; preds = %283
  %288 = getelementptr inbounds %"class.testing::internal::EqMatcher.41", ptr %28, i32 0, i32 0
  %289 = getelementptr inbounds %"class.testing::internal::ComparisonBase.42", ptr %288, i32 0, i32 0
  store i32 %286, ptr %289, align 4
  %290 = invoke i32 @_ZN7testing2EqIiEENS_8internal9EqMatcherIT_EES3_(i32 noundef 2)
          to label %291 unwind label %317

291:                                              ; preds = %287
  %292 = getelementptr inbounds %"class.testing::internal::EqMatcher.41", ptr %29, i32 0, i32 0
  %293 = getelementptr inbounds %"class.testing::internal::ComparisonBase.42", ptr %292, i32 0, i32 0
  store i32 %290, ptr %293, align 4
  %294 = getelementptr inbounds %"class.testing::internal::LtMatcher.144", ptr %27, i32 0, i32 0
  %295 = getelementptr inbounds %"class.testing::internal::ComparisonBase.145", ptr %294, i32 0, i32 0
  %296 = load i32, ptr %295, align 4
  %297 = getelementptr inbounds %"class.testing::internal::EqMatcher.41", ptr %28, i32 0, i32 0
  %298 = getelementptr inbounds %"class.testing::internal::ComparisonBase.42", ptr %297, i32 0, i32 0
  %299 = load i32, ptr %298, align 4
  %300 = getelementptr inbounds %"class.testing::internal::EqMatcher.41", ptr %29, i32 0, i32 0
  %301 = getelementptr inbounds %"class.testing::internal::ComparisonBase.42", ptr %300, i32 0, i32 0
  %302 = load i32, ptr %301, align 4
  %303 = invoke { i64, i32 } @_ZN7testing5AnyOfINS_8internal9LtMatcherIiEENS1_9EqMatcherIiEES5_EENS1_12AnyOfResult3IT_T0_T1_E4typeES7_S8_S9_(i32 %296, i32 %299, i32 %302)
          to label %304 unwind label %317

304:                                              ; preds = %291
  store { i64, i32 } %303, ptr %30, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %26, ptr align 8 %30, i64 12, i1 false)
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS0_9LtMatcherIiEENS1_INS0_9EqMatcherIiEES5_EEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind writable sret(%"class.testing::Matcher") align 8 %25, ptr noundef nonnull align 4 dereferenceable(12) %26)
          to label %305 unwind label %317

305:                                              ; preds = %304
  %306 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN7testing7MatcherIiEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %307 unwind label %321

307:                                              ; preds = %305
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #8
  %308 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef -1)
          to label %309 unwind label %326

309:                                              ; preds = %307
  %310 = zext i1 %308 to i8
  store i8 %310, ptr %32, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 1 dereferenceable(1) %32, ptr noundef null)
          to label %311 unwind label %326

311:                                              ; preds = %309
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #8
  %312 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %31)
          to label %313 unwind label %330

313:                                              ; preds = %311
  br i1 %312, label %314, label %334

314:                                              ; preds = %313
  br label %359

315:                                              ; preds = %280, %252
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #8
  br label %316

316:                                              ; preds = %315, %248
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #8
  br label %1069

317:                                              ; preds = %304, %291, %287, %283, %281
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %7, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %8, align 4
  br label %325

321:                                              ; preds = %305
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %7, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %8, align 4
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  br label %325

325:                                              ; preds = %321, %317
  call void @llvm.lifetime.end.p0(i64 12, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #8
  br label %1069

326:                                              ; preds = %309, %307
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %7, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #8
  br label %368

330:                                              ; preds = %311
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %7, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %8, align 4
  br label %367

334:                                              ; preds = %313
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %335 unwind label %340

335:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef @.str.723, ptr noundef @.str.17, ptr noundef @.str.18)
          to label %336 unwind label %344

336:                                              ; preds = %335
  %337 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %34, i32 noundef 1, ptr noundef @.str.5, i32 noundef 2263, ptr noundef %337)
          to label %338 unwind label %348

338:                                              ; preds = %336
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %339 unwind label %352

339:                                              ; preds = %338
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %359

340:                                              ; preds = %334
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %7, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %8, align 4
  br label %358

344:                                              ; preds = %335
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %7, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %8, align 4
  br label %357

348:                                              ; preds = %336
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %7, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %8, align 4
  br label %356

352:                                              ; preds = %338
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %7, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %8, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  br label %356

356:                                              ; preds = %352, %348
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  br label %357

357:                                              ; preds = %356, %344
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  br label %358

358:                                              ; preds = %357, %340
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %367

359:                                              ; preds = %339, %314
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #8
  %360 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef 1)
          to label %361 unwind label %369

361:                                              ; preds = %359
  %362 = zext i1 %360 to i8
  store i8 %362, ptr %37, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull align 1 dereferenceable(1) %37, ptr noundef null)
          to label %363 unwind label %369

363:                                              ; preds = %361
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #8
  %364 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %365 unwind label %373

365:                                              ; preds = %363
  br i1 %364, label %366, label %377

366:                                              ; preds = %365
  br label %402

367:                                              ; preds = %358, %330
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #8
  br label %368

368:                                              ; preds = %367, %326
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #8
  br label %1069

369:                                              ; preds = %361, %359
  %370 = landingpad { ptr, i32 }
          cleanup
  %371 = extractvalue { ptr, i32 } %370, 0
  store ptr %371, ptr %7, align 8
  %372 = extractvalue { ptr, i32 } %370, 1
  store i32 %372, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #8
  br label %411

373:                                              ; preds = %363
  %374 = landingpad { ptr, i32 }
          cleanup
  %375 = extractvalue { ptr, i32 } %374, 0
  store ptr %375, ptr %7, align 8
  %376 = extractvalue { ptr, i32 } %374, 1
  store i32 %376, ptr %8, align 4
  br label %410

377:                                              ; preds = %365
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %378 unwind label %383

378:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %40, ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef @.str.677, ptr noundef @.str.17, ptr noundef @.str.18)
          to label %379 unwind label %387

379:                                              ; preds = %378
  %380 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %39, i32 noundef 1, ptr noundef @.str.5, i32 noundef 2264, ptr noundef %380)
          to label %381 unwind label %391

381:                                              ; preds = %379
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %382 unwind label %395

382:                                              ; preds = %381
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %402

383:                                              ; preds = %377
  %384 = landingpad { ptr, i32 }
          cleanup
  %385 = extractvalue { ptr, i32 } %384, 0
  store ptr %385, ptr %7, align 8
  %386 = extractvalue { ptr, i32 } %384, 1
  store i32 %386, ptr %8, align 4
  br label %401

387:                                              ; preds = %378
  %388 = landingpad { ptr, i32 }
          cleanup
  %389 = extractvalue { ptr, i32 } %388, 0
  store ptr %389, ptr %7, align 8
  %390 = extractvalue { ptr, i32 } %388, 1
  store i32 %390, ptr %8, align 4
  br label %400

391:                                              ; preds = %379
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %7, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %8, align 4
  br label %399

395:                                              ; preds = %381
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %7, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %8, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  br label %399

399:                                              ; preds = %395, %391
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  br label %400

400:                                              ; preds = %399, %387
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  br label %401

401:                                              ; preds = %400, %383
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %410

402:                                              ; preds = %382, %366
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #8
  %403 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef 2)
          to label %404 unwind label %412

404:                                              ; preds = %402
  %405 = zext i1 %403 to i8
  store i8 %405, ptr %42, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull align 1 dereferenceable(1) %42, ptr noundef null)
          to label %406 unwind label %412

406:                                              ; preds = %404
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #8
  %407 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %41)
          to label %408 unwind label %416

408:                                              ; preds = %406
  br i1 %407, label %409, label %420

409:                                              ; preds = %408
  br label %445

410:                                              ; preds = %401, %373
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #8
  br label %411

411:                                              ; preds = %410, %369
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #8
  br label %1069

412:                                              ; preds = %404, %402
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %7, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #8
  br label %455

416:                                              ; preds = %406
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %7, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %8, align 4
  br label %454

420:                                              ; preds = %408
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %421 unwind label %426

421:                                              ; preds = %420
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef @.str.33, ptr noundef @.str.17, ptr noundef @.str.18)
          to label %422 unwind label %430

422:                                              ; preds = %421
  %423 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %44, i32 noundef 1, ptr noundef @.str.5, i32 noundef 2265, ptr noundef %423)
          to label %424 unwind label %434

424:                                              ; preds = %422
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %425 unwind label %438

425:                                              ; preds = %424
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  br label %445

426:                                              ; preds = %420
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %7, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %8, align 4
  br label %444

430:                                              ; preds = %421
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %7, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %8, align 4
  br label %443

434:                                              ; preds = %422
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %7, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %8, align 4
  br label %442

438:                                              ; preds = %424
  %439 = landingpad { ptr, i32 }
          cleanup
  %440 = extractvalue { ptr, i32 } %439, 0
  store ptr %440, ptr %7, align 8
  %441 = extractvalue { ptr, i32 } %439, 1
  store i32 %441, ptr %8, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  br label %442

442:                                              ; preds = %438, %434
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  br label %443

443:                                              ; preds = %442, %430
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  br label %444

444:                                              ; preds = %443, %426
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  br label %454

445:                                              ; preds = %425, %409
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #8
  %446 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef 0)
          to label %447 unwind label %456

447:                                              ; preds = %445
  %448 = xor i1 %446, true
  %449 = zext i1 %448 to i8
  store i8 %449, ptr %47, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 1 dereferenceable(1) %47, ptr noundef null)
          to label %450 unwind label %456

450:                                              ; preds = %447
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #8
  %451 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %46)
          to label %452 unwind label %460

452:                                              ; preds = %450
  br i1 %451, label %453, label %464

453:                                              ; preds = %452
  br label %489

454:                                              ; preds = %444, %416
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #8
  br label %455

455:                                              ; preds = %454, %412
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #8
  br label %1069

456:                                              ; preds = %447, %445
  %457 = landingpad { ptr, i32 }
          cleanup
  %458 = extractvalue { ptr, i32 } %457, 0
  store ptr %458, ptr %7, align 8
  %459 = extractvalue { ptr, i32 } %457, 1
  store i32 %459, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #8
  br label %535

460:                                              ; preds = %450
  %461 = landingpad { ptr, i32 }
          cleanup
  %462 = extractvalue { ptr, i32 } %461, 0
  store ptr %462, ptr %7, align 8
  %463 = extractvalue { ptr, i32 } %461, 1
  store i32 %463, ptr %8, align 4
  br label %534

464:                                              ; preds = %452
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %465 unwind label %470

465:                                              ; preds = %464
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %50, ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef @.str.671, ptr noundef @.str.18, ptr noundef @.str.17)
          to label %466 unwind label %474

466:                                              ; preds = %465
  %467 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %49, i32 noundef 1, ptr noundef @.str.5, i32 noundef 2266, ptr noundef %467)
          to label %468 unwind label %478

468:                                              ; preds = %466
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %469 unwind label %482

469:                                              ; preds = %468
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  br label %489

470:                                              ; preds = %464
  %471 = landingpad { ptr, i32 }
          cleanup
  %472 = extractvalue { ptr, i32 } %471, 0
  store ptr %472, ptr %7, align 8
  %473 = extractvalue { ptr, i32 } %471, 1
  store i32 %473, ptr %8, align 4
  br label %488

474:                                              ; preds = %465
  %475 = landingpad { ptr, i32 }
          cleanup
  %476 = extractvalue { ptr, i32 } %475, 0
  store ptr %476, ptr %7, align 8
  %477 = extractvalue { ptr, i32 } %475, 1
  store i32 %477, ptr %8, align 4
  br label %487

478:                                              ; preds = %466
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %7, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %8, align 4
  br label %486

482:                                              ; preds = %468
  %483 = landingpad { ptr, i32 }
          cleanup
  %484 = extractvalue { ptr, i32 } %483, 0
  store ptr %484, ptr %7, align 8
  %485 = extractvalue { ptr, i32 } %483, 1
  store i32 %485, ptr %8, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  br label %486

486:                                              ; preds = %482, %478
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  br label %487

487:                                              ; preds = %486, %474
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  br label %488

488:                                              ; preds = %487, %470
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  br label %534

489:                                              ; preds = %469, %453
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %51) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #8
  %490 = invoke i32 @_ZN7testing2LtIiEENS_8internal9LtMatcherIT_EES3_(i32 noundef 0)
          to label %491 unwind label %536

491:                                              ; preds = %489
  %492 = getelementptr inbounds %"class.testing::internal::LtMatcher.144", ptr %53, i32 0, i32 0
  %493 = getelementptr inbounds %"class.testing::internal::ComparisonBase.145", ptr %492, i32 0, i32 0
  store i32 %490, ptr %493, align 4
  %494 = invoke i32 @_ZN7testing2EqIiEENS_8internal9EqMatcherIT_EES3_(i32 noundef 1)
          to label %495 unwind label %536

495:                                              ; preds = %491
  %496 = getelementptr inbounds %"class.testing::internal::EqMatcher.41", ptr %54, i32 0, i32 0
  %497 = getelementptr inbounds %"class.testing::internal::ComparisonBase.42", ptr %496, i32 0, i32 0
  store i32 %494, ptr %497, align 4
  %498 = invoke i32 @_ZN7testing2EqIiEENS_8internal9EqMatcherIT_EES3_(i32 noundef 2)
          to label %499 unwind label %536

499:                                              ; preds = %495
  %500 = getelementptr inbounds %"class.testing::internal::EqMatcher.41", ptr %55, i32 0, i32 0
  %501 = getelementptr inbounds %"class.testing::internal::ComparisonBase.42", ptr %500, i32 0, i32 0
  store i32 %498, ptr %501, align 4
  %502 = invoke i32 @_ZN7testing2EqIiEENS_8internal9EqMatcherIT_EES3_(i32 noundef 3)
          to label %503 unwind label %536

503:                                              ; preds = %499
  %504 = getelementptr inbounds %"class.testing::internal::EqMatcher.41", ptr %56, i32 0, i32 0
  %505 = getelementptr inbounds %"class.testing::internal::ComparisonBase.42", ptr %504, i32 0, i32 0
  store i32 %502, ptr %505, align 4
  %506 = getelementptr inbounds %"class.testing::internal::LtMatcher.144", ptr %53, i32 0, i32 0
  %507 = getelementptr inbounds %"class.testing::internal::ComparisonBase.145", ptr %506, i32 0, i32 0
  %508 = load i32, ptr %507, align 4
  %509 = getelementptr inbounds %"class.testing::internal::EqMatcher.41", ptr %54, i32 0, i32 0
  %510 = getelementptr inbounds %"class.testing::internal::ComparisonBase.42", ptr %509, i32 0, i32 0
  %511 = load i32, ptr %510, align 4
  %512 = getelementptr inbounds %"class.testing::internal::EqMatcher.41", ptr %55, i32 0, i32 0
  %513 = getelementptr inbounds %"class.testing::internal::ComparisonBase.42", ptr %512, i32 0, i32 0
  %514 = load i32, ptr %513, align 4
  %515 = getelementptr inbounds %"class.testing::internal::EqMatcher.41", ptr %56, i32 0, i32 0
  %516 = getelementptr inbounds %"class.testing::internal::ComparisonBase.42", ptr %515, i32 0, i32 0
  %517 = load i32, ptr %516, align 4
  %518 = invoke { i64, i64 } @_ZN7testing5AnyOfINS_8internal9LtMatcherIiEENS1_9EqMatcherIiEES5_S5_EENS1_12AnyOfResult4IT_T0_T1_T2_E4typeES7_S8_S9_SA_(i32 %508, i32 %511, i32 %514, i32 %517)
          to label %519 unwind label %536

519:                                              ; preds = %503
  %520 = getelementptr inbounds { i64, i64 }, ptr %52, i32 0, i32 0
  %521 = extractvalue { i64, i64 } %518, 0
  store i64 %521, ptr %520, align 4
  %522 = getelementptr inbounds { i64, i64 }, ptr %52, i32 0, i32 1
  %523 = extractvalue { i64, i64 } %518, 1
  store i64 %523, ptr %522, align 4
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_INS0_9LtMatcherIiEENS0_9EqMatcherIiEEEENS1_IS5_S5_EEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind writable sret(%"class.testing::Matcher") align 8 %51, ptr noundef nonnull align 4 dereferenceable(16) %52)
          to label %524 unwind label %536

524:                                              ; preds = %519
  %525 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN7testing7MatcherIiEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %51)
          to label %526 unwind label %540

526:                                              ; preds = %524
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %51) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #8
  %527 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef -1)
          to label %528 unwind label %545

528:                                              ; preds = %526
  %529 = zext i1 %527 to i8
  store i8 %529, ptr %58, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %57, ptr noundef nonnull align 1 dereferenceable(1) %58, ptr noundef null)
          to label %530 unwind label %545

530:                                              ; preds = %528
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #8
  %531 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %57)
          to label %532 unwind label %549

532:                                              ; preds = %530
  br i1 %531, label %533, label %553

533:                                              ; preds = %532
  br label %578

534:                                              ; preds = %488, %460
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #8
  br label %535

535:                                              ; preds = %534, %456
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #8
  br label %1069

536:                                              ; preds = %519, %503, %499, %495, %491, %489
  %537 = landingpad { ptr, i32 }
          cleanup
  %538 = extractvalue { ptr, i32 } %537, 0
  store ptr %538, ptr %7, align 8
  %539 = extractvalue { ptr, i32 } %537, 1
  store i32 %539, ptr %8, align 4
  br label %544

540:                                              ; preds = %524
  %541 = landingpad { ptr, i32 }
          cleanup
  %542 = extractvalue { ptr, i32 } %541, 0
  store ptr %542, ptr %7, align 8
  %543 = extractvalue { ptr, i32 } %541, 1
  store i32 %543, ptr %8, align 4
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #8
  br label %544

544:                                              ; preds = %540, %536
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %51) #8
  br label %1069

545:                                              ; preds = %528, %526
  %546 = landingpad { ptr, i32 }
          cleanup
  %547 = extractvalue { ptr, i32 } %546, 0
  store ptr %547, ptr %7, align 8
  %548 = extractvalue { ptr, i32 } %546, 1
  store i32 %548, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #8
  br label %587

549:                                              ; preds = %530
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %7, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %8, align 4
  br label %586

553:                                              ; preds = %532
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %554 unwind label %559

554:                                              ; preds = %553
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef nonnull align 8 dereferenceable(16) %57, ptr noundef @.str.723, ptr noundef @.str.17, ptr noundef @.str.18)
          to label %555 unwind label %563

555:                                              ; preds = %554
  %556 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %60, i32 noundef 1, ptr noundef @.str.5, i32 noundef 2269, ptr noundef %556)
          to label %557 unwind label %567

557:                                              ; preds = %555
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %558 unwind label %571

558:                                              ; preds = %557
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %578

559:                                              ; preds = %553
  %560 = landingpad { ptr, i32 }
          cleanup
  %561 = extractvalue { ptr, i32 } %560, 0
  store ptr %561, ptr %7, align 8
  %562 = extractvalue { ptr, i32 } %560, 1
  store i32 %562, ptr %8, align 4
  br label %577

563:                                              ; preds = %554
  %564 = landingpad { ptr, i32 }
          cleanup
  %565 = extractvalue { ptr, i32 } %564, 0
  store ptr %565, ptr %7, align 8
  %566 = extractvalue { ptr, i32 } %564, 1
  store i32 %566, ptr %8, align 4
  br label %576

567:                                              ; preds = %555
  %568 = landingpad { ptr, i32 }
          cleanup
  %569 = extractvalue { ptr, i32 } %568, 0
  store ptr %569, ptr %7, align 8
  %570 = extractvalue { ptr, i32 } %568, 1
  store i32 %570, ptr %8, align 4
  br label %575

571:                                              ; preds = %557
  %572 = landingpad { ptr, i32 }
          cleanup
  %573 = extractvalue { ptr, i32 } %572, 0
  store ptr %573, ptr %7, align 8
  %574 = extractvalue { ptr, i32 } %572, 1
  store i32 %574, ptr %8, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  br label %575

575:                                              ; preds = %571, %567
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  br label %576

576:                                              ; preds = %575, %563
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  br label %577

577:                                              ; preds = %576, %559
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %586

578:                                              ; preds = %558, %533
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #8
  %579 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef 1)
          to label %580 unwind label %588

580:                                              ; preds = %578
  %581 = zext i1 %579 to i8
  store i8 %581, ptr %63, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %62, ptr noundef nonnull align 1 dereferenceable(1) %63, ptr noundef null)
          to label %582 unwind label %588

582:                                              ; preds = %580
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #8
  %583 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %62)
          to label %584 unwind label %592

584:                                              ; preds = %582
  br i1 %583, label %585, label %596

585:                                              ; preds = %584
  br label %621

586:                                              ; preds = %577, %549
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #8
  br label %587

587:                                              ; preds = %586, %545
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #8
  br label %1069

588:                                              ; preds = %580, %578
  %589 = landingpad { ptr, i32 }
          cleanup
  %590 = extractvalue { ptr, i32 } %589, 0
  store ptr %590, ptr %7, align 8
  %591 = extractvalue { ptr, i32 } %589, 1
  store i32 %591, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #8
  br label %630

592:                                              ; preds = %582
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %7, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %8, align 4
  br label %629

596:                                              ; preds = %584
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %597 unwind label %602

597:                                              ; preds = %596
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %66, ptr noundef nonnull align 8 dereferenceable(16) %62, ptr noundef @.str.677, ptr noundef @.str.17, ptr noundef @.str.18)
          to label %598 unwind label %606

598:                                              ; preds = %597
  %599 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %65, i32 noundef 1, ptr noundef @.str.5, i32 noundef 2270, ptr noundef %599)
          to label %600 unwind label %610

600:                                              ; preds = %598
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %601 unwind label %614

601:                                              ; preds = %600
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  br label %621

602:                                              ; preds = %596
  %603 = landingpad { ptr, i32 }
          cleanup
  %604 = extractvalue { ptr, i32 } %603, 0
  store ptr %604, ptr %7, align 8
  %605 = extractvalue { ptr, i32 } %603, 1
  store i32 %605, ptr %8, align 4
  br label %620

606:                                              ; preds = %597
  %607 = landingpad { ptr, i32 }
          cleanup
  %608 = extractvalue { ptr, i32 } %607, 0
  store ptr %608, ptr %7, align 8
  %609 = extractvalue { ptr, i32 } %607, 1
  store i32 %609, ptr %8, align 4
  br label %619

610:                                              ; preds = %598
  %611 = landingpad { ptr, i32 }
          cleanup
  %612 = extractvalue { ptr, i32 } %611, 0
  store ptr %612, ptr %7, align 8
  %613 = extractvalue { ptr, i32 } %611, 1
  store i32 %613, ptr %8, align 4
  br label %618

614:                                              ; preds = %600
  %615 = landingpad { ptr, i32 }
          cleanup
  %616 = extractvalue { ptr, i32 } %615, 0
  store ptr %616, ptr %7, align 8
  %617 = extractvalue { ptr, i32 } %615, 1
  store i32 %617, ptr %8, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #8
  br label %618

618:                                              ; preds = %614, %610
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  br label %619

619:                                              ; preds = %618, %606
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  br label %620

620:                                              ; preds = %619, %602
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  br label %629

621:                                              ; preds = %601, %585
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #8
  %622 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef 2)
          to label %623 unwind label %631

623:                                              ; preds = %621
  %624 = zext i1 %622 to i8
  store i8 %624, ptr %68, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef nonnull align 1 dereferenceable(1) %68, ptr noundef null)
          to label %625 unwind label %631

625:                                              ; preds = %623
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #8
  %626 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %67)
          to label %627 unwind label %635

627:                                              ; preds = %625
  br i1 %626, label %628, label %639

628:                                              ; preds = %627
  br label %664

629:                                              ; preds = %620, %592
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #8
  br label %630

630:                                              ; preds = %629, %588
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #8
  br label %1069

631:                                              ; preds = %623, %621
  %632 = landingpad { ptr, i32 }
          cleanup
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %7, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #8
  br label %673

635:                                              ; preds = %625
  %636 = landingpad { ptr, i32 }
          cleanup
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %7, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %8, align 4
  br label %672

639:                                              ; preds = %627
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %69)
          to label %640 unwind label %645

640:                                              ; preds = %639
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %71) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %71, ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef @.str.33, ptr noundef @.str.17, ptr noundef @.str.18)
          to label %641 unwind label %649

641:                                              ; preds = %640
  %642 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %70, i32 noundef 1, ptr noundef @.str.5, i32 noundef 2271, ptr noundef %642)
          to label %643 unwind label %653

643:                                              ; preds = %641
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull align 8 dereferenceable(8) %69)
          to label %644 unwind label %657

644:                                              ; preds = %643
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  br label %664

645:                                              ; preds = %639
  %646 = landingpad { ptr, i32 }
          cleanup
  %647 = extractvalue { ptr, i32 } %646, 0
  store ptr %647, ptr %7, align 8
  %648 = extractvalue { ptr, i32 } %646, 1
  store i32 %648, ptr %8, align 4
  br label %663

649:                                              ; preds = %640
  %650 = landingpad { ptr, i32 }
          cleanup
  %651 = extractvalue { ptr, i32 } %650, 0
  store ptr %651, ptr %7, align 8
  %652 = extractvalue { ptr, i32 } %650, 1
  store i32 %652, ptr %8, align 4
  br label %662

653:                                              ; preds = %641
  %654 = landingpad { ptr, i32 }
          cleanup
  %655 = extractvalue { ptr, i32 } %654, 0
  store ptr %655, ptr %7, align 8
  %656 = extractvalue { ptr, i32 } %654, 1
  store i32 %656, ptr %8, align 4
  br label %661

657:                                              ; preds = %643
  %658 = landingpad { ptr, i32 }
          cleanup
  %659 = extractvalue { ptr, i32 } %658, 0
  store ptr %659, ptr %7, align 8
  %660 = extractvalue { ptr, i32 } %658, 1
  store i32 %660, ptr %8, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  br label %661

661:                                              ; preds = %657, %653
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  br label %662

662:                                              ; preds = %661, %649
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #8
  br label %663

663:                                              ; preds = %662, %645
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  br label %672

664:                                              ; preds = %644, %628
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #8
  %665 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef 3)
          to label %666 unwind label %674

666:                                              ; preds = %664
  %667 = zext i1 %665 to i8
  store i8 %667, ptr %73, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 1 dereferenceable(1) %73, ptr noundef null)
          to label %668 unwind label %674

668:                                              ; preds = %666
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #8
  %669 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %72)
          to label %670 unwind label %678

670:                                              ; preds = %668
  br i1 %669, label %671, label %682

671:                                              ; preds = %670
  br label %707

672:                                              ; preds = %663, %635
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #8
  br label %673

673:                                              ; preds = %672, %631
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #8
  br label %1069

674:                                              ; preds = %666, %664
  %675 = landingpad { ptr, i32 }
          cleanup
  %676 = extractvalue { ptr, i32 } %675, 0
  store ptr %676, ptr %7, align 8
  %677 = extractvalue { ptr, i32 } %675, 1
  store i32 %677, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #8
  br label %717

678:                                              ; preds = %668
  %679 = landingpad { ptr, i32 }
          cleanup
  %680 = extractvalue { ptr, i32 } %679, 0
  store ptr %680, ptr %7, align 8
  %681 = extractvalue { ptr, i32 } %679, 1
  store i32 %681, ptr %8, align 4
  br label %716

682:                                              ; preds = %670
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74)
          to label %683 unwind label %688

683:                                              ; preds = %682
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %76, ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef @.str.34, ptr noundef @.str.17, ptr noundef @.str.18)
          to label %684 unwind label %692

684:                                              ; preds = %683
  %685 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %76) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %75, i32 noundef 1, ptr noundef @.str.5, i32 noundef 2272, ptr noundef %685)
          to label %686 unwind label %696

686:                                              ; preds = %684
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %74)
          to label %687 unwind label %700

687:                                              ; preds = %686
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  br label %707

688:                                              ; preds = %682
  %689 = landingpad { ptr, i32 }
          cleanup
  %690 = extractvalue { ptr, i32 } %689, 0
  store ptr %690, ptr %7, align 8
  %691 = extractvalue { ptr, i32 } %689, 1
  store i32 %691, ptr %8, align 4
  br label %706

692:                                              ; preds = %683
  %693 = landingpad { ptr, i32 }
          cleanup
  %694 = extractvalue { ptr, i32 } %693, 0
  store ptr %694, ptr %7, align 8
  %695 = extractvalue { ptr, i32 } %693, 1
  store i32 %695, ptr %8, align 4
  br label %705

696:                                              ; preds = %684
  %697 = landingpad { ptr, i32 }
          cleanup
  %698 = extractvalue { ptr, i32 } %697, 0
  store ptr %698, ptr %7, align 8
  %699 = extractvalue { ptr, i32 } %697, 1
  store i32 %699, ptr %8, align 4
  br label %704

700:                                              ; preds = %686
  %701 = landingpad { ptr, i32 }
          cleanup
  %702 = extractvalue { ptr, i32 } %701, 0
  store ptr %702, ptr %7, align 8
  %703 = extractvalue { ptr, i32 } %701, 1
  store i32 %703, ptr %8, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #8
  br label %704

704:                                              ; preds = %700, %696
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #8
  br label %705

705:                                              ; preds = %704, %692
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #8
  br label %706

706:                                              ; preds = %705, %688
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  br label %716

707:                                              ; preds = %687, %671
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %77) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #8
  %708 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef 0)
          to label %709 unwind label %718

709:                                              ; preds = %707
  %710 = xor i1 %708, true
  %711 = zext i1 %710 to i8
  store i8 %711, ptr %78, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %77, ptr noundef nonnull align 1 dereferenceable(1) %78, ptr noundef null)
          to label %712 unwind label %718

712:                                              ; preds = %709
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #8
  %713 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %77)
          to label %714 unwind label %722

714:                                              ; preds = %712
  br i1 %713, label %715, label %726

715:                                              ; preds = %714
  br label %751

716:                                              ; preds = %706, %678
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #8
  br label %717

717:                                              ; preds = %716, %674
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #8
  br label %1069

718:                                              ; preds = %709, %707
  %719 = landingpad { ptr, i32 }
          cleanup
  %720 = extractvalue { ptr, i32 } %719, 0
  store ptr %720, ptr %7, align 8
  %721 = extractvalue { ptr, i32 } %719, 1
  store i32 %721, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #8
  br label %778

722:                                              ; preds = %712
  %723 = landingpad { ptr, i32 }
          cleanup
  %724 = extractvalue { ptr, i32 } %723, 0
  store ptr %724, ptr %7, align 8
  %725 = extractvalue { ptr, i32 } %723, 1
  store i32 %725, ptr %8, align 4
  br label %777

726:                                              ; preds = %714
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %727 unwind label %732

727:                                              ; preds = %726
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %81) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %81, ptr noundef nonnull align 8 dereferenceable(16) %77, ptr noundef @.str.671, ptr noundef @.str.18, ptr noundef @.str.17)
          to label %728 unwind label %736

728:                                              ; preds = %727
  %729 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %81) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %80, i32 noundef 1, ptr noundef @.str.5, i32 noundef 2273, ptr noundef %729)
          to label %730 unwind label %740

730:                                              ; preds = %728
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %731 unwind label %744

731:                                              ; preds = %730
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  br label %751

732:                                              ; preds = %726
  %733 = landingpad { ptr, i32 }
          cleanup
  %734 = extractvalue { ptr, i32 } %733, 0
  store ptr %734, ptr %7, align 8
  %735 = extractvalue { ptr, i32 } %733, 1
  store i32 %735, ptr %8, align 4
  br label %750

736:                                              ; preds = %727
  %737 = landingpad { ptr, i32 }
          cleanup
  %738 = extractvalue { ptr, i32 } %737, 0
  store ptr %738, ptr %7, align 8
  %739 = extractvalue { ptr, i32 } %737, 1
  store i32 %739, ptr %8, align 4
  br label %749

740:                                              ; preds = %728
  %741 = landingpad { ptr, i32 }
          cleanup
  %742 = extractvalue { ptr, i32 } %741, 0
  store ptr %742, ptr %7, align 8
  %743 = extractvalue { ptr, i32 } %741, 1
  store i32 %743, ptr %8, align 4
  br label %748

744:                                              ; preds = %730
  %745 = landingpad { ptr, i32 }
          cleanup
  %746 = extractvalue { ptr, i32 } %745, 0
  store ptr %746, ptr %7, align 8
  %747 = extractvalue { ptr, i32 } %745, 1
  store i32 %747, ptr %8, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #8
  br label %748

748:                                              ; preds = %744, %740
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #8
  br label %749

749:                                              ; preds = %748, %736
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  br label %750

750:                                              ; preds = %749, %732
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  br label %777

751:                                              ; preds = %731, %715
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %82) #8
  call void @llvm.lifetime.start.p0(i64 20, ptr %83) #8
  %752 = invoke i32 @_ZN7testing2LeIiEENS_8internal9LeMatcherIT_EES3_(i32 noundef 0)
          to label %753 unwind label %779

753:                                              ; preds = %751
  %754 = getelementptr inbounds %"class.testing::internal::LeMatcher.139", ptr %84, i32 0, i32 0
  %755 = getelementptr inbounds %"class.testing::internal::ComparisonBase.140", ptr %754, i32 0, i32 0
  store i32 %752, ptr %755, align 4
  %756 = invoke i32 @_ZN7testing2GtIiEENS_8internal9GtMatcherIT_EES3_(i32 noundef 10)
          to label %757 unwind label %779

757:                                              ; preds = %753
  %758 = getelementptr inbounds %"class.testing::internal::GtMatcher", ptr %85, i32 0, i32 0
  %759 = getelementptr inbounds %"class.testing::internal::ComparisonBase.134", ptr %758, i32 0, i32 0
  store i32 %756, ptr %759, align 4
  %760 = getelementptr inbounds %"class.testing::internal::LeMatcher.139", ptr %84, i32 0, i32 0
  %761 = getelementptr inbounds %"class.testing::internal::ComparisonBase.140", ptr %760, i32 0, i32 0
  %762 = load i32, ptr %761, align 4
  %763 = getelementptr inbounds %"class.testing::internal::GtMatcher", ptr %85, i32 0, i32 0
  %764 = getelementptr inbounds %"class.testing::internal::ComparisonBase.134", ptr %763, i32 0, i32 0
  %765 = load i32, ptr %764, align 4
  invoke void @_ZN7testing5AnyOfINS_8internal9LeMatcherIiEENS1_9GtMatcherIiEEiiiEENS1_12AnyOfResult5IT_T0_T1_T2_T3_E4typeES7_S8_S9_SA_SB_(ptr dead_on_unwind writable sret(%"class.testing::internal::EitherOfMatcher.556") align 4 %83, i32 %762, i32 %765, i32 noundef 3, i32 noundef 5, i32 noundef 7)
          to label %766 unwind label %779

766:                                              ; preds = %757
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_INS0_9LeMatcherIiEENS0_9GtMatcherIiEEEENS1_IiNS1_IiiEEEEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind writable sret(%"class.testing::Matcher") align 8 %82, ptr noundef nonnull align 4 dereferenceable(20) %83)
          to label %767 unwind label %779

767:                                              ; preds = %766
  %768 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN7testing7MatcherIiEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %82)
          to label %769 unwind label %783

769:                                              ; preds = %767
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %82) #8
  call void @llvm.lifetime.end.p0(i64 20, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %82) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %86) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #8
  %770 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef 0)
          to label %771 unwind label %788

771:                                              ; preds = %769
  %772 = zext i1 %770 to i8
  store i8 %772, ptr %87, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %86, ptr noundef nonnull align 1 dereferenceable(1) %87, ptr noundef null)
          to label %773 unwind label %788

773:                                              ; preds = %771
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #8
  %774 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %86)
          to label %775 unwind label %792

775:                                              ; preds = %773
  br i1 %774, label %776, label %796

776:                                              ; preds = %775
  br label %821

777:                                              ; preds = %750, %722
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #8
  br label %778

778:                                              ; preds = %777, %718
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #8
  br label %1069

779:                                              ; preds = %766, %757, %753, %751
  %780 = landingpad { ptr, i32 }
          cleanup
  %781 = extractvalue { ptr, i32 } %780, 0
  store ptr %781, ptr %7, align 8
  %782 = extractvalue { ptr, i32 } %780, 1
  store i32 %782, ptr %8, align 4
  br label %787

783:                                              ; preds = %767
  %784 = landingpad { ptr, i32 }
          cleanup
  %785 = extractvalue { ptr, i32 } %784, 0
  store ptr %785, ptr %7, align 8
  %786 = extractvalue { ptr, i32 } %784, 1
  store i32 %786, ptr %8, align 4
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %82) #8
  br label %787

787:                                              ; preds = %783, %779
  call void @llvm.lifetime.end.p0(i64 20, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %82) #8
  br label %1069

788:                                              ; preds = %771, %769
  %789 = landingpad { ptr, i32 }
          cleanup
  %790 = extractvalue { ptr, i32 } %789, 0
  store ptr %790, ptr %7, align 8
  %791 = extractvalue { ptr, i32 } %789, 1
  store i32 %791, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #8
  br label %830

792:                                              ; preds = %773
  %793 = landingpad { ptr, i32 }
          cleanup
  %794 = extractvalue { ptr, i32 } %793, 0
  store ptr %794, ptr %7, align 8
  %795 = extractvalue { ptr, i32 } %793, 1
  store i32 %795, ptr %8, align 4
  br label %829

796:                                              ; preds = %775
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %797 unwind label %802

797:                                              ; preds = %796
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %90) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %90, ptr noundef nonnull align 8 dereferenceable(16) %86, ptr noundef @.str.671, ptr noundef @.str.17, ptr noundef @.str.18)
          to label %798 unwind label %806

798:                                              ; preds = %797
  %799 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %90) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %89, i32 noundef 1, ptr noundef @.str.5, i32 noundef 2276, ptr noundef %799)
          to label %800 unwind label %810

800:                                              ; preds = %798
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %801 unwind label %814

801:                                              ; preds = %800
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %90) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  br label %821

802:                                              ; preds = %796
  %803 = landingpad { ptr, i32 }
          cleanup
  %804 = extractvalue { ptr, i32 } %803, 0
  store ptr %804, ptr %7, align 8
  %805 = extractvalue { ptr, i32 } %803, 1
  store i32 %805, ptr %8, align 4
  br label %820

806:                                              ; preds = %797
  %807 = landingpad { ptr, i32 }
          cleanup
  %808 = extractvalue { ptr, i32 } %807, 0
  store ptr %808, ptr %7, align 8
  %809 = extractvalue { ptr, i32 } %807, 1
  store i32 %809, ptr %8, align 4
  br label %819

810:                                              ; preds = %798
  %811 = landingpad { ptr, i32 }
          cleanup
  %812 = extractvalue { ptr, i32 } %811, 0
  store ptr %812, ptr %7, align 8
  %813 = extractvalue { ptr, i32 } %811, 1
  store i32 %813, ptr %8, align 4
  br label %818

814:                                              ; preds = %800
  %815 = landingpad { ptr, i32 }
          cleanup
  %816 = extractvalue { ptr, i32 } %815, 0
  store ptr %816, ptr %7, align 8
  %817 = extractvalue { ptr, i32 } %815, 1
  store i32 %817, ptr %8, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #8
  br label %818

818:                                              ; preds = %814, %810
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #8
  br label %819

819:                                              ; preds = %818, %806
  call void @llvm.lifetime.end.p0(i64 32, ptr %90) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #8
  br label %820

820:                                              ; preds = %819, %802
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  br label %829

821:                                              ; preds = %801, %776
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %91) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #8
  %822 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef 11)
          to label %823 unwind label %831

823:                                              ; preds = %821
  %824 = zext i1 %822 to i8
  store i8 %824, ptr %92, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %91, ptr noundef nonnull align 1 dereferenceable(1) %92, ptr noundef null)
          to label %825 unwind label %831

825:                                              ; preds = %823
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #8
  %826 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %91)
          to label %827 unwind label %835

827:                                              ; preds = %825
  br i1 %826, label %828, label %839

828:                                              ; preds = %827
  br label %864

829:                                              ; preds = %820, %792
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #8
  br label %830

830:                                              ; preds = %829, %788
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #8
  br label %1069

831:                                              ; preds = %823, %821
  %832 = landingpad { ptr, i32 }
          cleanup
  %833 = extractvalue { ptr, i32 } %832, 0
  store ptr %833, ptr %7, align 8
  %834 = extractvalue { ptr, i32 } %832, 1
  store i32 %834, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #8
  br label %873

835:                                              ; preds = %825
  %836 = landingpad { ptr, i32 }
          cleanup
  %837 = extractvalue { ptr, i32 } %836, 0
  store ptr %837, ptr %7, align 8
  %838 = extractvalue { ptr, i32 } %836, 1
  store i32 %838, ptr %8, align 4
  br label %872

839:                                              ; preds = %827
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %840 unwind label %845

840:                                              ; preds = %839
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %95) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %95, ptr noundef nonnull align 8 dereferenceable(16) %91, ptr noundef @.str.724, ptr noundef @.str.17, ptr noundef @.str.18)
          to label %841 unwind label %849

841:                                              ; preds = %840
  %842 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %95) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %94, i32 noundef 1, ptr noundef @.str.5, i32 noundef 2277, ptr noundef %842)
          to label %843 unwind label %853

843:                                              ; preds = %841
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %844 unwind label %857

844:                                              ; preds = %843
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %95) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  br label %864

845:                                              ; preds = %839
  %846 = landingpad { ptr, i32 }
          cleanup
  %847 = extractvalue { ptr, i32 } %846, 0
  store ptr %847, ptr %7, align 8
  %848 = extractvalue { ptr, i32 } %846, 1
  store i32 %848, ptr %8, align 4
  br label %863

849:                                              ; preds = %840
  %850 = landingpad { ptr, i32 }
          cleanup
  %851 = extractvalue { ptr, i32 } %850, 0
  store ptr %851, ptr %7, align 8
  %852 = extractvalue { ptr, i32 } %850, 1
  store i32 %852, ptr %8, align 4
  br label %862

853:                                              ; preds = %841
  %854 = landingpad { ptr, i32 }
          cleanup
  %855 = extractvalue { ptr, i32 } %854, 0
  store ptr %855, ptr %7, align 8
  %856 = extractvalue { ptr, i32 } %854, 1
  store i32 %856, ptr %8, align 4
  br label %861

857:                                              ; preds = %843
  %858 = landingpad { ptr, i32 }
          cleanup
  %859 = extractvalue { ptr, i32 } %858, 0
  store ptr %859, ptr %7, align 8
  %860 = extractvalue { ptr, i32 } %858, 1
  store i32 %860, ptr %8, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #8
  br label %861

861:                                              ; preds = %857, %853
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #8
  br label %862

862:                                              ; preds = %861, %849
  call void @llvm.lifetime.end.p0(i64 32, ptr %95) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #8
  br label %863

863:                                              ; preds = %862, %845
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  br label %872

864:                                              ; preds = %844, %828
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %96) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #8
  %865 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef 3)
          to label %866 unwind label %874

866:                                              ; preds = %864
  %867 = zext i1 %865 to i8
  store i8 %867, ptr %97, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %96, ptr noundef nonnull align 1 dereferenceable(1) %97, ptr noundef null)
          to label %868 unwind label %874

868:                                              ; preds = %866
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #8
  %869 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %96)
          to label %870 unwind label %878

870:                                              ; preds = %868
  br i1 %869, label %871, label %882

871:                                              ; preds = %870
  br label %907

872:                                              ; preds = %863, %835
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #8
  br label %873

873:                                              ; preds = %872, %831
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #8
  br label %1069

874:                                              ; preds = %866, %864
  %875 = landingpad { ptr, i32 }
          cleanup
  %876 = extractvalue { ptr, i32 } %875, 0
  store ptr %876, ptr %7, align 8
  %877 = extractvalue { ptr, i32 } %875, 1
  store i32 %877, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #8
  br label %917

878:                                              ; preds = %868
  %879 = landingpad { ptr, i32 }
          cleanup
  %880 = extractvalue { ptr, i32 } %879, 0
  store ptr %880, ptr %7, align 8
  %881 = extractvalue { ptr, i32 } %879, 1
  store i32 %881, ptr %8, align 4
  br label %916

882:                                              ; preds = %870
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %98)
          to label %883 unwind label %888

883:                                              ; preds = %882
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %100) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %100, ptr noundef nonnull align 8 dereferenceable(16) %96, ptr noundef @.str.34, ptr noundef @.str.17, ptr noundef @.str.18)
          to label %884 unwind label %892

884:                                              ; preds = %883
  %885 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %99, i32 noundef 1, ptr noundef @.str.5, i32 noundef 2278, ptr noundef %885)
          to label %886 unwind label %896

886:                                              ; preds = %884
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef nonnull align 8 dereferenceable(8) %98)
          to label %887 unwind label %900

887:                                              ; preds = %886
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  br label %907

888:                                              ; preds = %882
  %889 = landingpad { ptr, i32 }
          cleanup
  %890 = extractvalue { ptr, i32 } %889, 0
  store ptr %890, ptr %7, align 8
  %891 = extractvalue { ptr, i32 } %889, 1
  store i32 %891, ptr %8, align 4
  br label %906

892:                                              ; preds = %883
  %893 = landingpad { ptr, i32 }
          cleanup
  %894 = extractvalue { ptr, i32 } %893, 0
  store ptr %894, ptr %7, align 8
  %895 = extractvalue { ptr, i32 } %893, 1
  store i32 %895, ptr %8, align 4
  br label %905

896:                                              ; preds = %884
  %897 = landingpad { ptr, i32 }
          cleanup
  %898 = extractvalue { ptr, i32 } %897, 0
  store ptr %898, ptr %7, align 8
  %899 = extractvalue { ptr, i32 } %897, 1
  store i32 %899, ptr %8, align 4
  br label %904

900:                                              ; preds = %886
  %901 = landingpad { ptr, i32 }
          cleanup
  %902 = extractvalue { ptr, i32 } %901, 0
  store ptr %902, ptr %7, align 8
  %903 = extractvalue { ptr, i32 } %901, 1
  store i32 %903, ptr %8, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #8
  br label %904

904:                                              ; preds = %900, %896
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  br label %905

905:                                              ; preds = %904, %892
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #8
  br label %906

906:                                              ; preds = %905, %888
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  br label %916

907:                                              ; preds = %887, %871
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %96) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %101) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #8
  %908 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef 2)
          to label %909 unwind label %918

909:                                              ; preds = %907
  %910 = xor i1 %908, true
  %911 = zext i1 %910 to i8
  store i8 %911, ptr %102, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %101, ptr noundef nonnull align 1 dereferenceable(1) %102, ptr noundef null)
          to label %912 unwind label %918

912:                                              ; preds = %909
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #8
  %913 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %101)
          to label %914 unwind label %922

914:                                              ; preds = %912
  br i1 %913, label %915, label %926

915:                                              ; preds = %914
  br label %951

916:                                              ; preds = %906, %878
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #8
  br label %917

917:                                              ; preds = %916, %874
  call void @llvm.lifetime.end.p0(i64 16, ptr %96) #8
  br label %1069

918:                                              ; preds = %909, %907
  %919 = landingpad { ptr, i32 }
          cleanup
  %920 = extractvalue { ptr, i32 } %919, 0
  store ptr %920, ptr %7, align 8
  %921 = extractvalue { ptr, i32 } %919, 1
  store i32 %921, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #8
  br label %987

922:                                              ; preds = %912
  %923 = landingpad { ptr, i32 }
          cleanup
  %924 = extractvalue { ptr, i32 } %923, 0
  store ptr %924, ptr %7, align 8
  %925 = extractvalue { ptr, i32 } %923, 1
  store i32 %925, ptr %8, align 4
  br label %986

926:                                              ; preds = %914
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %103)
          to label %927 unwind label %932

927:                                              ; preds = %926
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %105) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %105, ptr noundef nonnull align 8 dereferenceable(16) %101, ptr noundef @.str.33, ptr noundef @.str.18, ptr noundef @.str.17)
          to label %928 unwind label %936

928:                                              ; preds = %927
  %929 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %105) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %104, i32 noundef 1, ptr noundef @.str.5, i32 noundef 2279, ptr noundef %929)
          to label %930 unwind label %940

930:                                              ; preds = %928
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef nonnull align 8 dereferenceable(8) %103)
          to label %931 unwind label %944

931:                                              ; preds = %930
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %103) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  br label %951

932:                                              ; preds = %926
  %933 = landingpad { ptr, i32 }
          cleanup
  %934 = extractvalue { ptr, i32 } %933, 0
  store ptr %934, ptr %7, align 8
  %935 = extractvalue { ptr, i32 } %933, 1
  store i32 %935, ptr %8, align 4
  br label %950

936:                                              ; preds = %927
  %937 = landingpad { ptr, i32 }
          cleanup
  %938 = extractvalue { ptr, i32 } %937, 0
  store ptr %938, ptr %7, align 8
  %939 = extractvalue { ptr, i32 } %937, 1
  store i32 %939, ptr %8, align 4
  br label %949

940:                                              ; preds = %928
  %941 = landingpad { ptr, i32 }
          cleanup
  %942 = extractvalue { ptr, i32 } %941, 0
  store ptr %942, ptr %7, align 8
  %943 = extractvalue { ptr, i32 } %941, 1
  store i32 %943, ptr %8, align 4
  br label %948

944:                                              ; preds = %930
  %945 = landingpad { ptr, i32 }
          cleanup
  %946 = extractvalue { ptr, i32 } %945, 0
  store ptr %946, ptr %7, align 8
  %947 = extractvalue { ptr, i32 } %945, 1
  store i32 %947, ptr %8, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #8
  br label %948

948:                                              ; preds = %944, %940
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #8
  br label %949

949:                                              ; preds = %948, %936
  call void @llvm.lifetime.end.p0(i64 32, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %103) #8
  br label %950

950:                                              ; preds = %949, %932
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  br label %986

951:                                              ; preds = %931, %915
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %101) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %106) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #8
  %952 = invoke i64 @_ZN7testing5AnyOfIiiEENS_8internal12AnyOfResult2IT_T0_E4typeES3_S4_(i32 noundef 1, i32 noundef 2)
          to label %953 unwind label %988

953:                                              ; preds = %951
  store i64 %952, ptr %107, align 4
  invoke void @_ZNK7testing8internal15EitherOfMatcherIiiEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind writable sret(%"class.testing::Matcher") align 8 %106, ptr noundef nonnull align 4 dereferenceable(8) %107)
          to label %954 unwind label %988

954:                                              ; preds = %953
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(24) %106)
          to label %955 unwind label %992

955:                                              ; preds = %954
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %106) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %106) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %108) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %109) #8
  %956 = invoke { i64, i32 } @_ZN7testing5AnyOfIiiiEENS_8internal12AnyOfResult3IT_T0_T1_E4typeES3_S4_S5_(i32 noundef 1, i32 noundef 2, i32 noundef 3)
          to label %957 unwind label %997

957:                                              ; preds = %955
  store { i64, i32 } %956, ptr %110, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %109, ptr align 8 %110, i64 12, i1 false)
  invoke void @_ZNK7testing8internal15EitherOfMatcherIiNS1_IiiEEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind writable sret(%"class.testing::Matcher") align 8 %108, ptr noundef nonnull align 4 dereferenceable(12) %109)
          to label %958 unwind label %997

958:                                              ; preds = %957
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(24) %108)
          to label %959 unwind label %1001

959:                                              ; preds = %958
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %108) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %109) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %108) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %111) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %112) #8
  %960 = invoke { i64, i64 } @_ZN7testing5AnyOfIiiiiEENS_8internal12AnyOfResult4IT_T0_T1_T2_E4typeES3_S4_S5_S6_(i32 noundef 1, i32 noundef 2, i32 noundef 3, i32 noundef 4)
          to label %961 unwind label %1006

961:                                              ; preds = %959
  %962 = getelementptr inbounds { i64, i64 }, ptr %112, i32 0, i32 0
  %963 = extractvalue { i64, i64 } %960, 0
  store i64 %963, ptr %962, align 4
  %964 = getelementptr inbounds { i64, i64 }, ptr %112, i32 0, i32 1
  %965 = extractvalue { i64, i64 } %960, 1
  store i64 %965, ptr %964, align 4
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_IiiEES2_EcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind writable sret(%"class.testing::Matcher") align 8 %111, ptr noundef nonnull align 4 dereferenceable(16) %112)
          to label %966 unwind label %1006

966:                                              ; preds = %961
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 4, ptr noundef nonnull align 8 dereferenceable(24) %111)
          to label %967 unwind label %1010

967:                                              ; preds = %966
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %111) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %111) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %113) #8
  call void @llvm.lifetime.start.p0(i64 20, ptr %114) #8
  invoke void @_ZN7testing5AnyOfIiiiiiEENS_8internal12AnyOfResult5IT_T0_T1_T2_T3_E4typeES3_S4_S5_S6_S7_(ptr dead_on_unwind writable sret(%"class.testing::internal::EitherOfMatcher.561") align 4 %114, i32 noundef 1, i32 noundef 2, i32 noundef 3, i32 noundef 4, i32 noundef 5)
          to label %968 unwind label %1015

968:                                              ; preds = %967
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_IiiEENS1_IiS2_EEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind writable sret(%"class.testing::Matcher") align 8 %113, ptr noundef nonnull align 4 dereferenceable(20) %114)
          to label %969 unwind label %1015

969:                                              ; preds = %968
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 5, ptr noundef nonnull align 8 dereferenceable(24) %113)
          to label %970 unwind label %1019

970:                                              ; preds = %969
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %113) #8
  call void @llvm.lifetime.end.p0(i64 20, ptr %114) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %113) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %115) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %116) #8
  invoke void @_ZN7testing5AnyOfIiiiiiiEENS_8internal12AnyOfResult6IT_T0_T1_T2_T3_T4_E4typeES3_S4_S5_S6_S7_S8_(ptr dead_on_unwind writable sret(%"class.testing::internal::EitherOfMatcher.562") align 4 %116, i32 noundef 1, i32 noundef 2, i32 noundef 3, i32 noundef 4, i32 noundef 5, i32 noundef 6)
          to label %971 unwind label %1024

971:                                              ; preds = %970
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_IiNS1_IiiEEEES3_EcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind writable sret(%"class.testing::Matcher") align 8 %115, ptr noundef nonnull align 4 dereferenceable(24) %116)
          to label %972 unwind label %1024

972:                                              ; preds = %971
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 6, ptr noundef nonnull align 8 dereferenceable(24) %115)
          to label %973 unwind label %1028

973:                                              ; preds = %972
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %116) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %115) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %117) #8
  call void @llvm.lifetime.start.p0(i64 28, ptr %118) #8
  invoke void @_ZN7testing5AnyOfIiiiiiiiEENS_8internal12AnyOfResult7IT_T0_T1_T2_T3_T4_T5_E4typeES3_S4_S5_S6_S7_S8_S9_(ptr dead_on_unwind writable sret(%"class.testing::internal::EitherOfMatcher.563") align 4 %118, i32 noundef 1, i32 noundef 2, i32 noundef 3, i32 noundef 4, i32 noundef 5, i32 noundef 6, i32 noundef 7)
          to label %974 unwind label %1033

974:                                              ; preds = %973
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_IiNS1_IiiEEEENS1_IS2_S2_EEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind writable sret(%"class.testing::Matcher") align 8 %117, ptr noundef nonnull align 4 dereferenceable(28) %118)
          to label %975 unwind label %1033

975:                                              ; preds = %974
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 7, ptr noundef nonnull align 8 dereferenceable(24) %117)
          to label %976 unwind label %1037

976:                                              ; preds = %975
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %117) #8
  call void @llvm.lifetime.end.p0(i64 28, ptr %118) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %117) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %119) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %120) #8
  invoke void @_ZN7testing5AnyOfIiiiiiiiiEENS_8internal12AnyOfResult8IT_T0_T1_T2_T3_T4_T5_T6_E4typeES3_S4_S5_S6_S7_S8_S9_SA_(ptr dead_on_unwind writable sret(%"class.testing::internal::EitherOfMatcher.564") align 4 %120, i32 noundef 1, i32 noundef 2, i32 noundef 3, i32 noundef 4, i32 noundef 5, i32 noundef 6, i32 noundef 7, i32 noundef 8)
          to label %977 unwind label %1042

977:                                              ; preds = %976
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_INS1_IiiEES2_EES3_EcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind writable sret(%"class.testing::Matcher") align 8 %119, ptr noundef nonnull align 4 dereferenceable(32) %120)
          to label %978 unwind label %1042

978:                                              ; preds = %977
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 8, ptr noundef nonnull align 8 dereferenceable(24) %119)
          to label %979 unwind label %1046

979:                                              ; preds = %978
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %119) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %120) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %119) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %121) #8
  call void @llvm.lifetime.start.p0(i64 36, ptr %122) #8
  invoke void @_ZN7testing5AnyOfIiiiiiiiiiEENS_8internal12AnyOfResult9IT_T0_T1_T2_T3_T4_T5_T6_T7_E4typeES3_S4_S5_S6_S7_S8_S9_SA_SB_(ptr dead_on_unwind writable sret(%"class.testing::internal::EitherOfMatcher.565") align 4 %122, i32 noundef 1, i32 noundef 2, i32 noundef 3, i32 noundef 4, i32 noundef 5, i32 noundef 6, i32 noundef 7, i32 noundef 8, i32 noundef 9)
          to label %980 unwind label %1051

980:                                              ; preds = %979
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_INS1_IiiEES2_EENS1_IS2_NS1_IiS2_EEEEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind writable sret(%"class.testing::Matcher") align 8 %121, ptr noundef nonnull align 4 dereferenceable(36) %122)
          to label %981 unwind label %1051

981:                                              ; preds = %980
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 9, ptr noundef nonnull align 8 dereferenceable(24) %121)
          to label %982 unwind label %1055

982:                                              ; preds = %981
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %121) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr %122) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %121) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %123) #8
  call void @llvm.lifetime.start.p0(i64 40, ptr %124) #8
  invoke void @_ZN7testing5AnyOfIiiiiiiiiiiEENS_8internal13AnyOfResult10IT_T0_T1_T2_T3_T4_T5_T6_T7_T8_E4typeES3_S4_S5_S6_S7_S8_S9_SA_SB_SC_(ptr dead_on_unwind writable sret(%"class.testing::internal::EitherOfMatcher.566") align 4 %124, i32 noundef 1, i32 noundef 2, i32 noundef 3, i32 noundef 4, i32 noundef 5, i32 noundef 6, i32 noundef 7, i32 noundef 8, i32 noundef 9, i32 noundef 10)
          to label %983 unwind label %1060

983:                                              ; preds = %982
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_INS1_IiiEENS1_IiS2_EEEES4_EcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind writable sret(%"class.testing::Matcher") align 8 %123, ptr noundef nonnull align 4 dereferenceable(40) %124)
          to label %984 unwind label %1060

984:                                              ; preds = %983
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 10, ptr noundef nonnull align 8 dereferenceable(24) %123)
          to label %985 unwind label %1064

985:                                              ; preds = %984
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %123) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %124) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %123) #8
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %3) #8
  ret void

986:                                              ; preds = %950, %922
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %101) #8
  br label %987

987:                                              ; preds = %986, %918
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #8
  br label %1069

988:                                              ; preds = %953, %951
  %989 = landingpad { ptr, i32 }
          cleanup
  %990 = extractvalue { ptr, i32 } %989, 0
  store ptr %990, ptr %7, align 8
  %991 = extractvalue { ptr, i32 } %989, 1
  store i32 %991, ptr %8, align 4
  br label %996

992:                                              ; preds = %954
  %993 = landingpad { ptr, i32 }
          cleanup
  %994 = extractvalue { ptr, i32 } %993, 0
  store ptr %994, ptr %7, align 8
  %995 = extractvalue { ptr, i32 } %993, 1
  store i32 %995, ptr %8, align 4
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %106) #8
  br label %996

996:                                              ; preds = %992, %988
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %106) #8
  br label %1069

997:                                              ; preds = %957, %955
  %998 = landingpad { ptr, i32 }
          cleanup
  %999 = extractvalue { ptr, i32 } %998, 0
  store ptr %999, ptr %7, align 8
  %1000 = extractvalue { ptr, i32 } %998, 1
  store i32 %1000, ptr %8, align 4
  br label %1005

1001:                                             ; preds = %958
  %1002 = landingpad { ptr, i32 }
          cleanup
  %1003 = extractvalue { ptr, i32 } %1002, 0
  store ptr %1003, ptr %7, align 8
  %1004 = extractvalue { ptr, i32 } %1002, 1
  store i32 %1004, ptr %8, align 4
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %108) #8
  br label %1005

1005:                                             ; preds = %1001, %997
  call void @llvm.lifetime.end.p0(i64 12, ptr %109) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %108) #8
  br label %1069

1006:                                             ; preds = %961, %959
  %1007 = landingpad { ptr, i32 }
          cleanup
  %1008 = extractvalue { ptr, i32 } %1007, 0
  store ptr %1008, ptr %7, align 8
  %1009 = extractvalue { ptr, i32 } %1007, 1
  store i32 %1009, ptr %8, align 4
  br label %1014

1010:                                             ; preds = %966
  %1011 = landingpad { ptr, i32 }
          cleanup
  %1012 = extractvalue { ptr, i32 } %1011, 0
  store ptr %1012, ptr %7, align 8
  %1013 = extractvalue { ptr, i32 } %1011, 1
  store i32 %1013, ptr %8, align 4
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %111) #8
  br label %1014

1014:                                             ; preds = %1010, %1006
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %111) #8
  br label %1069

1015:                                             ; preds = %968, %967
  %1016 = landingpad { ptr, i32 }
          cleanup
  %1017 = extractvalue { ptr, i32 } %1016, 0
  store ptr %1017, ptr %7, align 8
  %1018 = extractvalue { ptr, i32 } %1016, 1
  store i32 %1018, ptr %8, align 4
  br label %1023

1019:                                             ; preds = %969
  %1020 = landingpad { ptr, i32 }
          cleanup
  %1021 = extractvalue { ptr, i32 } %1020, 0
  store ptr %1021, ptr %7, align 8
  %1022 = extractvalue { ptr, i32 } %1020, 1
  store i32 %1022, ptr %8, align 4
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %113) #8
  br label %1023

1023:                                             ; preds = %1019, %1015
  call void @llvm.lifetime.end.p0(i64 20, ptr %114) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %113) #8
  br label %1069

1024:                                             ; preds = %971, %970
  %1025 = landingpad { ptr, i32 }
          cleanup
  %1026 = extractvalue { ptr, i32 } %1025, 0
  store ptr %1026, ptr %7, align 8
  %1027 = extractvalue { ptr, i32 } %1025, 1
  store i32 %1027, ptr %8, align 4
  br label %1032

1028:                                             ; preds = %972
  %1029 = landingpad { ptr, i32 }
          cleanup
  %1030 = extractvalue { ptr, i32 } %1029, 0
  store ptr %1030, ptr %7, align 8
  %1031 = extractvalue { ptr, i32 } %1029, 1
  store i32 %1031, ptr %8, align 4
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #8
  br label %1032

1032:                                             ; preds = %1028, %1024
  call void @llvm.lifetime.end.p0(i64 24, ptr %116) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %115) #8
  br label %1069

1033:                                             ; preds = %974, %973
  %1034 = landingpad { ptr, i32 }
          cleanup
  %1035 = extractvalue { ptr, i32 } %1034, 0
  store ptr %1035, ptr %7, align 8
  %1036 = extractvalue { ptr, i32 } %1034, 1
  store i32 %1036, ptr %8, align 4
  br label %1041

1037:                                             ; preds = %975
  %1038 = landingpad { ptr, i32 }
          cleanup
  %1039 = extractvalue { ptr, i32 } %1038, 0
  store ptr %1039, ptr %7, align 8
  %1040 = extractvalue { ptr, i32 } %1038, 1
  store i32 %1040, ptr %8, align 4
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %117) #8
  br label %1041

1041:                                             ; preds = %1037, %1033
  call void @llvm.lifetime.end.p0(i64 28, ptr %118) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %117) #8
  br label %1069

1042:                                             ; preds = %977, %976
  %1043 = landingpad { ptr, i32 }
          cleanup
  %1044 = extractvalue { ptr, i32 } %1043, 0
  store ptr %1044, ptr %7, align 8
  %1045 = extractvalue { ptr, i32 } %1043, 1
  store i32 %1045, ptr %8, align 4
  br label %1050

1046:                                             ; preds = %978
  %1047 = landingpad { ptr, i32 }
          cleanup
  %1048 = extractvalue { ptr, i32 } %1047, 0
  store ptr %1048, ptr %7, align 8
  %1049 = extractvalue { ptr, i32 } %1047, 1
  store i32 %1049, ptr %8, align 4
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %119) #8
  br label %1050

1050:                                             ; preds = %1046, %1042
  call void @llvm.lifetime.end.p0(i64 32, ptr %120) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %119) #8
  br label %1069

1051:                                             ; preds = %980, %979
  %1052 = landingpad { ptr, i32 }
          cleanup
  %1053 = extractvalue { ptr, i32 } %1052, 0
  store ptr %1053, ptr %7, align 8
  %1054 = extractvalue { ptr, i32 } %1052, 1
  store i32 %1054, ptr %8, align 4
  br label %1059

1055:                                             ; preds = %981
  %1056 = landingpad { ptr, i32 }
          cleanup
  %1057 = extractvalue { ptr, i32 } %1056, 0
  store ptr %1057, ptr %7, align 8
  %1058 = extractvalue { ptr, i32 } %1056, 1
  store i32 %1058, ptr %8, align 4
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %121) #8
  br label %1059

1059:                                             ; preds = %1055, %1051
  call void @llvm.lifetime.end.p0(i64 36, ptr %122) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %121) #8
  br label %1069

1060:                                             ; preds = %983, %982
  %1061 = landingpad { ptr, i32 }
          cleanup
  %1062 = extractvalue { ptr, i32 } %1061, 0
  store ptr %1062, ptr %7, align 8
  %1063 = extractvalue { ptr, i32 } %1061, 1
  store i32 %1063, ptr %8, align 4
  br label %1068

1064:                                             ; preds = %984
  %1065 = landingpad { ptr, i32 }
          cleanup
  %1066 = extractvalue { ptr, i32 } %1065, 0
  store ptr %1066, ptr %7, align 8
  %1067 = extractvalue { ptr, i32 } %1065, 1
  store i32 %1067, ptr %8, align 4
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %123) #8
  br label %1068

1068:                                             ; preds = %1064, %1060
  call void @llvm.lifetime.end.p0(i64 40, ptr %124) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %123) #8
  br label %1069

1069:                                             ; preds = %1068, %1059, %1050, %1041, %1032, %1023, %1014, %1005, %996, %987, %917, %873, %830, %787, %778, %717, %673, %630, %587, %544, %535, %455, %411, %368, %325, %316, %247, %203, %160
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %3) #8
  br label %1070

1070:                                             ; preds = %1069
  %1071 = load ptr, ptr %7, align 8
  %1072 = load i32, ptr %8, align 4
  %1073 = insertvalue { ptr, i32 } poison, ptr %1071, 0
  %1074 = insertvalue { ptr, i32 } %1073, i32 %1072, 1
  resume { ptr, i32 } %1074
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i64 @_ZN7testing5AnyOfINS_8internal9LeMatcherIiEENS1_9GeMatcherIiEEEENS1_12AnyOfResult2IT_T0_E4typeES7_S8_(i32, i32) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS0_9LeMatcherIiEENS0_9GeMatcherIiEEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(8)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { i64, i32 } @_ZN7testing5AnyOfINS_8internal9LtMatcherIiEENS1_9EqMatcherIiEES5_EENS1_12AnyOfResult3IT_T0_T1_E4typeES7_S8_S9_(i32, i32, i32) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS0_9LtMatcherIiEENS1_INS0_9EqMatcherIiEES5_EEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { i64, i64 } @_ZN7testing5AnyOfINS_8internal9LtMatcherIiEENS1_9EqMatcherIiEES5_S5_EENS1_12AnyOfResult4IT_T0_T1_T2_E4typeES7_S8_S9_SA_(i32, i32, i32, i32) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_INS0_9LtMatcherIiEENS0_9EqMatcherIiEEEENS1_IS5_S5_EEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(16)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7testing5AnyOfINS_8internal9LeMatcherIiEENS1_9GtMatcherIiEEiiiEENS1_12AnyOfResult5IT_T0_T1_T2_T3_E4typeES7_S8_S9_SA_SB_(ptr dead_on_unwind noalias writable sret(%"class.testing::internal::EitherOfMatcher.556") align 4, i32, i32, i32 noundef, i32 noundef, i32 noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_INS0_9LeMatcherIiEENS0_9GtMatcherIiEEEENS1_IiNS1_IiiEEEEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(20)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i64 @_ZN7testing5AnyOfIiiEENS_8internal12AnyOfResult2IT_T0_E4typeES3_S4_(i32 noundef, i32 noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherIiiEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(8)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { i64, i32 } @_ZN7testing5AnyOfIiiiEENS_8internal12AnyOfResult3IT_T0_T1_E4typeES3_S4_S5_(i32 noundef, i32 noundef, i32 noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherIiNS1_IiiEEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { i64, i64 } @_ZN7testing5AnyOfIiiiiEENS_8internal12AnyOfResult4IT_T0_T1_T2_E4typeES3_S4_S5_S6_(i32 noundef, i32 noundef, i32 noundef, i32 noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_IiiEES2_EcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(16)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7testing5AnyOfIiiiiiEENS_8internal12AnyOfResult5IT_T0_T1_T2_T3_E4typeES3_S4_S5_S6_S7_(ptr dead_on_unwind noalias writable sret(%"class.testing::internal::EitherOfMatcher.561") align 4, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_IiiEENS1_IiS2_EEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(20)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7testing5AnyOfIiiiiiiEENS_8internal12AnyOfResult6IT_T0_T1_T2_T3_T4_E4typeES3_S4_S5_S6_S7_S8_(ptr dead_on_unwind noalias writable sret(%"class.testing::internal::EitherOfMatcher.562") align 4, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_IiNS1_IiiEEEES3_EcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(24)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7testing5AnyOfIiiiiiiiEENS_8internal12AnyOfResult7IT_T0_T1_T2_T3_T4_T5_E4typeES3_S4_S5_S6_S7_S8_S9_(ptr dead_on_unwind noalias writable sret(%"class.testing::internal::EitherOfMatcher.563") align 4, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_IiNS1_IiiEEEENS1_IS2_S2_EEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(28)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7testing5AnyOfIiiiiiiiiEENS_8internal12AnyOfResult8IT_T0_T1_T2_T3_T4_T5_T6_E4typeES3_S4_S5_S6_S7_S8_S9_SA_(ptr dead_on_unwind noalias writable sret(%"class.testing::internal::EitherOfMatcher.564") align 4, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_INS1_IiiEES2_EES3_EcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(32)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7testing5AnyOfIiiiiiiiiiEENS_8internal12AnyOfResult9IT_T0_T1_T2_T3_T4_T5_T6_T7_E4typeES3_S4_S5_S6_S7_S8_S9_SA_SB_(ptr dead_on_unwind noalias writable sret(%"class.testing::internal::EitherOfMatcher.565") align 4, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_INS1_IiiEES2_EENS1_IS2_NS1_IiS2_EEEEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(36)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7testing5AnyOfIiiiiiiiiiiEENS_8internal13AnyOfResult10IT_T0_T1_T2_T3_T4_T5_T6_T7_T8_E4typeES3_S4_S5_S6_S7_S8_S9_SA_SB_SC_(ptr dead_on_unwind noalias writable sret(%"class.testing::internal::EitherOfMatcher.566") align 4, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_INS1_IiiEENS1_IiS2_EEEES4_EcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(40)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #8 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.testing::Matcher" = type { %"class.testing::internal::MatcherBase" }
%"class.testing::internal::MatcherBase" = type { ptr, %"class.testing::internal::linked_ptr" }
%"class.testing::internal::linked_ptr" = type { ptr, %"class.testing::internal::linked_ptr_internal" }
%"class.testing::internal::linked_ptr_internal" = type { ptr }
%"class.testing::internal::EitherOfMatcher" = type { %"class.testing::internal::LeMatcher.139", %"class.testing::internal::GeMatcher" }
%"class.testing::internal::LeMatcher.139" = type { %"class.testing::internal::ComparisonBase.140" }
%"class.testing::internal::ComparisonBase.140" = type { i32 }
%"class.testing::internal::GeMatcher" = type { %"class.testing::internal::ComparisonBase.131" }
%"class.testing::internal::ComparisonBase.131" = type { i32 }
%"class.testing::AssertionResult" = type { i8, %"class.testing::internal::scoped_ptr" }
%"class.testing::internal::scoped_ptr" = type { ptr }
%"class.testing::Message" = type { %"class.testing::internal::scoped_ptr.0" }
%"class.testing::internal::scoped_ptr.0" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }
%"class.testing::internal::EitherOfMatcher.552" = type { %"class.testing::internal::LtMatcher.144", %"class.testing::internal::EitherOfMatcher.553" }
%"class.testing::internal::LtMatcher.144" = type { %"class.testing::internal::ComparisonBase.145" }
%"class.testing::internal::ComparisonBase.145" = type { i32 }
%"class.testing::internal::EitherOfMatcher.553" = type { %"class.testing::internal::EqMatcher.41", %"class.testing::internal::EqMatcher.41" }
%"class.testing::internal::EqMatcher.41" = type { %"class.testing::internal::ComparisonBase.42" }
%"class.testing::internal::ComparisonBase.42" = type { i32 }
%"class.testing::internal::EitherOfMatcher.554" = type { %"class.testing::internal::EitherOfMatcher.555", %"class.testing::internal::EitherOfMatcher.553" }
%"class.testing::internal::EitherOfMatcher.555" = type { %"class.testing::internal::LtMatcher.144", %"class.testing::internal::EqMatcher.41" }
%"class.testing::internal::EitherOfMatcher.556" = type { %"class.testing::internal::EitherOfMatcher.557", %"class.testing::internal::EitherOfMatcher.558" }
%"class.testing::internal::EitherOfMatcher.557" = type { %"class.testing::internal::LeMatcher.139", %"class.testing::internal::GtMatcher" }
%"class.testing::internal::GtMatcher" = type { %"class.testing::internal::ComparisonBase.134" }
%"class.testing::internal::ComparisonBase.134" = type { i32 }
%"class.testing::internal::EitherOfMatcher.558" = type { i32, %"class.testing::internal::EitherOfMatcher.559" }
%"class.testing::internal::EitherOfMatcher.559" = type { i32, i32 }
%"class.testing::internal::EitherOfMatcher.560" = type { %"class.testing::internal::EitherOfMatcher.559", %"class.testing::internal::EitherOfMatcher.559" }
%"class.testing::internal::EitherOfMatcher.561" = type { %"class.testing::internal::EitherOfMatcher.559", %"class.testing::internal::EitherOfMatcher.558" }
%"class.testing::internal::EitherOfMatcher.562" = type { %"class.testing::internal::EitherOfMatcher.558", %"class.testing::internal::EitherOfMatcher.558" }
%"class.testing::internal::EitherOfMatcher.563" = type { %"class.testing::internal::EitherOfMatcher.558", %"class.testing::internal::EitherOfMatcher.560" }
%"class.testing::internal::EitherOfMatcher.564" = type { %"class.testing::internal::EitherOfMatcher.560", %"class.testing::internal::EitherOfMatcher.560" }
%"class.testing::internal::EitherOfMatcher.565" = type { %"class.testing::internal::EitherOfMatcher.560", %"class.testing::internal::EitherOfMatcher.561" }
%"class.testing::internal::EitherOfMatcher.566" = type { %"class.testing::internal::EitherOfMatcher.561", %"class.testing::internal::EitherOfMatcher.561" }

@.str.5 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.671 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.677 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.723 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.724 = external hidden unnamed_addr constant [14 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

declare void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2

declare void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef, i32 noundef, ptr noundef) unnamed_addr #2

declare void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

; Function Attrs: nounwind
declare void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef) unnamed_addr #5 align 2

declare void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN7testing2EqIiEENS_8internal9EqMatcherIT_EES3_(i32 noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN7testing2GeIiEENS_8internal9GeMatcherIT_EES3_(i32 noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN7testing2GtIiEENS_8internal9GtMatcherIT_EES3_(i32 noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN7testing2LeIiEENS_8internal9LeMatcherIT_EES3_(i32 noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN7testing2LtIiEENS_8internal9LtMatcherIT_EES3_(i32 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing7MatcherIiEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN7testing7MatcherIiEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7testing19gmock_matchers_test36AnyOfTest_MatchesWhenAnyMatches_Test8TestBodyEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(16) %0) unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.testing::Matcher", align 8
  %3 = alloca %"class.testing::Matcher", align 8
  %4 = alloca %"class.testing::internal::EitherOfMatcher", align 8
  %5 = alloca %"class.testing::AssertionResult", align 8
  %6 = alloca i8, align 1
  %7 = alloca %"class.testing::Message", align 8
  %8 = alloca %"class.testing::internal::AssertHelper", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.testing::AssertionResult", align 8
  %11 = alloca i8, align 1
  %12 = alloca %"class.testing::Message", align 8
  %13 = alloca %"class.testing::internal::AssertHelper", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.testing::AssertionResult", align 8
  %16 = alloca i8, align 1
  %17 = alloca %"class.testing::Message", align 8
  %18 = alloca %"class.testing::internal::AssertHelper", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.testing::Matcher", align 8
  %21 = alloca %"class.testing::internal::EitherOfMatcher.552", align 8
  %22 = alloca %"class.testing::AssertionResult", align 8
  %23 = alloca i8, align 1
  %24 = alloca %"class.testing::Message", align 8
  %25 = alloca %"class.testing::internal::AssertHelper", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.testing::AssertionResult", align 8
  %28 = alloca i8, align 1
  %29 = alloca %"class.testing::Message", align 8
  %30 = alloca %"class.testing::internal::AssertHelper", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.testing::AssertionResult", align 8
  %33 = alloca i8, align 1
  %34 = alloca %"class.testing::Message", align 8
  %35 = alloca %"class.testing::internal::AssertHelper", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.testing::AssertionResult", align 8
  %38 = alloca i8, align 1
  %39 = alloca %"class.testing::Message", align 8
  %40 = alloca %"class.testing::internal::AssertHelper", align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.testing::Matcher", align 8
  %43 = alloca %"class.testing::internal::EitherOfMatcher.554", align 8
  %44 = alloca %"class.testing::AssertionResult", align 8
  %45 = alloca i8, align 1
  %46 = alloca %"class.testing::Message", align 8
  %47 = alloca %"class.testing::internal::AssertHelper", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.testing::AssertionResult", align 8
  %50 = alloca i8, align 1
  %51 = alloca %"class.testing::Message", align 8
  %52 = alloca %"class.testing::internal::AssertHelper", align 8
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.testing::AssertionResult", align 8
  %55 = alloca i8, align 1
  %56 = alloca %"class.testing::Message", align 8
  %57 = alloca %"class.testing::internal::AssertHelper", align 8
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.testing::AssertionResult", align 8
  %60 = alloca i8, align 1
  %61 = alloca %"class.testing::Message", align 8
  %62 = alloca %"class.testing::internal::AssertHelper", align 8
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.testing::AssertionResult", align 8
  %65 = alloca i8, align 1
  %66 = alloca %"class.testing::Message", align 8
  %67 = alloca %"class.testing::internal::AssertHelper", align 8
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca %"class.testing::Matcher", align 8
  %70 = alloca %"class.testing::internal::EitherOfMatcher.556", align 4
  %71 = alloca %"class.testing::AssertionResult", align 8
  %72 = alloca i8, align 1
  %73 = alloca %"class.testing::Message", align 8
  %74 = alloca %"class.testing::internal::AssertHelper", align 8
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.testing::AssertionResult", align 8
  %77 = alloca i8, align 1
  %78 = alloca %"class.testing::Message", align 8
  %79 = alloca %"class.testing::internal::AssertHelper", align 8
  %80 = alloca %"class.std::__cxx11::basic_string", align 8
  %81 = alloca %"class.testing::AssertionResult", align 8
  %82 = alloca i8, align 1
  %83 = alloca %"class.testing::Message", align 8
  %84 = alloca %"class.testing::internal::AssertHelper", align 8
  %85 = alloca %"class.std::__cxx11::basic_string", align 8
  %86 = alloca %"class.testing::AssertionResult", align 8
  %87 = alloca i8, align 1
  %88 = alloca %"class.testing::Message", align 8
  %89 = alloca %"class.testing::internal::AssertHelper", align 8
  %90 = alloca %"class.std::__cxx11::basic_string", align 8
  %91 = alloca %"class.testing::Matcher", align 8
  %92 = alloca %"class.testing::internal::EitherOfMatcher.559", align 8
  %93 = alloca %"class.testing::Matcher", align 8
  %94 = alloca %"class.testing::internal::EitherOfMatcher.558", align 8
  %95 = alloca %"class.testing::Matcher", align 8
  %96 = alloca %"class.testing::internal::EitherOfMatcher.560", align 8
  %97 = alloca %"class.testing::Matcher", align 8
  %98 = alloca %"class.testing::internal::EitherOfMatcher.561", align 4
  %99 = alloca %"class.testing::Matcher", align 8
  %100 = alloca %"class.testing::internal::EitherOfMatcher.562", align 4
  %101 = alloca %"class.testing::Matcher", align 8
  %102 = alloca %"class.testing::internal::EitherOfMatcher.563", align 4
  %103 = alloca %"class.testing::Matcher", align 8
  %104 = alloca %"class.testing::internal::EitherOfMatcher.564", align 4
  %105 = alloca %"class.testing::Matcher", align 8
  %106 = alloca %"class.testing::internal::EitherOfMatcher.565", align 4
  %107 = alloca %"class.testing::Matcher", align 8
  %108 = alloca %"class.testing::internal::EitherOfMatcher.566", align 4
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) #7
  call void @_ZN7testing7MatcherIiEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #7
  %109 = invoke i32 @_ZN7testing2LeIiEENS_8internal9LeMatcherIT_EES3_(i32 noundef 1)
          to label %110 unwind label %123

110:                                              ; preds = %1
  %111 = invoke i32 @_ZN7testing2GeIiEENS_8internal9GeMatcherIT_EES3_(i32 noundef 3)
          to label %112 unwind label %123

112:                                              ; preds = %110
  %113 = invoke i64 @_ZN7testing5AnyOfINS_8internal9LeMatcherIiEENS1_9GeMatcherIiEEEENS1_12AnyOfResult2IT_T0_E4typeES7_S8_(i32 %109, i32 %111)
          to label %114 unwind label %123

114:                                              ; preds = %112
  store i64 %113, ptr %4, align 8
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS0_9LeMatcherIiEENS0_9GeMatcherIiEEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind nonnull writable sret(%"class.testing::Matcher") align 8 %3, ptr noundef nonnull align 4 dereferenceable(8) %4)
          to label %115 unwind label %123

115:                                              ; preds = %114
  %116 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN7testing7MatcherIiEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %117 unwind label %125

117:                                              ; preds = %115
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #7
  %118 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef 1)
          to label %119 unwind label %128

119:                                              ; preds = %117
  %120 = zext i1 %118 to i8
  store i8 %120, ptr %6, align 1, !tbaa !5
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 1 dereferenceable(1) %6, ptr noundef null)
          to label %121 unwind label %128

121:                                              ; preds = %119
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #7
  %122 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  br i1 %122, label %147, label %130

123:                                              ; preds = %114, %112, %110, %1
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %127

125:                                              ; preds = %115
  %126 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  br label %127

127:                                              ; preds = %125, %123
  %.pn = phi { ptr, i32 } [ %126, %125 ], [ %124, %123 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #7
  br label %671

128:                                              ; preds = %119, %117
  %129 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #7
  br label %153

130:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %131 unwind label %136

131:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull @.str.677, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.18)
          to label %132 unwind label %138

132:                                              ; preds = %131
  %133 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef 1, ptr noundef nonnull @.str.5, i32 noundef 2258, ptr noundef %133)
          to label %134 unwind label %140

134:                                              ; preds = %132
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %135 unwind label %142

135:                                              ; preds = %134
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  br label %147

136:                                              ; preds = %130
  %137 = landingpad { ptr, i32 }
          cleanup
  br label %146

138:                                              ; preds = %131
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %145

140:                                              ; preds = %132
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %144

142:                                              ; preds = %134
  %143 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  br label %144

144:                                              ; preds = %142, %140
  %.pn96 = phi { ptr, i32 } [ %143, %142 ], [ %141, %140 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %145

145:                                              ; preds = %144, %138
  %.pn96.pn = phi { ptr, i32 } [ %.pn96, %144 ], [ %139, %138 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #7
  br label %146

146:                                              ; preds = %145, %136
  %.pn96.pn.pn = phi { ptr, i32 } [ %.pn96.pn, %145 ], [ %137, %136 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #7
  br label %153

147:                                              ; preds = %121, %135
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #7
  %148 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef 4)
          to label %149 unwind label %154

149:                                              ; preds = %147
  %150 = zext i1 %148 to i8
  store i8 %150, ptr %11, align 1, !tbaa !5
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 1 dereferenceable(1) %11, ptr noundef null)
          to label %151 unwind label %154

151:                                              ; preds = %149
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #7
  %152 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
  br i1 %152, label %173, label %156

153:                                              ; preds = %146, %128
  %.pn96.pn.pn.pn = phi { ptr, i32 } [ %.pn96.pn.pn, %146 ], [ %129, %128 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #7
  br label %671

154:                                              ; preds = %149, %147
  %155 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #7
  br label %180

156:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %157 unwind label %162

157:                                              ; preds = %156
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.18)
          to label %158 unwind label %164

158:                                              ; preds = %157
  %159 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %13, i32 noundef 1, ptr noundef nonnull @.str.5, i32 noundef 2259, ptr noundef %159)
          to label %160 unwind label %166

160:                                              ; preds = %158
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %161 unwind label %168

161:                                              ; preds = %160
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  br label %173

162:                                              ; preds = %156
  %163 = landingpad { ptr, i32 }
          cleanup
  br label %172

164:                                              ; preds = %157
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %171

166:                                              ; preds = %158
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %170

168:                                              ; preds = %160
  %169 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  br label %170

170:                                              ; preds = %168, %166
  %.pn101 = phi { ptr, i32 } [ %169, %168 ], [ %167, %166 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  br label %171

171:                                              ; preds = %170, %164
  %.pn101.pn = phi { ptr, i32 } [ %.pn101, %170 ], [ %165, %164 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  br label %172

172:                                              ; preds = %171, %162
  %.pn101.pn.pn = phi { ptr, i32 } [ %.pn101.pn, %171 ], [ %163, %162 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #7
  br label %180

173:                                              ; preds = %151, %161
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #7
  %174 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef 2)
          to label %175 unwind label %181

175:                                              ; preds = %173
  %176 = xor i1 %174, true
  %177 = zext i1 %176 to i8
  store i8 %177, ptr %16, align 1, !tbaa !5
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 1 dereferenceable(1) %16, ptr noundef null)
          to label %178 unwind label %181

178:                                              ; preds = %175
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #7
  %179 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
  br i1 %179, label %200, label %183

180:                                              ; preds = %172, %154
  %.pn101.pn.pn.pn = phi { ptr, i32 } [ %.pn101.pn.pn, %172 ], [ %155, %154 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  br label %671

181:                                              ; preds = %175, %173
  %182 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #7
  br label %217

183:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %184 unwind label %189

184:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.17)
          to label %185 unwind label %191

185:                                              ; preds = %184
  %186 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %18, i32 noundef 1, ptr noundef nonnull @.str.5, i32 noundef 2260, ptr noundef %186)
          to label %187 unwind label %193

187:                                              ; preds = %185
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %188 unwind label %195

188:                                              ; preds = %187
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  br label %200

189:                                              ; preds = %183
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %199

191:                                              ; preds = %184
  %192 = landingpad { ptr, i32 }
          cleanup
  br label %198

193:                                              ; preds = %185
  %194 = landingpad { ptr, i32 }
          cleanup
  br label %197

195:                                              ; preds = %187
  %196 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #7
  br label %197

197:                                              ; preds = %195, %193
  %.pn106 = phi { ptr, i32 } [ %196, %195 ], [ %194, %193 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %198

198:                                              ; preds = %197, %191
  %.pn106.pn = phi { ptr, i32 } [ %.pn106, %197 ], [ %192, %191 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  br label %199

199:                                              ; preds = %198, %189
  %.pn106.pn.pn = phi { ptr, i32 } [ %.pn106.pn, %198 ], [ %190, %189 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #7
  br label %217

200:                                              ; preds = %178, %188
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %21) #7
  %201 = invoke i32 @_ZN7testing2LtIiEENS_8internal9LtMatcherIT_EES3_(i32 noundef 0)
          to label %202 unwind label %218

202:                                              ; preds = %200
  %203 = invoke i32 @_ZN7testing2EqIiEENS_8internal9EqMatcherIT_EES3_(i32 noundef 1)
          to label %204 unwind label %218

204:                                              ; preds = %202
  %205 = invoke i32 @_ZN7testing2EqIiEENS_8internal9EqMatcherIT_EES3_(i32 noundef 2)
          to label %206 unwind label %218

206:                                              ; preds = %204
  %207 = invoke { i64, i32 } @_ZN7testing5AnyOfINS_8internal9LtMatcherIiEENS1_9EqMatcherIiEES5_EENS1_12AnyOfResult3IT_T0_T1_E4typeES7_S8_S9_(i32 %201, i32 %203, i32 %205)
          to label %208 unwind label %218

208:                                              ; preds = %206
  %.fca.0.extract7 = extractvalue { i64, i32 } %207, 0
  %.fca.1.extract8 = extractvalue { i64, i32 } %207, 1
  store i64 %.fca.0.extract7, ptr %21, align 8
  %.sroa.210.0..sroa_idx = getelementptr inbounds i8, ptr %21, i64 8
  store i32 %.fca.1.extract8, ptr %.sroa.210.0..sroa_idx, align 8
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS0_9LtMatcherIiEENS1_INS0_9EqMatcherIiEES5_EEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind nonnull writable sret(%"class.testing::Matcher") align 8 %20, ptr noundef nonnull align 4 dereferenceable(12) %21)
          to label %209 unwind label %218

209:                                              ; preds = %208
  %210 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN7testing7MatcherIiEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %211 unwind label %220

211:                                              ; preds = %209
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #7
  %212 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef -1)
          to label %213 unwind label %223

213:                                              ; preds = %211
  %214 = zext i1 %212 to i8
  store i8 %214, ptr %23, align 1, !tbaa !5
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 1 dereferenceable(1) %23, ptr noundef null)
          to label %215 unwind label %223

215:                                              ; preds = %213
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  %216 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %22)
  br i1 %216, label %242, label %225

217:                                              ; preds = %199, %181
  %.pn106.pn.pn.pn = phi { ptr, i32 } [ %.pn106.pn.pn, %199 ], [ %182, %181 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #7
  br label %671

218:                                              ; preds = %208, %206, %204, %202, %200
  %219 = landingpad { ptr, i32 }
          cleanup
  br label %222

220:                                              ; preds = %209
  %221 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  br label %222

222:                                              ; preds = %220, %218
  %.pn111 = phi { ptr, i32 } [ %221, %220 ], [ %219, %218 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #7
  br label %671

223:                                              ; preds = %213, %211
  %224 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  br label %248

225:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %226 unwind label %231

226:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull @.str.723, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.18)
          to label %227 unwind label %233

227:                                              ; preds = %226
  %228 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %25, i32 noundef 1, ptr noundef nonnull @.str.5, i32 noundef 2263, ptr noundef %228)
          to label %229 unwind label %235

229:                                              ; preds = %227
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %230 unwind label %237

230:                                              ; preds = %229
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  br label %242

231:                                              ; preds = %225
  %232 = landingpad { ptr, i32 }
          cleanup
  br label %241

233:                                              ; preds = %226
  %234 = landingpad { ptr, i32 }
          cleanup
  br label %240

235:                                              ; preds = %227
  %236 = landingpad { ptr, i32 }
          cleanup
  br label %239

237:                                              ; preds = %229
  %238 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  br label %239

239:                                              ; preds = %237, %235
  %.pn113 = phi { ptr, i32 } [ %238, %237 ], [ %236, %235 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  br label %240

240:                                              ; preds = %239, %233
  %.pn113.pn = phi { ptr, i32 } [ %.pn113, %239 ], [ %234, %233 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  br label %241

241:                                              ; preds = %240, %231
  %.pn113.pn.pn = phi { ptr, i32 } [ %.pn113.pn, %240 ], [ %232, %231 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  br label %248

242:                                              ; preds = %215, %230
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #7
  %243 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef 1)
          to label %244 unwind label %249

244:                                              ; preds = %242
  %245 = zext i1 %243 to i8
  store i8 %245, ptr %28, align 1, !tbaa !5
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 1 dereferenceable(1) %28, ptr noundef null)
          to label %246 unwind label %249

246:                                              ; preds = %244
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #7
  %247 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %27)
  br i1 %247, label %268, label %251

248:                                              ; preds = %241, %223
  %.pn113.pn.pn.pn = phi { ptr, i32 } [ %.pn113.pn.pn, %241 ], [ %224, %223 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #7
  br label %671

249:                                              ; preds = %244, %242
  %250 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #7
  br label %274

251:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %252 unwind label %257

252:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull @.str.677, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.18)
          to label %253 unwind label %259

253:                                              ; preds = %252
  %254 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %30, i32 noundef 1, ptr noundef nonnull @.str.5, i32 noundef 2264, ptr noundef %254)
          to label %255 unwind label %261

255:                                              ; preds = %253
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %256 unwind label %263

256:                                              ; preds = %255
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  br label %268

257:                                              ; preds = %251
  %258 = landingpad { ptr, i32 }
          cleanup
  br label %267

259:                                              ; preds = %252
  %260 = landingpad { ptr, i32 }
          cleanup
  br label %266

261:                                              ; preds = %253
  %262 = landingpad { ptr, i32 }
          cleanup
  br label %265

263:                                              ; preds = %255
  %264 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  br label %265

265:                                              ; preds = %263, %261
  %.pn118 = phi { ptr, i32 } [ %264, %263 ], [ %262, %261 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  br label %266

266:                                              ; preds = %265, %259
  %.pn118.pn = phi { ptr, i32 } [ %.pn118, %265 ], [ %260, %259 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #7
  br label %267

267:                                              ; preds = %266, %257
  %.pn118.pn.pn = phi { ptr, i32 } [ %.pn118.pn, %266 ], [ %258, %257 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #7
  br label %274

268:                                              ; preds = %246, %256
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #7
  %269 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef 2)
          to label %270 unwind label %275

270:                                              ; preds = %268
  %271 = zext i1 %269 to i8
  store i8 %271, ptr %33, align 1, !tbaa !5
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 1 dereferenceable(1) %33, ptr noundef null)
          to label %272 unwind label %275

272:                                              ; preds = %270
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #7
  %273 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %32)
  br i1 %273, label %294, label %277

274:                                              ; preds = %267, %249
  %.pn118.pn.pn.pn = phi { ptr, i32 } [ %.pn118.pn.pn, %267 ], [ %250, %249 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #7
  br label %671

275:                                              ; preds = %270, %268
  %276 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #7
  br label %301

277:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %278 unwind label %283

278:                                              ; preds = %277
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.18)
          to label %279 unwind label %285

279:                                              ; preds = %278
  %280 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %35, i32 noundef 1, ptr noundef nonnull @.str.5, i32 noundef 2265, ptr noundef %280)
          to label %281 unwind label %287

281:                                              ; preds = %279
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %282 unwind label %289

282:                                              ; preds = %281
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  br label %294

283:                                              ; preds = %277
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %293

285:                                              ; preds = %278
  %286 = landingpad { ptr, i32 }
          cleanup
  br label %292

287:                                              ; preds = %279
  %288 = landingpad { ptr, i32 }
          cleanup
  br label %291

289:                                              ; preds = %281
  %290 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  br label %291

291:                                              ; preds = %289, %287
  %.pn123 = phi { ptr, i32 } [ %290, %289 ], [ %288, %287 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  br label %292

292:                                              ; preds = %291, %285
  %.pn123.pn = phi { ptr, i32 } [ %.pn123, %291 ], [ %286, %285 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  br label %293

293:                                              ; preds = %292, %283
  %.pn123.pn.pn = phi { ptr, i32 } [ %.pn123.pn, %292 ], [ %284, %283 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #7
  br label %301

294:                                              ; preds = %272, %282
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #7
  %295 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef 0)
          to label %296 unwind label %302

296:                                              ; preds = %294
  %297 = xor i1 %295, true
  %298 = zext i1 %297 to i8
  store i8 %298, ptr %38, align 1, !tbaa !5
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull align 1 dereferenceable(1) %38, ptr noundef null)
          to label %299 unwind label %302

299:                                              ; preds = %296
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #7
  %300 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
  br i1 %300, label %321, label %304

301:                                              ; preds = %293, %275
  %.pn123.pn.pn.pn = phi { ptr, i32 } [ %.pn123.pn.pn, %293 ], [ %276, %275 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #7
  br label %671

302:                                              ; preds = %296, %294
  %303 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #7
  br label %343

304:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %305 unwind label %310

305:                                              ; preds = %304
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull @.str.671, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.17)
          to label %306 unwind label %312

306:                                              ; preds = %305
  %307 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %40, i32 noundef 1, ptr noundef nonnull @.str.5, i32 noundef 2266, ptr noundef %307)
          to label %308 unwind label %314

308:                                              ; preds = %306
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %309 unwind label %316

309:                                              ; preds = %308
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  br label %321

310:                                              ; preds = %304
  %311 = landingpad { ptr, i32 }
          cleanup
  br label %320

312:                                              ; preds = %305
  %313 = landingpad { ptr, i32 }
          cleanup
  br label %319

314:                                              ; preds = %306
  %315 = landingpad { ptr, i32 }
          cleanup
  br label %318

316:                                              ; preds = %308
  %317 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  br label %318

318:                                              ; preds = %316, %314
  %.pn128 = phi { ptr, i32 } [ %317, %316 ], [ %315, %314 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  br label %319

319:                                              ; preds = %318, %312
  %.pn128.pn = phi { ptr, i32 } [ %.pn128, %318 ], [ %313, %312 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  br label %320

320:                                              ; preds = %319, %310
  %.pn128.pn.pn = phi { ptr, i32 } [ %.pn128.pn, %319 ], [ %311, %310 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #7
  br label %343

321:                                              ; preds = %299, %309
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %42) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #7
  %322 = invoke i32 @_ZN7testing2LtIiEENS_8internal9LtMatcherIT_EES3_(i32 noundef 0)
          to label %323 unwind label %344

323:                                              ; preds = %321
  %324 = invoke i32 @_ZN7testing2EqIiEENS_8internal9EqMatcherIT_EES3_(i32 noundef 1)
          to label %325 unwind label %344

325:                                              ; preds = %323
  %326 = invoke i32 @_ZN7testing2EqIiEENS_8internal9EqMatcherIT_EES3_(i32 noundef 2)
          to label %327 unwind label %344

327:                                              ; preds = %325
  %328 = invoke i32 @_ZN7testing2EqIiEENS_8internal9EqMatcherIT_EES3_(i32 noundef 3)
          to label %329 unwind label %344

329:                                              ; preds = %327
  %330 = invoke { i64, i64 } @_ZN7testing5AnyOfINS_8internal9LtMatcherIiEENS1_9EqMatcherIiEES5_S5_EENS1_12AnyOfResult4IT_T0_T1_T2_E4typeES7_S8_S9_SA_(i32 %322, i32 %324, i32 %326, i32 %328)
          to label %331 unwind label %344

331:                                              ; preds = %329
  %332 = extractvalue { i64, i64 } %330, 0
  store i64 %332, ptr %43, align 8
  %333 = getelementptr inbounds i8, ptr %43, i64 8
  %334 = extractvalue { i64, i64 } %330, 1
  store i64 %334, ptr %333, align 8
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_INS0_9LtMatcherIiEENS0_9EqMatcherIiEEEENS1_IS5_S5_EEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind nonnull writable sret(%"class.testing::Matcher") align 8 %42, ptr noundef nonnull align 4 dereferenceable(16) %43)
          to label %335 unwind label %344

335:                                              ; preds = %331
  %336 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN7testing7MatcherIiEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %42)
          to label %337 unwind label %346

337:                                              ; preds = %335
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %42) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %45) #7
  %338 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef -1)
          to label %339 unwind label %349

339:                                              ; preds = %337
  %340 = zext i1 %338 to i8
  store i8 %340, ptr %45, align 1, !tbaa !5
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef nonnull align 1 dereferenceable(1) %45, ptr noundef null)
          to label %341 unwind label %349

341:                                              ; preds = %339
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #7
  %342 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %44)
  br i1 %342, label %368, label %351

343:                                              ; preds = %320, %302
  %.pn128.pn.pn.pn = phi { ptr, i32 } [ %.pn128.pn.pn, %320 ], [ %303, %302 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #7
  br label %671

344:                                              ; preds = %331, %329, %327, %325, %323, %321
  %345 = landingpad { ptr, i32 }
          cleanup
  br label %348

346:                                              ; preds = %335
  %347 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #7
  br label %348

348:                                              ; preds = %346, %344
  %.pn133 = phi { ptr, i32 } [ %347, %346 ], [ %345, %344 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %42) #7
  br label %671

349:                                              ; preds = %339, %337
  %350 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #7
  br label %374

351:                                              ; preds = %341
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %352 unwind label %357

352:                                              ; preds = %351
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %48) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %48, ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef nonnull @.str.723, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.18)
          to label %353 unwind label %359

353:                                              ; preds = %352
  %354 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %47, i32 noundef 1, ptr noundef nonnull @.str.5, i32 noundef 2269, ptr noundef %354)
          to label %355 unwind label %361

355:                                              ; preds = %353
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %356 unwind label %363

356:                                              ; preds = %355
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #7
  br label %368

357:                                              ; preds = %351
  %358 = landingpad { ptr, i32 }
          cleanup
  br label %367

359:                                              ; preds = %352
  %360 = landingpad { ptr, i32 }
          cleanup
  br label %366

361:                                              ; preds = %353
  %362 = landingpad { ptr, i32 }
          cleanup
  br label %365

363:                                              ; preds = %355
  %364 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #7
  br label %365

365:                                              ; preds = %363, %361
  %.pn135 = phi { ptr, i32 } [ %364, %363 ], [ %362, %361 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  br label %366

366:                                              ; preds = %365, %359
  %.pn135.pn = phi { ptr, i32 } [ %.pn135, %365 ], [ %360, %359 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  br label %367

367:                                              ; preds = %366, %357
  %.pn135.pn.pn = phi { ptr, i32 } [ %.pn135.pn, %366 ], [ %358, %357 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #7
  br label %374

368:                                              ; preds = %341, %356
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #7
  %369 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef 1)
          to label %370 unwind label %375

370:                                              ; preds = %368
  %371 = zext i1 %369 to i8
  store i8 %371, ptr %50, align 1, !tbaa !5
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 1 dereferenceable(1) %50, ptr noundef null)
          to label %372 unwind label %375

372:                                              ; preds = %370
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #7
  %373 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %49)
  br i1 %373, label %394, label %377

374:                                              ; preds = %367, %349
  %.pn135.pn.pn.pn = phi { ptr, i32 } [ %.pn135.pn.pn, %367 ], [ %350, %349 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #7
  br label %671

375:                                              ; preds = %370, %368
  %376 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #7
  br label %400

377:                                              ; preds = %372
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %378 unwind label %383

378:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %53) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %53, ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull @.str.677, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.18)
          to label %379 unwind label %385

379:                                              ; preds = %378
  %380 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %52, i32 noundef 1, ptr noundef nonnull @.str.5, i32 noundef 2270, ptr noundef %380)
          to label %381 unwind label %387

381:                                              ; preds = %379
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %382 unwind label %389

382:                                              ; preds = %381
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #7
  br label %394

383:                                              ; preds = %377
  %384 = landingpad { ptr, i32 }
          cleanup
  br label %393

385:                                              ; preds = %378
  %386 = landingpad { ptr, i32 }
          cleanup
  br label %392

387:                                              ; preds = %379
  %388 = landingpad { ptr, i32 }
          cleanup
  br label %391

389:                                              ; preds = %381
  %390 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #7
  br label %391

391:                                              ; preds = %389, %387
  %.pn140 = phi { ptr, i32 } [ %390, %389 ], [ %388, %387 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  br label %392

392:                                              ; preds = %391, %385
  %.pn140.pn = phi { ptr, i32 } [ %.pn140, %391 ], [ %386, %385 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #7
  br label %393

393:                                              ; preds = %392, %383
  %.pn140.pn.pn = phi { ptr, i32 } [ %.pn140.pn, %392 ], [ %384, %383 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #7
  br label %400

394:                                              ; preds = %372, %382
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %54) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %55) #7
  %395 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef 2)
          to label %396 unwind label %401

396:                                              ; preds = %394
  %397 = zext i1 %395 to i8
  store i8 %397, ptr %55, align 1, !tbaa !5
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %54, ptr noundef nonnull align 1 dereferenceable(1) %55, ptr noundef null)
          to label %398 unwind label %401

398:                                              ; preds = %396
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #7
  %399 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %54)
  br i1 %399, label %420, label %403

400:                                              ; preds = %393, %375
  %.pn140.pn.pn.pn = phi { ptr, i32 } [ %.pn140.pn.pn, %393 ], [ %376, %375 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #7
  br label %671

401:                                              ; preds = %396, %394
  %402 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #7
  br label %426

403:                                              ; preds = %398
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %404 unwind label %409

404:                                              ; preds = %403
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %58) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %58, ptr noundef nonnull align 8 dereferenceable(16) %54, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.18)
          to label %405 unwind label %411

405:                                              ; preds = %404
  %406 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %57, i32 noundef 1, ptr noundef nonnull @.str.5, i32 noundef 2271, ptr noundef %406)
          to label %407 unwind label %413

407:                                              ; preds = %405
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %408 unwind label %415

408:                                              ; preds = %407
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #7
  br label %420

409:                                              ; preds = %403
  %410 = landingpad { ptr, i32 }
          cleanup
  br label %419

411:                                              ; preds = %404
  %412 = landingpad { ptr, i32 }
          cleanup
  br label %418

413:                                              ; preds = %405
  %414 = landingpad { ptr, i32 }
          cleanup
  br label %417

415:                                              ; preds = %407
  %416 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #7
  br label %417

417:                                              ; preds = %415, %413
  %.pn145 = phi { ptr, i32 } [ %416, %415 ], [ %414, %413 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  br label %418

418:                                              ; preds = %417, %411
  %.pn145.pn = phi { ptr, i32 } [ %.pn145, %417 ], [ %412, %411 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #7
  br label %419

419:                                              ; preds = %418, %409
  %.pn145.pn.pn = phi { ptr, i32 } [ %.pn145.pn, %418 ], [ %410, %409 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #7
  br label %426

420:                                              ; preds = %398, %408
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %59) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %60) #7
  %421 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef 3)
          to label %422 unwind label %427

422:                                              ; preds = %420
  %423 = zext i1 %421 to i8
  store i8 %423, ptr %60, align 1, !tbaa !5
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %59, ptr noundef nonnull align 1 dereferenceable(1) %60, ptr noundef null)
          to label %424 unwind label %427

424:                                              ; preds = %422
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #7
  %425 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %59)
  br i1 %425, label %446, label %429

426:                                              ; preds = %419, %401
  %.pn145.pn.pn.pn = phi { ptr, i32 } [ %.pn145.pn.pn, %419 ], [ %402, %401 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #7
  br label %671

427:                                              ; preds = %422, %420
  %428 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #7
  br label %453

429:                                              ; preds = %424
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %430 unwind label %435

430:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %63) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %63, ptr noundef nonnull align 8 dereferenceable(16) %59, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.18)
          to label %431 unwind label %437

431:                                              ; preds = %430
  %432 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %63) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %62, i32 noundef 1, ptr noundef nonnull @.str.5, i32 noundef 2272, ptr noundef %432)
          to label %433 unwind label %439

433:                                              ; preds = %431
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %434 unwind label %441

434:                                              ; preds = %433
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #7
  br label %446

435:                                              ; preds = %429
  %436 = landingpad { ptr, i32 }
          cleanup
  br label %445

437:                                              ; preds = %430
  %438 = landingpad { ptr, i32 }
          cleanup
  br label %444

439:                                              ; preds = %431
  %440 = landingpad { ptr, i32 }
          cleanup
  br label %443

441:                                              ; preds = %433
  %442 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #7
  br label %443

443:                                              ; preds = %441, %439
  %.pn150 = phi { ptr, i32 } [ %442, %441 ], [ %440, %439 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #7
  br label %444

444:                                              ; preds = %443, %437
  %.pn150.pn = phi { ptr, i32 } [ %.pn150, %443 ], [ %438, %437 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #7
  br label %445

445:                                              ; preds = %444, %435
  %.pn150.pn.pn = phi { ptr, i32 } [ %.pn150.pn, %444 ], [ %436, %435 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #7
  br label %453

446:                                              ; preds = %424, %434
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %59) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %64) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %65) #7
  %447 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef 0)
          to label %448 unwind label %454

448:                                              ; preds = %446
  %449 = xor i1 %447, true
  %450 = zext i1 %449 to i8
  store i8 %450, ptr %65, align 1, !tbaa !5
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 1 dereferenceable(1) %65, ptr noundef null)
          to label %451 unwind label %454

451:                                              ; preds = %448
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %65) #7
  %452 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %64)
  br i1 %452, label %473, label %456

453:                                              ; preds = %445, %427
  %.pn150.pn.pn.pn = phi { ptr, i32 } [ %.pn150.pn.pn, %445 ], [ %428, %427 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %59) #7
  br label %671

454:                                              ; preds = %448, %446
  %455 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %65) #7
  br label %487

456:                                              ; preds = %451
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %66) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %66)
          to label %457 unwind label %462

457:                                              ; preds = %456
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %68) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %68, ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull @.str.671, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.17)
          to label %458 unwind label %464

458:                                              ; preds = %457
  %459 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %67, i32 noundef 1, ptr noundef nonnull @.str.5, i32 noundef 2273, ptr noundef %459)
          to label %460 unwind label %466

460:                                              ; preds = %458
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %66)
          to label %461 unwind label %468

461:                                              ; preds = %460
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #7
  br label %473

462:                                              ; preds = %456
  %463 = landingpad { ptr, i32 }
          cleanup
  br label %472

464:                                              ; preds = %457
  %465 = landingpad { ptr, i32 }
          cleanup
  br label %471

466:                                              ; preds = %458
  %467 = landingpad { ptr, i32 }
          cleanup
  br label %470

468:                                              ; preds = %460
  %469 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #7
  br label %470

470:                                              ; preds = %468, %466
  %.pn155 = phi { ptr, i32 } [ %469, %468 ], [ %467, %466 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  br label %471

471:                                              ; preds = %470, %464
  %.pn155.pn = phi { ptr, i32 } [ %.pn155, %470 ], [ %465, %464 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #7
  br label %472

472:                                              ; preds = %471, %462
  %.pn155.pn.pn = phi { ptr, i32 } [ %.pn155.pn, %471 ], [ %463, %462 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #7
  br label %487

473:                                              ; preds = %451, %461
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %64) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %69) #7
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %70) #7
  %474 = invoke i32 @_ZN7testing2LeIiEENS_8internal9LeMatcherIT_EES3_(i32 noundef 0)
          to label %475 unwind label %488

475:                                              ; preds = %473
  %476 = invoke i32 @_ZN7testing2GtIiEENS_8internal9GtMatcherIT_EES3_(i32 noundef 10)
          to label %477 unwind label %488

477:                                              ; preds = %475
  invoke void @_ZN7testing5AnyOfINS_8internal9LeMatcherIiEENS1_9GtMatcherIiEEiiiEENS1_12AnyOfResult5IT_T0_T1_T2_T3_E4typeES7_S8_S9_SA_SB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::internal::EitherOfMatcher.556") align 4 %70, i32 %474, i32 %476, i32 noundef 3, i32 noundef 5, i32 noundef 7)
          to label %478 unwind label %488

478:                                              ; preds = %477
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_INS0_9LeMatcherIiEENS0_9GtMatcherIiEEEENS1_IiNS1_IiiEEEEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind nonnull writable sret(%"class.testing::Matcher") align 8 %69, ptr noundef nonnull align 4 dereferenceable(20) %70)
          to label %479 unwind label %488

479:                                              ; preds = %478
  %480 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN7testing7MatcherIiEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %69)
          to label %481 unwind label %490

481:                                              ; preds = %479
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %70) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %69) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %71) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %72) #7
  %482 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef 0)
          to label %483 unwind label %493

483:                                              ; preds = %481
  %484 = zext i1 %482 to i8
  store i8 %484, ptr %72, align 1, !tbaa !5
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %71, ptr noundef nonnull align 1 dereferenceable(1) %72, ptr noundef null)
          to label %485 unwind label %493

485:                                              ; preds = %483
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #7
  %486 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %71)
  br i1 %486, label %512, label %495

487:                                              ; preds = %472, %454
  %.pn155.pn.pn.pn = phi { ptr, i32 } [ %.pn155.pn.pn, %472 ], [ %455, %454 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %64) #7
  br label %671

488:                                              ; preds = %478, %477, %475, %473
  %489 = landingpad { ptr, i32 }
          cleanup
  br label %492

490:                                              ; preds = %479
  %491 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  br label %492

492:                                              ; preds = %490, %488
  %.pn160 = phi { ptr, i32 } [ %491, %490 ], [ %489, %488 ]
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %70) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %69) #7
  br label %671

493:                                              ; preds = %483, %481
  %494 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #7
  br label %518

495:                                              ; preds = %485
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %73)
          to label %496 unwind label %501

496:                                              ; preds = %495
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %75) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %75, ptr noundef nonnull align 8 dereferenceable(16) %71, ptr noundef nonnull @.str.671, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.18)
          to label %497 unwind label %503

497:                                              ; preds = %496
  %498 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %75) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %74, i32 noundef 1, ptr noundef nonnull @.str.5, i32 noundef 2276, ptr noundef %498)
          to label %499 unwind label %505

499:                                              ; preds = %497
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull align 8 dereferenceable(8) %73)
          to label %500 unwind label %507

500:                                              ; preds = %499
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #7
  br label %512

501:                                              ; preds = %495
  %502 = landingpad { ptr, i32 }
          cleanup
  br label %511

503:                                              ; preds = %496
  %504 = landingpad { ptr, i32 }
          cleanup
  br label %510

505:                                              ; preds = %497
  %506 = landingpad { ptr, i32 }
          cleanup
  br label %509

507:                                              ; preds = %499
  %508 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #7
  br label %509

509:                                              ; preds = %507, %505
  %.pn162 = phi { ptr, i32 } [ %508, %507 ], [ %506, %505 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #7
  br label %510

510:                                              ; preds = %509, %503
  %.pn162.pn = phi { ptr, i32 } [ %.pn162, %509 ], [ %504, %503 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  br label %511

511:                                              ; preds = %510, %501
  %.pn162.pn.pn = phi { ptr, i32 } [ %.pn162.pn, %510 ], [ %502, %501 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %71) #7
  br label %518

512:                                              ; preds = %485, %500
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %71) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %76) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %77) #7
  %513 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef 11)
          to label %514 unwind label %519

514:                                              ; preds = %512
  %515 = zext i1 %513 to i8
  store i8 %515, ptr %77, align 1, !tbaa !5
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %76, ptr noundef nonnull align 1 dereferenceable(1) %77, ptr noundef null)
          to label %516 unwind label %519

516:                                              ; preds = %514
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #7
  %517 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %76)
  br i1 %517, label %538, label %521

518:                                              ; preds = %511, %493
  %.pn162.pn.pn.pn = phi { ptr, i32 } [ %.pn162.pn.pn, %511 ], [ %494, %493 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #7
  br label %671

519:                                              ; preds = %514, %512
  %520 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #7
  br label %544

521:                                              ; preds = %516
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %78) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %78)
          to label %522 unwind label %527

522:                                              ; preds = %521
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %79) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %80) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %80, ptr noundef nonnull align 8 dereferenceable(16) %76, ptr noundef nonnull @.str.724, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.18)
          to label %523 unwind label %529

523:                                              ; preds = %522
  %524 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %80) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %79, i32 noundef 1, ptr noundef nonnull @.str.5, i32 noundef 2277, ptr noundef %524)
          to label %525 unwind label %531

525:                                              ; preds = %523
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %78)
          to label %526 unwind label %533

526:                                              ; preds = %525
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #7
  br label %538

527:                                              ; preds = %521
  %528 = landingpad { ptr, i32 }
          cleanup
  br label %537

529:                                              ; preds = %522
  %530 = landingpad { ptr, i32 }
          cleanup
  br label %536

531:                                              ; preds = %523
  %532 = landingpad { ptr, i32 }
          cleanup
  br label %535

533:                                              ; preds = %525
  %534 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #7
  br label %535

535:                                              ; preds = %533, %531
  %.pn167 = phi { ptr, i32 } [ %534, %533 ], [ %532, %531 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #7
  br label %536

536:                                              ; preds = %535, %529
  %.pn167.pn = phi { ptr, i32 } [ %.pn167, %535 ], [ %530, %529 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #7
  br label %537

537:                                              ; preds = %536, %527
  %.pn167.pn.pn = phi { ptr, i32 } [ %.pn167.pn, %536 ], [ %528, %527 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %76) #7
  br label %544

538:                                              ; preds = %516, %526
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %76) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %76) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %81) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %82) #7
  %539 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef 3)
          to label %540 unwind label %545

540:                                              ; preds = %538
  %541 = zext i1 %539 to i8
  store i8 %541, ptr %82, align 1, !tbaa !5
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %81, ptr noundef nonnull align 1 dereferenceable(1) %82, ptr noundef null)
          to label %542 unwind label %545

542:                                              ; preds = %540
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %82) #7
  %543 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %81)
  br i1 %543, label %564, label %547

544:                                              ; preds = %537, %519
  %.pn167.pn.pn.pn = phi { ptr, i32 } [ %.pn167.pn.pn, %537 ], [ %520, %519 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %76) #7
  br label %671

545:                                              ; preds = %540, %538
  %546 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %82) #7
  br label %571

547:                                              ; preds = %542
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %83) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %83)
          to label %548 unwind label %553

548:                                              ; preds = %547
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %84) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %85) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %85, ptr noundef nonnull align 8 dereferenceable(16) %81, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.18)
          to label %549 unwind label %555

549:                                              ; preds = %548
  %550 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %85) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %84, i32 noundef 1, ptr noundef nonnull @.str.5, i32 noundef 2278, ptr noundef %550)
          to label %551 unwind label %557

551:                                              ; preds = %549
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(8) %83)
          to label %552 unwind label %559

552:                                              ; preds = %551
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %85) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #7
  br label %564

553:                                              ; preds = %547
  %554 = landingpad { ptr, i32 }
          cleanup
  br label %563

555:                                              ; preds = %548
  %556 = landingpad { ptr, i32 }
          cleanup
  br label %562

557:                                              ; preds = %549
  %558 = landingpad { ptr, i32 }
          cleanup
  br label %561

559:                                              ; preds = %551
  %560 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #7
  br label %561

561:                                              ; preds = %559, %557
  %.pn172 = phi { ptr, i32 } [ %560, %559 ], [ %558, %557 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #7
  br label %562

562:                                              ; preds = %561, %555
  %.pn172.pn = phi { ptr, i32 } [ %.pn172, %561 ], [ %556, %555 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %85) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #7
  br label %563

563:                                              ; preds = %562, %553
  %.pn172.pn.pn = phi { ptr, i32 } [ %.pn172.pn, %562 ], [ %554, %553 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #7
  br label %571

564:                                              ; preds = %542, %552
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %86) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %87) #7
  %565 = invoke noundef zeroext i1 @_ZNK7testing8internal11MatcherBaseIiE7MatchesEi(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef 2)
          to label %566 unwind label %572

566:                                              ; preds = %564
  %567 = xor i1 %565, true
  %568 = zext i1 %567 to i8
  store i8 %568, ptr %87, align 1, !tbaa !5
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %86, ptr noundef nonnull align 1 dereferenceable(1) %87, ptr noundef null)
          to label %569 unwind label %572

569:                                              ; preds = %566
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %87) #7
  %570 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %86)
  br i1 %570, label %591, label %574

571:                                              ; preds = %563, %545
  %.pn172.pn.pn.pn = phi { ptr, i32 } [ %.pn172.pn.pn, %563 ], [ %546, %545 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #7
  br label %671

572:                                              ; preds = %566, %564
  %573 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %87) #7
  br label %625

574:                                              ; preds = %569
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %88) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %575 unwind label %580

575:                                              ; preds = %574
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %89) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %90) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %90, ptr noundef nonnull align 8 dereferenceable(16) %86, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.17)
          to label %576 unwind label %582

576:                                              ; preds = %575
  %577 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %90) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %89, i32 noundef 1, ptr noundef nonnull @.str.5, i32 noundef 2279, ptr noundef %577)
          to label %578 unwind label %584

578:                                              ; preds = %576
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %579 unwind label %586

579:                                              ; preds = %578
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %90) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #7
  br label %591

580:                                              ; preds = %574
  %581 = landingpad { ptr, i32 }
          cleanup
  br label %590

582:                                              ; preds = %575
  %583 = landingpad { ptr, i32 }
          cleanup
  br label %589

584:                                              ; preds = %576
  %585 = landingpad { ptr, i32 }
          cleanup
  br label %588

586:                                              ; preds = %578
  %587 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #7
  br label %588

588:                                              ; preds = %586, %584
  %.pn177 = phi { ptr, i32 } [ %587, %586 ], [ %585, %584 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #7
  br label %589

589:                                              ; preds = %588, %582
  %.pn177.pn = phi { ptr, i32 } [ %.pn177, %588 ], [ %583, %582 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %90) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #7
  br label %590

590:                                              ; preds = %589, %580
  %.pn177.pn.pn = phi { ptr, i32 } [ %.pn177.pn, %589 ], [ %581, %580 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #7
  br label %625

591:                                              ; preds = %569, %579
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %91) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %92) #7
  %592 = invoke i64 @_ZN7testing5AnyOfIiiEENS_8internal12AnyOfResult2IT_T0_E4typeES3_S4_(i32 noundef 1, i32 noundef 2)
          to label %593 unwind label %626

593:                                              ; preds = %591
  store i64 %592, ptr %92, align 8
  invoke void @_ZNK7testing8internal15EitherOfMatcherIiiEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind nonnull writable sret(%"class.testing::Matcher") align 8 %91, ptr noundef nonnull align 4 dereferenceable(8) %92)
          to label %594 unwind label %626

594:                                              ; preds = %593
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(24) %91)
          to label %595 unwind label %628

595:                                              ; preds = %594
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %91) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %91) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %93) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %94) #7
  %596 = invoke { i64, i32 } @_ZN7testing5AnyOfIiiiEENS_8internal12AnyOfResult3IT_T0_T1_E4typeES3_S4_S5_(i32 noundef 1, i32 noundef 2, i32 noundef 3)
          to label %597 unwind label %631

597:                                              ; preds = %595
  %.fca.0.extract = extractvalue { i64, i32 } %596, 0
  %.fca.1.extract = extractvalue { i64, i32 } %596, 1
  store i64 %.fca.0.extract, ptr %94, align 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %94, i64 8
  store i32 %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  invoke void @_ZNK7testing8internal15EitherOfMatcherIiNS1_IiiEEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind nonnull writable sret(%"class.testing::Matcher") align 8 %93, ptr noundef nonnull align 4 dereferenceable(12) %94)
          to label %598 unwind label %631

598:                                              ; preds = %597
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(24) %93)
          to label %599 unwind label %633

599:                                              ; preds = %598
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %93) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %94) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %93) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %95) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %96) #7
  %600 = invoke { i64, i64 } @_ZN7testing5AnyOfIiiiiEENS_8internal12AnyOfResult4IT_T0_T1_T2_E4typeES3_S4_S5_S6_(i32 noundef 1, i32 noundef 2, i32 noundef 3, i32 noundef 4)
          to label %601 unwind label %636

601:                                              ; preds = %599
  %602 = extractvalue { i64, i64 } %600, 0
  store i64 %602, ptr %96, align 8
  %603 = getelementptr inbounds i8, ptr %96, i64 8
  %604 = extractvalue { i64, i64 } %600, 1
  store i64 %604, ptr %603, align 8
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_IiiEES2_EcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind nonnull writable sret(%"class.testing::Matcher") align 8 %95, ptr noundef nonnull align 4 dereferenceable(16) %96)
          to label %605 unwind label %636

605:                                              ; preds = %601
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 4, ptr noundef nonnull align 8 dereferenceable(24) %95)
          to label %606 unwind label %638

606:                                              ; preds = %605
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %95) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %95) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %97) #7
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %98) #7
  invoke void @_ZN7testing5AnyOfIiiiiiEENS_8internal12AnyOfResult5IT_T0_T1_T2_T3_E4typeES3_S4_S5_S6_S7_(ptr dead_on_unwind nonnull writable sret(%"class.testing::internal::EitherOfMatcher.561") align 4 %98, i32 noundef 1, i32 noundef 2, i32 noundef 3, i32 noundef 4, i32 noundef 5)
          to label %607 unwind label %641

607:                                              ; preds = %606
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_IiiEENS1_IiS2_EEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind nonnull writable sret(%"class.testing::Matcher") align 8 %97, ptr noundef nonnull align 4 dereferenceable(20) %98)
          to label %608 unwind label %641

608:                                              ; preds = %607
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 5, ptr noundef nonnull align 8 dereferenceable(24) %97)
          to label %609 unwind label %643

609:                                              ; preds = %608
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %97) #7
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %98) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %97) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %99) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %100) #7
  invoke void @_ZN7testing5AnyOfIiiiiiiEENS_8internal12AnyOfResult6IT_T0_T1_T2_T3_T4_E4typeES3_S4_S5_S6_S7_S8_(ptr dead_on_unwind nonnull writable sret(%"class.testing::internal::EitherOfMatcher.562") align 4 %100, i32 noundef 1, i32 noundef 2, i32 noundef 3, i32 noundef 4, i32 noundef 5, i32 noundef 6)
          to label %610 unwind label %646

610:                                              ; preds = %609
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_IiNS1_IiiEEEES3_EcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind nonnull writable sret(%"class.testing::Matcher") align 8 %99, ptr noundef nonnull align 4 dereferenceable(24) %100)
          to label %611 unwind label %646

611:                                              ; preds = %610
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 6, ptr noundef nonnull align 8 dereferenceable(24) %99)
          to label %612 unwind label %648

612:                                              ; preds = %611
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %99) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %100) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %99) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %101) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %102) #7
  invoke void @_ZN7testing5AnyOfIiiiiiiiEENS_8internal12AnyOfResult7IT_T0_T1_T2_T3_T4_T5_E4typeES3_S4_S5_S6_S7_S8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.testing::internal::EitherOfMatcher.563") align 4 %102, i32 noundef 1, i32 noundef 2, i32 noundef 3, i32 noundef 4, i32 noundef 5, i32 noundef 6, i32 noundef 7)
          to label %613 unwind label %651

613:                                              ; preds = %612
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_IiNS1_IiiEEEENS1_IS2_S2_EEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind nonnull writable sret(%"class.testing::Matcher") align 8 %101, ptr noundef nonnull align 4 dereferenceable(28) %102)
          to label %614 unwind label %651

614:                                              ; preds = %613
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 7, ptr noundef nonnull align 8 dereferenceable(24) %101)
          to label %615 unwind label %653

615:                                              ; preds = %614
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %101) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %102) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %101) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %103) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %104) #7
  invoke void @_ZN7testing5AnyOfIiiiiiiiiEENS_8internal12AnyOfResult8IT_T0_T1_T2_T3_T4_T5_T6_E4typeES3_S4_S5_S6_S7_S8_S9_SA_(ptr dead_on_unwind nonnull writable sret(%"class.testing::internal::EitherOfMatcher.564") align 4 %104, i32 noundef 1, i32 noundef 2, i32 noundef 3, i32 noundef 4, i32 noundef 5, i32 noundef 6, i32 noundef 7, i32 noundef 8)
          to label %616 unwind label %656

616:                                              ; preds = %615
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_INS1_IiiEES2_EES3_EcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind nonnull writable sret(%"class.testing::Matcher") align 8 %103, ptr noundef nonnull align 4 dereferenceable(32) %104)
          to label %617 unwind label %656

617:                                              ; preds = %616
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 8, ptr noundef nonnull align 8 dereferenceable(24) %103)
          to label %618 unwind label %658

618:                                              ; preds = %617
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %103) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %104) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %103) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %105) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %106) #7
  invoke void @_ZN7testing5AnyOfIiiiiiiiiiEENS_8internal12AnyOfResult9IT_T0_T1_T2_T3_T4_T5_T6_T7_E4typeES3_S4_S5_S6_S7_S8_S9_SA_SB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::internal::EitherOfMatcher.565") align 4 %106, i32 noundef 1, i32 noundef 2, i32 noundef 3, i32 noundef 4, i32 noundef 5, i32 noundef 6, i32 noundef 7, i32 noundef 8, i32 noundef 9)
          to label %619 unwind label %661

619:                                              ; preds = %618
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_INS1_IiiEES2_EENS1_IS2_NS1_IiS2_EEEEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind nonnull writable sret(%"class.testing::Matcher") align 8 %105, ptr noundef nonnull align 4 dereferenceable(36) %106)
          to label %620 unwind label %661

620:                                              ; preds = %619
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 9, ptr noundef nonnull align 8 dereferenceable(24) %105)
          to label %621 unwind label %663

621:                                              ; preds = %620
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %105) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %106) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %105) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %107) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %108) #7
  invoke void @_ZN7testing5AnyOfIiiiiiiiiiiEENS_8internal13AnyOfResult10IT_T0_T1_T2_T3_T4_T5_T6_T7_T8_E4typeES3_S4_S5_S6_S7_S8_S9_SA_SB_SC_(ptr dead_on_unwind nonnull writable sret(%"class.testing::internal::EitherOfMatcher.566") align 4 %108, i32 noundef 1, i32 noundef 2, i32 noundef 3, i32 noundef 4, i32 noundef 5, i32 noundef 6, i32 noundef 7, i32 noundef 8, i32 noundef 9, i32 noundef 10)
          to label %622 unwind label %666

622:                                              ; preds = %621
  invoke void @_ZNK7testing8internal15EitherOfMatcherINS1_INS1_IiiEENS1_IiS2_EEEES4_EcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind nonnull writable sret(%"class.testing::Matcher") align 8 %107, ptr noundef nonnull align 4 dereferenceable(40) %108)
          to label %623 unwind label %666

623:                                              ; preds = %622
  invoke void @_ZN7testing19gmock_matchers_test12AnyOfMatchesEiRKNS_7MatcherIiEE(i32 noundef 10, ptr noundef nonnull align 8 dereferenceable(24) %107)
          to label %624 unwind label %668

624:                                              ; preds = %623
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %107) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %108) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %107) #7
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #7
  ret void

625:                                              ; preds = %590, %572
  %.pn177.pn.pn.pn = phi { ptr, i32 } [ %.pn177.pn.pn, %590 ], [ %573, %572 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86) #7
  br label %671

626:                                              ; preds = %593, %591
  %627 = landingpad { ptr, i32 }
          cleanup
  br label %630

628:                                              ; preds = %594
  %629 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %91) #7
  br label %630

630:                                              ; preds = %628, %626
  %.pn182 = phi { ptr, i32 } [ %629, %628 ], [ %627, %626 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %91) #7
  br label %671

631:                                              ; preds = %597, %595
  %632 = landingpad { ptr, i32 }
          cleanup
  br label %635

633:                                              ; preds = %598
  %634 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %93) #7
  br label %635

635:                                              ; preds = %633, %631
  %.pn184 = phi { ptr, i32 } [ %634, %633 ], [ %632, %631 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %94) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %93) #7
  br label %671

636:                                              ; preds = %601, %599
  %637 = landingpad { ptr, i32 }
          cleanup
  br label %640

638:                                              ; preds = %605
  %639 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %95) #7
  br label %640

640:                                              ; preds = %638, %636
  %.pn186 = phi { ptr, i32 } [ %639, %638 ], [ %637, %636 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %95) #7
  br label %671

641:                                              ; preds = %607, %606
  %642 = landingpad { ptr, i32 }
          cleanup
  br label %645

643:                                              ; preds = %608
  %644 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %97) #7
  br label %645

645:                                              ; preds = %643, %641
  %.pn188 = phi { ptr, i32 } [ %644, %643 ], [ %642, %641 ]
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %98) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %97) #7
  br label %671

646:                                              ; preds = %610, %609
  %647 = landingpad { ptr, i32 }
          cleanup
  br label %650

648:                                              ; preds = %611
  %649 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %99) #7
  br label %650

650:                                              ; preds = %648, %646
  %.pn190 = phi { ptr, i32 } [ %649, %648 ], [ %647, %646 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %100) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %99) #7
  br label %671

651:                                              ; preds = %613, %612
  %652 = landingpad { ptr, i32 }
          cleanup
  br label %655

653:                                              ; preds = %614
  %654 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %101) #7
  br label %655

655:                                              ; preds = %653, %651
  %.pn192 = phi { ptr, i32 } [ %654, %653 ], [ %652, %651 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %102) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %101) #7
  br label %671

656:                                              ; preds = %616, %615
  %657 = landingpad { ptr, i32 }
          cleanup
  br label %660

658:                                              ; preds = %617
  %659 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %103) #7
  br label %660

660:                                              ; preds = %658, %656
  %.pn194 = phi { ptr, i32 } [ %659, %658 ], [ %657, %656 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %104) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %103) #7
  br label %671

661:                                              ; preds = %619, %618
  %662 = landingpad { ptr, i32 }
          cleanup
  br label %665

663:                                              ; preds = %620
  %664 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %105) #7
  br label %665

665:                                              ; preds = %663, %661
  %.pn196 = phi { ptr, i32 } [ %664, %663 ], [ %662, %661 ]
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %106) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %105) #7
  br label %671

666:                                              ; preds = %622, %621
  %667 = landingpad { ptr, i32 }
          cleanup
  br label %670

668:                                              ; preds = %623
  %669 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %107) #7
  br label %670

670:                                              ; preds = %668, %666
  %.pn198 = phi { ptr, i32 } [ %669, %668 ], [ %667, %666 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %108) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %107) #7
  br label %671

671:                                              ; preds = %670, %665, %660, %655, %650, %645, %640, %635, %630, %625, %571, %544, %518, %492, %487, %453, %426, %400, %374, %348, %343, %301, %274, %248, %222, %217, %180, %153, %127
  %.pn198.pn = phi { ptr, i32 } [ %.pn198, %670 ], [ %.pn196, %665 ], [ %.pn194, %660 ], [ %.pn192, %655 ], [ %.pn190, %650 ], [ %.pn188, %645 ], [ %.pn186, %640 ], [ %.pn184, %635 ], [ %.pn182, %630 ], [ %.pn177.pn.pn.pn, %625 ], [ %.pn172.pn.pn.pn, %571 ], [ %.pn167.pn.pn.pn, %544 ], [ %.pn162.pn.pn.pn, %518 ], [ %.pn160, %492 ], [ %.pn155.pn.pn.pn, %487 ], [ %.pn150.pn.pn.pn, %453 ], [ %.pn145.pn.pn.pn, %426 ], [ %.pn140.pn.pn.pn, %400 ], [ %.pn135.pn.pn.pn, %374 ], [ %.pn133, %348 ], [ %.pn128.pn.pn.pn, %343 ], [ %.pn123.pn.pn.pn, %301 ], [ %.pn118.pn.pn.pn, %274 ], [ %.pn113.pn.pn.pn, %248 ], [ %.pn111, %222 ], [ %.pn106.pn.pn.pn, %217 ], [ %.pn101.pn.pn.pn, %180 ], [ %.pn96.pn.pn.pn, %153 ], [ %.pn, %127 ]
  call void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #7
  resume { ptr, i32 } %.pn198.pn
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i64 @_ZN7testing5AnyOfINS_8internal9LeMatcherIiEENS1_9GeMatcherIiEEEENS1_12AnyOfResult2IT_T0_E4typeES7_S8_(i32, i32) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS0_9LeMatcherIiEENS0_9GeMatcherIiEEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { i64, i32 } @_ZN7testing5AnyOfINS_8internal9LtMatcherIiEENS1_9EqMatcherIiEES5_EENS1_12AnyOfResult3IT_T0_T1_E4typeES7_S8_S9_(i32, i32, i32) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS0_9LtMatcherIiEENS1_INS0_9EqMatcherIiEES5_EEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { i64, i64 } @_ZN7testing5AnyOfINS_8internal9LtMatcherIiEENS1_9EqMatcherIiEES5_S5_EENS1_12AnyOfResult4IT_T0_T1_T2_E4typeES7_S8_S9_SA_(i32, i32, i32, i32) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_INS0_9LtMatcherIiEENS0_9EqMatcherIiEEEENS1_IS5_S5_EEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7testing5AnyOfINS_8internal9LeMatcherIiEENS1_9GtMatcherIiEEiiiEENS1_12AnyOfResult5IT_T0_T1_T2_T3_E4typeES7_S8_S9_SA_SB_(ptr dead_on_unwind noalias writable sret(%"class.testing::internal::EitherOfMatcher.556") align 4, i32, i32, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_INS0_9LeMatcherIiEENS0_9GtMatcherIiEEEENS1_IiNS1_IiiEEEEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(20)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i64 @_ZN7testing5AnyOfIiiEENS_8internal12AnyOfResult2IT_T0_E4typeES3_S4_(i32 noundef, i32 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherIiiEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { i64, i32 } @_ZN7testing5AnyOfIiiiEENS_8internal12AnyOfResult3IT_T0_T1_E4typeES3_S4_S5_(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherIiNS1_IiiEEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { i64, i64 } @_ZN7testing5AnyOfIiiiiEENS_8internal12AnyOfResult4IT_T0_T1_T2_E4typeES3_S4_S5_S6_(i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_IiiEES2_EcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7testing5AnyOfIiiiiiEENS_8internal12AnyOfResult5IT_T0_T1_T2_T3_E4typeES3_S4_S5_S6_S7_(ptr dead_on_unwind noalias writable sret(%"class.testing::internal::EitherOfMatcher.561") align 4, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_IiiEENS1_IiS2_EEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(20)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7testing5AnyOfIiiiiiiEENS_8internal12AnyOfResult6IT_T0_T1_T2_T3_T4_E4typeES3_S4_S5_S6_S7_S8_(ptr dead_on_unwind noalias writable sret(%"class.testing::internal::EitherOfMatcher.562") align 4, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_IiNS1_IiiEEEES3_EcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7testing5AnyOfIiiiiiiiEENS_8internal12AnyOfResult7IT_T0_T1_T2_T3_T4_T5_E4typeES3_S4_S5_S6_S7_S8_S9_(ptr dead_on_unwind noalias writable sret(%"class.testing::internal::EitherOfMatcher.563") align 4, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_IiNS1_IiiEEEENS1_IS2_S2_EEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7testing5AnyOfIiiiiiiiiEENS_8internal12AnyOfResult8IT_T0_T1_T2_T3_T4_T5_T6_E4typeES3_S4_S5_S6_S7_S8_S9_SA_(ptr dead_on_unwind noalias writable sret(%"class.testing::internal::EitherOfMatcher.564") align 4, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_INS1_IiiEES2_EES3_EcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(32)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7testing5AnyOfIiiiiiiiiiEENS_8internal12AnyOfResult9IT_T0_T1_T2_T3_T4_T5_T6_T7_E4typeES3_S4_S5_S6_S7_S8_S9_SA_SB_(ptr dead_on_unwind noalias writable sret(%"class.testing::internal::EitherOfMatcher.565") align 4, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_INS1_IiiEES2_EENS1_IS2_NS1_IiS2_EEEEEcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(36)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7testing5AnyOfIiiiiiiiiiiEENS_8internal13AnyOfResult10IT_T0_T1_T2_T3_T4_T5_T6_T7_T8_E4typeES3_S4_S5_S6_S7_S8_S9_SA_SB_SC_(ptr dead_on_unwind noalias writable sret(%"class.testing::internal::EitherOfMatcher.566") align 4, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7testing8internal15EitherOfMatcherINS1_INS1_IiiEENS1_IiS2_EEEES4_EcvNS_7MatcherIT_EEIiEEv(ptr dead_on_unwind noalias writable sret(%"class.testing::Matcher") align 8, ptr noundef nonnull align 4 dereferenceable(40)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7testing8internal11MatcherBaseIiED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass