; LLVM IR from WayneLin92/SSeqCpp :: thirdparty/fmt/test (gtest-extra-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.testing::AssertionResult" = type { i8, %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.5" }
%"struct.std::_Head_base.5" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.0 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.0 = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"class.testing::Message" = type { %"class.std::unique_ptr.6" }
%"class.std::unique_ptr.6" = type { %"struct.std::__uniq_ptr_data.7" }
%"struct.std::__uniq_ptr_data.7" = type { %"class.std::__uniq_ptr_impl.8" }
%"class.std::__uniq_ptr_impl.8" = type { %"class.std::tuple.9" }
%"class.std::tuple.9" = type { %"struct.std::_Tuple_impl.10" }
%"struct.std::_Tuple_impl.10" = type { %"struct.std::_Head_base.13" }
%"struct.std::_Head_base.13" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }
%"class.testing::TestPartResultArray" = type { %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<testing::TestPartResult, std::allocator<testing::TestPartResult>>::_Vector_impl" }
%"struct.std::_Vector_base<testing::TestPartResult, std::allocator<testing::TestPartResult>>::_Vector_impl" = type { %"struct.std::_Vector_base<testing::TestPartResult, std::allocator<testing::TestPartResult>>::_Vector_impl_data" }
%"struct.std::_Vector_base<testing::TestPartResult, std::allocator<testing::TestPartResult>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.testing::internal::SingleFailureChecker" = type { ptr, i32, %"class.std::__cxx11::basic_string" }
%"class.testing::ScopedFakeTestPartResultReporter" = type { %"class.testing::TestPartResultReporterInterface", i32, ptr, ptr }
%"class.testing::TestPartResultReporterInterface" = type { ptr }

@_ZTISt13runtime_error = external constant ptr
@.str.4 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [115 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [86 x i8], align 1
@_ZTIi = external constant ptr
@.str.77 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [107 x i8], align 1

declare ptr @__cxa_allocate_exception(i64)

declare void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #0

declare i32 @__gxx_personality_v0(...)

declare void @__cxa_free_exception(ptr)

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 align 2

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

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

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

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

declare void @_ZN7testing8internal20SingleFailureCheckerC1EPKNS_19TestPartResultArrayENS_14TestPartResult4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0

declare void @_ZN7testing32ScopedFakeTestPartResultReporterC1ENS0_13InterceptModeEPNS_19TestPartResultArrayE(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, ptr noundef) unnamed_addr #0

declare noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv() #0

declare void @_ZN7testing16AssertionSuccessEv(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8) #0

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

; Function Attrs: nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #5

declare ptr @__cxa_begin_catch(ptr)

declare void @__cxa_end_catch()

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(11)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(2)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIPKcEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

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

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

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

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

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

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

; Function Attrs: nounwind
declare void @_ZN7testing8internal20SingleFailureCheckerD1Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #1

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7testing8internal11AlwaysFalseEv() #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA116_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(116)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA107_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(107)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA115_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(115)) #4 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN62gtest_extra_test_expect_throw_no_unreachable_code_warning_Test8TestBodyEv(ptr noundef nonnull align 8 dereferenceable(16) %0) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca %"class.testing::AssertionResult", align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator", align 1
  %9 = alloca i8, align 1
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca %"class.testing::Message", align 8
  %14 = alloca %"class.testing::internal::AssertHelper", align 8
  %15 = alloca %"class.testing::TestPartResultArray", align 8
  %16 = alloca %"class.testing::internal::SingleFailureChecker", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator", align 1
  %19 = alloca %"class.testing::ScopedFakeTestPartResultReporter", align 8
  %20 = alloca %"class.testing::AssertionResult", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator", align 1
  %23 = alloca i8, align 1
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca %"class.testing::Message", align 8
  %27 = alloca %"class.testing::internal::AssertHelper", align 8
  %28 = alloca %"class.testing::TestPartResultArray", align 8
  %29 = alloca %"class.testing::internal::SingleFailureChecker", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator", align 1
  %32 = alloca %"class.testing::ScopedFakeTestPartResultReporter", align 8
  %33 = alloca %"class.testing::AssertionResult", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator", align 1
  %36 = alloca i8, align 1
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca %"class.testing::Message", align 8
  %40 = alloca %"class.testing::internal::AssertHelper", align 8
  %41 = alloca %"class.testing::TestPartResultArray", align 8
  %42 = alloca %"class.testing::internal::SingleFailureChecker", align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator", align 1
  %45 = alloca %"class.testing::ScopedFakeTestPartResultReporter", align 8
  %46 = alloca %"class.testing::AssertionResult", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator", align 1
  %49 = alloca i8, align 1
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca %"class.testing::Message", align 8
  %53 = alloca %"class.testing::internal::AssertHelper", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %54 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #9
  store i32 0, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %4) #9
  call void @_ZN7testing16AssertionSuccessEv(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %4)
  %55 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %56 unwind label %64

56:                                               ; preds = %1
  br i1 %55, label %57, label %161

57:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 32, ptr %7) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %58 unwind label %68

58:                                               ; preds = %57
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #9
  store i8 0, ptr %9, align 1, !tbaa !11
  %59 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %60 unwind label %72

60:                                               ; preds = %58
  br i1 %59, label %61, label %117

61:                                               ; preds = %60
  %62 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %62, ptr noundef @.str.58)
          to label %63 unwind label %76

63:                                               ; preds = %61
  invoke void @__cxa_throw(ptr %62, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %682 unwind label %72

64:                                               ; preds = %1
  %65 = landingpad { ptr, i32 }
          cleanup
  %66 = extractvalue { ptr, i32 } %65, 0
  store ptr %66, ptr %5, align 8
  %67 = extractvalue { ptr, i32 } %65, 1
  store i32 %67, ptr %6, align 4
  br label %200

68:                                               ; preds = %57
  %69 = landingpad { ptr, i32 }
          cleanup
  %70 = extractvalue { ptr, i32 } %69, 0
  store ptr %70, ptr %5, align 8
  %71 = extractvalue { ptr, i32 } %69, 1
  store i32 %71, ptr %6, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #9
  br label %160

72:                                               ; preds = %63, %58
  %73 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %74 = extractvalue { ptr, i32 } %73, 0
  store ptr %74, ptr %5, align 8
  %75 = extractvalue { ptr, i32 } %73, 1
  store i32 %75, ptr %6, align 4
  br label %80

76:                                               ; preds = %61
  %77 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %78 = extractvalue { ptr, i32 } %77, 0
  store ptr %78, ptr %5, align 8
  %79 = extractvalue { ptr, i32 } %77, 1
  store i32 %79, ptr %6, align 4
  call void @__cxa_free_exception(ptr %62) #9
  br label %80

80:                                               ; preds = %76, %72
  %81 = load i32, ptr %6, align 4
  %82 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #9
  %83 = icmp eq i32 %81, %82
  br i1 %83, label %84, label %112

84:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #9
  %85 = load ptr, ptr %5, align 8
  %86 = call ptr @__cxa_begin_catch(ptr %85) #9
  store ptr %86, ptr %11, align 8
  %87 = load ptr, ptr %11, align 8, !tbaa !5
  %88 = load ptr, ptr %87, align 8, !tbaa !13
  %89 = getelementptr inbounds ptr, ptr %88, i64 2
  %90 = load ptr, ptr %89, align 8
  %91 = call noundef ptr %90(ptr noundef nonnull align 8 dereferenceable(16) %87) #9
  %92 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef %91)
          to label %93 unwind label %129

93:                                               ; preds = %84
  br i1 %92, label %94, label %137

94:                                               ; preds = %93
  %95 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA71_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 1 dereferenceable(71) @.str.72)
          to label %96 unwind label %129

96:                                               ; preds = %94
  %97 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %95, ptr noundef nonnull align 1 dereferenceable(11) @.str.8)
          to label %98 unwind label %129

98:                                               ; preds = %96
  %99 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %97, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %100 unwind label %129

100:                                              ; preds = %98
  %101 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %99, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %102 unwind label %129

102:                                              ; preds = %100
  %103 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %101, ptr noundef nonnull align 1 dereferenceable(11) @.str.10)
          to label %104 unwind label %129

104:                                              ; preds = %102
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  %105 = load ptr, ptr %11, align 8, !tbaa !5
  %106 = load ptr, ptr %105, align 8, !tbaa !13
  %107 = getelementptr inbounds ptr, ptr %106, i64 2
  %108 = load ptr, ptr %107, align 8
  %109 = call noundef ptr %108(ptr noundef nonnull align 8 dereferenceable(16) %105) #9
  store ptr %109, ptr %12, align 8, !tbaa !5
  %110 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIPKcEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %103, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %111 unwind label %133

111:                                              ; preds = %104
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  store i32 2, ptr %10, align 4
  br label %138

112:                                              ; preds = %80
  %113 = load ptr, ptr %5, align 8
  %114 = call ptr @__cxa_begin_catch(ptr %113) #9
  %115 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA115_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 1 dereferenceable(115) @.str.71)
          to label %116 unwind label %119

116:                                              ; preds = %112
  store i32 2, ptr %10, align 4
  invoke void @__cxa_end_catch()
          to label %123 unwind label %124

117:                                              ; preds = %60
  br label %118

118:                                              ; preds = %117
  br label %142

119:                                              ; preds = %112
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %5, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %6, align 4
  invoke void @__cxa_end_catch()
          to label %128 unwind label %679

123:                                              ; preds = %116
  br label %156

124:                                              ; preds = %145, %116
  %125 = landingpad { ptr, i32 }
          cleanup
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %5, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %6, align 4
  br label %159

128:                                              ; preds = %119
  br label %159

129:                                              ; preds = %102, %100, %98, %96, %94, %84
  %130 = landingpad { ptr, i32 }
          cleanup
  %131 = extractvalue { ptr, i32 } %130, 0
  store ptr %131, ptr %5, align 8
  %132 = extractvalue { ptr, i32 } %130, 1
  store i32 %132, ptr %6, align 4
  br label %152

133:                                              ; preds = %104
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %5, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  br label %152

137:                                              ; preds = %93
  store i8 1, ptr %9, align 1, !tbaa !11
  store i32 0, ptr %10, align 4
  br label %138

138:                                              ; preds = %137, %111
  invoke void @__cxa_end_catch()
          to label %139 unwind label %148

139:                                              ; preds = %138
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  %140 = load i32, ptr %10, align 4
  switch i32 %140, label %156 [
    i32 0, label %141
  ]

141:                                              ; preds = %139
  br label %142

142:                                              ; preds = %141, %118
  %143 = load i8, ptr %9, align 1, !tbaa !11, !range !15, !noundef !16
  %144 = trunc i8 %143 to i1
  br i1 %144, label %155, label %145

145:                                              ; preds = %142
  %146 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA106_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 1 dereferenceable(106) @.str.73)
          to label %147 unwind label %124

147:                                              ; preds = %145
  store i32 2, ptr %10, align 4
  br label %156

148:                                              ; preds = %138
  %149 = landingpad { ptr, i32 }
          cleanup
  %150 = extractvalue { ptr, i32 } %149, 0
  store ptr %150, ptr %5, align 8
  %151 = extractvalue { ptr, i32 } %149, 1
  store i32 %151, ptr %6, align 4
  br label %154

152:                                              ; preds = %133, %129
  invoke void @__cxa_end_catch()
          to label %153 unwind label %679

153:                                              ; preds = %152
  br label %154

154:                                              ; preds = %153, %148
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  br label %159

155:                                              ; preds = %142
  store i32 0, ptr %10, align 4
  br label %156

156:                                              ; preds = %155, %147, %139, %123
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #9
  %157 = load i32, ptr %10, align 4
  switch i32 %157, label %682 [
    i32 0, label %158
    i32 2, label %162
  ]

158:                                              ; preds = %156
  br label %182

159:                                              ; preds = %154, %128, %124
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  br label %160

160:                                              ; preds = %159, %68
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #9
  br label %200

161:                                              ; preds = %56
  br label %162

162:                                              ; preds = %161, %156
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %163 unwind label %168

163:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #9
  %164 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %165 unwind label %172

165:                                              ; preds = %163
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef 1, ptr noundef @.str.4, i32 noundef 206, ptr noundef %164)
          to label %166 unwind label %172

166:                                              ; preds = %165
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %167 unwind label %176

167:                                              ; preds = %166
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  br label %182

168:                                              ; preds = %162
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %5, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %6, align 4
  br label %181

172:                                              ; preds = %165, %163
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %5, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %6, align 4
  br label %180

176:                                              ; preds = %166
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %5, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #9
  br label %180

180:                                              ; preds = %176, %172
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #9
  br label %181

181:                                              ; preds = %180, %168
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  br label %200

182:                                              ; preds = %167, %158
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %4) #9
  br label %183

183:                                              ; preds = %340, %182
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #9
  call void @_ZN7testing19TestPartResultArrayC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15)
  call void @llvm.lifetime.start.p0(i64 48, ptr %16) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %184 unwind label %201

184:                                              ; preds = %183
  invoke void @_ZN7testing8internal20SingleFailureCheckerC1EPKNS_19TestPartResultArrayENS_14TestPartResult4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef %15, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %185 unwind label %205

185:                                              ; preds = %184
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #9
  invoke void @_ZN7testing32ScopedFakeTestPartResultReporterC1ENS0_13InterceptModeEPNS_19TestPartResultArrayE(ptr noundef nonnull align 8 dereferenceable(32) %19, i32 noundef 0, ptr noundef %15)
          to label %186 unwind label %210

186:                                              ; preds = %185
  %187 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %188 unwind label %214

188:                                              ; preds = %186
  br i1 %187, label %189, label %339

189:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #9
  invoke void @_ZN7testing16AssertionSuccessEv(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %20)
          to label %190 unwind label %218

190:                                              ; preds = %189
  %191 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %192 unwind label %222

192:                                              ; preds = %190
  br i1 %191, label %193, label %315

193:                                              ; preds = %192
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %194 unwind label %226

194:                                              ; preds = %193
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #9
  store i8 0, ptr %23, align 1, !tbaa !11
  %195 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %196 unwind label %230

196:                                              ; preds = %194
  br i1 %195, label %197, label %271

197:                                              ; preds = %196
  %198 = load i32, ptr %3, align 4, !tbaa !9
  %199 = add nsw i32 %198, 1
  store i32 %199, ptr %3, align 4, !tbaa !9
  br label %272

200:                                              ; preds = %181, %160, %64
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %4) #9
  br label %673

201:                                              ; preds = %183
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %5, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %6, align 4
  br label %209

205:                                              ; preds = %184
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %5, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  br label %209

209:                                              ; preds = %205, %201
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #9
  br label %361

210:                                              ; preds = %185
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %5, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %6, align 4
  br label %360

214:                                              ; preds = %186
  %215 = landingpad { ptr, i32 }
          cleanup
  %216 = extractvalue { ptr, i32 } %215, 0
  store ptr %216, ptr %5, align 8
  %217 = extractvalue { ptr, i32 } %215, 1
  store i32 %217, ptr %6, align 4
  br label %359

218:                                              ; preds = %189
  %219 = landingpad { ptr, i32 }
          cleanup
  %220 = extractvalue { ptr, i32 } %219, 0
  store ptr %220, ptr %5, align 8
  %221 = extractvalue { ptr, i32 } %219, 1
  store i32 %221, ptr %6, align 4
  br label %338

222:                                              ; preds = %190
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %5, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %6, align 4
  br label %337

226:                                              ; preds = %193
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %5, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %6, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #9
  br label %314

230:                                              ; preds = %194
  %231 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %5, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %6, align 4
  br label %234

234:                                              ; preds = %230
  %235 = load i32, ptr %6, align 4
  %236 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #9
  %237 = icmp eq i32 %235, %236
  br i1 %237, label %238, label %266

238:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  %239 = load ptr, ptr %5, align 8
  %240 = call ptr @__cxa_begin_catch(ptr %239) #9
  store ptr %240, ptr %24, align 8
  %241 = load ptr, ptr %24, align 8, !tbaa !5
  %242 = load ptr, ptr %241, align 8, !tbaa !13
  %243 = getelementptr inbounds ptr, ptr %242, i64 2
  %244 = load ptr, ptr %243, align 8
  %245 = call noundef ptr %244(ptr noundef nonnull align 8 dereferenceable(16) %241) #9
  %246 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef %245)
          to label %247 unwind label %283

247:                                              ; preds = %238
  br i1 %246, label %248, label %291

248:                                              ; preds = %247
  %249 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA51_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 1 dereferenceable(51) @.str.75)
          to label %250 unwind label %283

250:                                              ; preds = %248
  %251 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %249, ptr noundef nonnull align 1 dereferenceable(11) @.str.8)
          to label %252 unwind label %283

252:                                              ; preds = %250
  %253 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %251, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %254 unwind label %283

254:                                              ; preds = %252
  %255 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %253, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %256 unwind label %283

256:                                              ; preds = %254
  %257 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %255, ptr noundef nonnull align 1 dereferenceable(11) @.str.10)
          to label %258 unwind label %283

258:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  %259 = load ptr, ptr %24, align 8, !tbaa !5
  %260 = load ptr, ptr %259, align 8, !tbaa !13
  %261 = getelementptr inbounds ptr, ptr %260, i64 2
  %262 = load ptr, ptr %261, align 8
  %263 = call noundef ptr %262(ptr noundef nonnull align 8 dereferenceable(16) %259) #9
  store ptr %263, ptr %25, align 8, !tbaa !5
  %264 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIPKcEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %257, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %265 unwind label %287

265:                                              ; preds = %258
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  store i32 5, ptr %10, align 4
  br label %292

266:                                              ; preds = %234
  %267 = load ptr, ptr %5, align 8
  %268 = call ptr @__cxa_begin_catch(ptr %267) #9
  %269 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA95_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 1 dereferenceable(95) @.str.74)
          to label %270 unwind label %273

270:                                              ; preds = %266
  store i32 5, ptr %10, align 4
  invoke void @__cxa_end_catch()
          to label %277 unwind label %278

271:                                              ; preds = %196
  br label %272

272:                                              ; preds = %271, %197
  br label %296

273:                                              ; preds = %266
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %5, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %6, align 4
  invoke void @__cxa_end_catch()
          to label %282 unwind label %679

277:                                              ; preds = %270
  br label %310

278:                                              ; preds = %299, %270
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %5, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %6, align 4
  br label %313

282:                                              ; preds = %273
  br label %313

283:                                              ; preds = %256, %254, %252, %250, %248, %238
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %5, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %6, align 4
  br label %306

287:                                              ; preds = %258
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %5, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %306

291:                                              ; preds = %247
  store i8 1, ptr %23, align 1, !tbaa !11
  store i32 0, ptr %10, align 4
  br label %292

292:                                              ; preds = %291, %265
  invoke void @__cxa_end_catch()
          to label %293 unwind label %302

293:                                              ; preds = %292
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  %294 = load i32, ptr %10, align 4
  switch i32 %294, label %310 [
    i32 0, label %295
  ]

295:                                              ; preds = %293
  br label %296

296:                                              ; preds = %295, %272
  %297 = load i8, ptr %23, align 1, !tbaa !11, !range !15, !noundef !16
  %298 = trunc i8 %297 to i1
  br i1 %298, label %309, label %299

299:                                              ; preds = %296
  %300 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA86_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 1 dereferenceable(86) @.str.76)
          to label %301 unwind label %278

301:                                              ; preds = %299
  store i32 5, ptr %10, align 4
  br label %310

302:                                              ; preds = %292
  %303 = landingpad { ptr, i32 }
          cleanup
  %304 = extractvalue { ptr, i32 } %303, 0
  store ptr %304, ptr %5, align 8
  %305 = extractvalue { ptr, i32 } %303, 1
  store i32 %305, ptr %6, align 4
  br label %308

306:                                              ; preds = %287, %283
  invoke void @__cxa_end_catch()
          to label %307 unwind label %679

307:                                              ; preds = %306
  br label %308

308:                                              ; preds = %307, %302
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  br label %313

309:                                              ; preds = %296
  store i32 0, ptr %10, align 4
  br label %310

310:                                              ; preds = %309, %301, %293, %277
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #9
  %311 = load i32, ptr %10, align 4
  switch i32 %311, label %682 [
    i32 0, label %312
    i32 5, label %316
  ]

312:                                              ; preds = %310
  br label %336

313:                                              ; preds = %308, %282, %278
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  br label %314

314:                                              ; preds = %313, %226
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #9
  br label %337

315:                                              ; preds = %192
  br label %316

316:                                              ; preds = %315, %310
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %317 unwind label %322

317:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %318 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %319 unwind label %326

319:                                              ; preds = %317
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %27, i32 noundef 1, ptr noundef @.str.4, i32 noundef 207, ptr noundef %318)
          to label %320 unwind label %326

320:                                              ; preds = %319
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %321 unwind label %330

321:                                              ; preds = %320
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %336

322:                                              ; preds = %316
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %5, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %6, align 4
  br label %335

326:                                              ; preds = %319, %317
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %5, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %6, align 4
  br label %334

330:                                              ; preds = %320
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %5, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #9
  br label %334

334:                                              ; preds = %330, %326
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  br label %335

335:                                              ; preds = %334, %322
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %337

336:                                              ; preds = %321, %312
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #9
  br label %339

337:                                              ; preds = %335, %314, %222
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  br label %338

338:                                              ; preds = %337, %218
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #9
  br label %359

339:                                              ; preds = %336, %188
  call void @_ZN7testing32ScopedFakeTestPartResultReporterD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #9
  call void @_ZN7testing8internal20SingleFailureCheckerD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %16) #9
  call void @_ZN7testing19TestPartResultArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #9
  br label %340

340:                                              ; preds = %339
  %341 = call noundef zeroext i1 @_ZN7testing8internal11AlwaysFalseEv()
  br i1 %341, label %183, label %342, !llvm.loop !17

342:                                              ; preds = %340
  br label %343

343:                                              ; preds = %501, %342
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #9
  call void @_ZN7testing19TestPartResultArrayC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28)
  call void @llvm.lifetime.start.p0(i64 48, ptr %29) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %344 unwind label %362

344:                                              ; preds = %343
  invoke void @_ZN7testing8internal20SingleFailureCheckerC1EPKNS_19TestPartResultArrayENS_14TestPartResult4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %29, ptr noundef %28, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %345 unwind label %366

345:                                              ; preds = %344
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #9
  invoke void @_ZN7testing32ScopedFakeTestPartResultReporterC1ENS0_13InterceptModeEPNS_19TestPartResultArrayE(ptr noundef nonnull align 8 dereferenceable(32) %32, i32 noundef 0, ptr noundef %28)
          to label %346 unwind label %371

346:                                              ; preds = %345
  %347 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %348 unwind label %375

348:                                              ; preds = %346
  br i1 %347, label %349, label %500

349:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #9
  invoke void @_ZN7testing16AssertionSuccessEv(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %33)
          to label %350 unwind label %379

350:                                              ; preds = %349
  %351 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %352 unwind label %383

352:                                              ; preds = %350
  br i1 %351, label %353, label %476

353:                                              ; preds = %352
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %354 unwind label %387

354:                                              ; preds = %353
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #9
  store i8 0, ptr %36, align 1, !tbaa !11
  %355 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %356 unwind label %391

356:                                              ; preds = %354
  br i1 %355, label %357, label %432

357:                                              ; preds = %356
  %358 = call ptr @__cxa_allocate_exception(i64 4) #9
  store i32 1, ptr %358, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr %358, ptr @_ZTIi, ptr null) #10
          to label %682 unwind label %391

359:                                              ; preds = %338, %214
  call void @_ZN7testing32ScopedFakeTestPartResultReporterD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  br label %360

360:                                              ; preds = %359, %210
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #9
  call void @_ZN7testing8internal20SingleFailureCheckerD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #9
  br label %361

361:                                              ; preds = %360, %209
  call void @llvm.lifetime.end.p0(i64 48, ptr %16) #9
  call void @_ZN7testing19TestPartResultArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #9
  br label %673

362:                                              ; preds = %343
  %363 = landingpad { ptr, i32 }
          cleanup
  %364 = extractvalue { ptr, i32 } %363, 0
  store ptr %364, ptr %5, align 8
  %365 = extractvalue { ptr, i32 } %363, 1
  store i32 %365, ptr %6, align 4
  br label %370

366:                                              ; preds = %344
  %367 = landingpad { ptr, i32 }
          cleanup
  %368 = extractvalue { ptr, i32 } %367, 0
  store ptr %368, ptr %5, align 8
  %369 = extractvalue { ptr, i32 } %367, 1
  store i32 %369, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  br label %370

370:                                              ; preds = %366, %362
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #9
  br label %523

371:                                              ; preds = %345
  %372 = landingpad { ptr, i32 }
          cleanup
  %373 = extractvalue { ptr, i32 } %372, 0
  store ptr %373, ptr %5, align 8
  %374 = extractvalue { ptr, i32 } %372, 1
  store i32 %374, ptr %6, align 4
  br label %522

375:                                              ; preds = %346
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %5, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %6, align 4
  br label %521

379:                                              ; preds = %349
  %380 = landingpad { ptr, i32 }
          cleanup
  %381 = extractvalue { ptr, i32 } %380, 0
  store ptr %381, ptr %5, align 8
  %382 = extractvalue { ptr, i32 } %380, 1
  store i32 %382, ptr %6, align 4
  br label %499

383:                                              ; preds = %350
  %384 = landingpad { ptr, i32 }
          cleanup
  %385 = extractvalue { ptr, i32 } %384, 0
  store ptr %385, ptr %5, align 8
  %386 = extractvalue { ptr, i32 } %384, 1
  store i32 %386, ptr %6, align 4
  br label %498

387:                                              ; preds = %353
  %388 = landingpad { ptr, i32 }
          cleanup
  %389 = extractvalue { ptr, i32 } %388, 0
  store ptr %389, ptr %5, align 8
  %390 = extractvalue { ptr, i32 } %388, 1
  store i32 %390, ptr %6, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #9
  br label %475

391:                                              ; preds = %357, %354
  %392 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %5, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %6, align 4
  br label %395

395:                                              ; preds = %391
  %396 = load i32, ptr %6, align 4
  %397 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #9
  %398 = icmp eq i32 %396, %397
  br i1 %398, label %399, label %427

399:                                              ; preds = %395
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #9
  %400 = load ptr, ptr %5, align 8
  %401 = call ptr @__cxa_begin_catch(ptr %400) #9
  store ptr %401, ptr %37, align 8
  %402 = load ptr, ptr %37, align 8, !tbaa !5
  %403 = load ptr, ptr %402, align 8, !tbaa !13
  %404 = getelementptr inbounds ptr, ptr %403, i64 2
  %405 = load ptr, ptr %404, align 8
  %406 = call noundef ptr %405(ptr noundef nonnull align 8 dereferenceable(16) %402) #9
  %407 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef %406)
          to label %408 unwind label %444

408:                                              ; preds = %399
  br i1 %407, label %409, label %452

409:                                              ; preds = %408
  %410 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA55_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 1 dereferenceable(55) @.str.78)
          to label %411 unwind label %444

411:                                              ; preds = %409
  %412 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %410, ptr noundef nonnull align 1 dereferenceable(11) @.str.8)
          to label %413 unwind label %444

413:                                              ; preds = %411
  %414 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %412, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %415 unwind label %444

415:                                              ; preds = %413
  %416 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %414, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %417 unwind label %444

417:                                              ; preds = %415
  %418 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %416, ptr noundef nonnull align 1 dereferenceable(11) @.str.10)
          to label %419 unwind label %444

419:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  %420 = load ptr, ptr %37, align 8, !tbaa !5
  %421 = load ptr, ptr %420, align 8, !tbaa !13
  %422 = getelementptr inbounds ptr, ptr %421, i64 2
  %423 = load ptr, ptr %422, align 8
  %424 = call noundef ptr %423(ptr noundef nonnull align 8 dereferenceable(16) %420) #9
  store ptr %424, ptr %38, align 8, !tbaa !5
  %425 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIPKcEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %418, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %426 unwind label %448

426:                                              ; preds = %419
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  store i32 8, ptr %10, align 4
  br label %453

427:                                              ; preds = %395
  %428 = load ptr, ptr %5, align 8
  %429 = call ptr @__cxa_begin_catch(ptr %428) #9
  %430 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA99_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 1 dereferenceable(99) @.str.77)
          to label %431 unwind label %434

431:                                              ; preds = %427
  store i32 8, ptr %10, align 4
  invoke void @__cxa_end_catch()
          to label %438 unwind label %439

432:                                              ; preds = %356
  br label %433

433:                                              ; preds = %432
  br label %457

434:                                              ; preds = %427
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %5, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %6, align 4
  invoke void @__cxa_end_catch()
          to label %443 unwind label %679

438:                                              ; preds = %431
  br label %471

439:                                              ; preds = %460, %431
  %440 = landingpad { ptr, i32 }
          cleanup
  %441 = extractvalue { ptr, i32 } %440, 0
  store ptr %441, ptr %5, align 8
  %442 = extractvalue { ptr, i32 } %440, 1
  store i32 %442, ptr %6, align 4
  br label %474

443:                                              ; preds = %434
  br label %474

444:                                              ; preds = %417, %415, %413, %411, %409, %399
  %445 = landingpad { ptr, i32 }
          cleanup
  %446 = extractvalue { ptr, i32 } %445, 0
  store ptr %446, ptr %5, align 8
  %447 = extractvalue { ptr, i32 } %445, 1
  store i32 %447, ptr %6, align 4
  br label %467

448:                                              ; preds = %419
  %449 = landingpad { ptr, i32 }
          cleanup
  %450 = extractvalue { ptr, i32 } %449, 0
  store ptr %450, ptr %5, align 8
  %451 = extractvalue { ptr, i32 } %449, 1
  store i32 %451, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  br label %467

452:                                              ; preds = %408
  store i8 1, ptr %36, align 1, !tbaa !11
  store i32 0, ptr %10, align 4
  br label %453

453:                                              ; preds = %452, %426
  invoke void @__cxa_end_catch()
          to label %454 unwind label %463

454:                                              ; preds = %453
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  %455 = load i32, ptr %10, align 4
  switch i32 %455, label %471 [
    i32 0, label %456
  ]

456:                                              ; preds = %454
  br label %457

457:                                              ; preds = %456, %433
  %458 = load i8, ptr %36, align 1, !tbaa !11, !range !15, !noundef !16
  %459 = trunc i8 %458 to i1
  br i1 %459, label %470, label %460

460:                                              ; preds = %457
  %461 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA90_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 1 dereferenceable(90) @.str.79)
          to label %462 unwind label %439

462:                                              ; preds = %460
  store i32 8, ptr %10, align 4
  br label %471

463:                                              ; preds = %453
  %464 = landingpad { ptr, i32 }
          cleanup
  %465 = extractvalue { ptr, i32 } %464, 0
  store ptr %465, ptr %5, align 8
  %466 = extractvalue { ptr, i32 } %464, 1
  store i32 %466, ptr %6, align 4
  br label %469

467:                                              ; preds = %448, %444
  invoke void @__cxa_end_catch()
          to label %468 unwind label %679

468:                                              ; preds = %467
  br label %469

469:                                              ; preds = %468, %463
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  br label %474

470:                                              ; preds = %457
  store i32 0, ptr %10, align 4
  br label %471

471:                                              ; preds = %470, %462, %454, %438
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #9
  %472 = load i32, ptr %10, align 4
  switch i32 %472, label %682 [
    i32 0, label %473
    i32 8, label %477
  ]

473:                                              ; preds = %471
  br label %497

474:                                              ; preds = %469, %443, %439
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  br label %475

475:                                              ; preds = %474, %387
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #9
  br label %498

476:                                              ; preds = %352
  br label %477

477:                                              ; preds = %476, %471
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %478 unwind label %483

478:                                              ; preds = %477
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #9
  %479 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %480 unwind label %487

480:                                              ; preds = %478
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %40, i32 noundef 1, ptr noundef @.str.4, i32 noundef 208, ptr noundef %479)
          to label %481 unwind label %487

481:                                              ; preds = %480
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %482 unwind label %491

482:                                              ; preds = %481
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  br label %497

483:                                              ; preds = %477
  %484 = landingpad { ptr, i32 }
          cleanup
  %485 = extractvalue { ptr, i32 } %484, 0
  store ptr %485, ptr %5, align 8
  %486 = extractvalue { ptr, i32 } %484, 1
  store i32 %486, ptr %6, align 4
  br label %496

487:                                              ; preds = %480, %478
  %488 = landingpad { ptr, i32 }
          cleanup
  %489 = extractvalue { ptr, i32 } %488, 0
  store ptr %489, ptr %5, align 8
  %490 = extractvalue { ptr, i32 } %488, 1
  store i32 %490, ptr %6, align 4
  br label %495

491:                                              ; preds = %481
  %492 = landingpad { ptr, i32 }
          cleanup
  %493 = extractvalue { ptr, i32 } %492, 0
  store ptr %493, ptr %5, align 8
  %494 = extractvalue { ptr, i32 } %492, 1
  store i32 %494, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  br label %495

495:                                              ; preds = %491, %487
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #9
  br label %496

496:                                              ; preds = %495, %483
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  br label %498

497:                                              ; preds = %482, %473
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #9
  br label %500

498:                                              ; preds = %496, %475, %383
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #9
  br label %499

499:                                              ; preds = %498, %379
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #9
  br label %521

500:                                              ; preds = %497, %348
  call void @_ZN7testing32ScopedFakeTestPartResultReporterD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #9
  call void @_ZN7testing8internal20SingleFailureCheckerD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %29) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %29) #9
  call void @_ZN7testing19TestPartResultArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #9
  br label %501

501:                                              ; preds = %500
  %502 = call noundef zeroext i1 @_ZN7testing8internal11AlwaysFalseEv()
  br i1 %502, label %343, label %503, !llvm.loop !19

503:                                              ; preds = %501
  br label %504

504:                                              ; preds = %667, %503
  call void @llvm.lifetime.start.p0(i64 24, ptr %41) #9
  call void @_ZN7testing19TestPartResultArrayC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41)
  call void @llvm.lifetime.start.p0(i64 48, ptr %42) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %505 unwind label %524

505:                                              ; preds = %504
  invoke void @_ZN7testing8internal20SingleFailureCheckerC1EPKNS_19TestPartResultArrayENS_14TestPartResult4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %42, ptr noundef %41, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %506 unwind label %528

506:                                              ; preds = %505
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #9
  invoke void @_ZN7testing32ScopedFakeTestPartResultReporterC1ENS0_13InterceptModeEPNS_19TestPartResultArrayE(ptr noundef nonnull align 8 dereferenceable(32) %45, i32 noundef 0, ptr noundef %41)
          to label %507 unwind label %533

507:                                              ; preds = %506
  %508 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %509 unwind label %537

509:                                              ; preds = %507
  br i1 %508, label %510, label %666

510:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #9
  invoke void @_ZN7testing16AssertionSuccessEv(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %46)
          to label %511 unwind label %541

511:                                              ; preds = %510
  %512 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %46)
          to label %513 unwind label %545

513:                                              ; preds = %511
  br i1 %512, label %514, label %642

514:                                              ; preds = %513
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %515 unwind label %549

515:                                              ; preds = %514
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #9
  store i8 0, ptr %49, align 1, !tbaa !11
  %516 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %517 unwind label %553

517:                                              ; preds = %515
  br i1 %516, label %518, label %598

518:                                              ; preds = %517
  %519 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %519, ptr noundef @.str.81)
          to label %520 unwind label %557

520:                                              ; preds = %518
  invoke void @__cxa_throw(ptr %519, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %682 unwind label %553

521:                                              ; preds = %499, %375
  call void @_ZN7testing32ScopedFakeTestPartResultReporterD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #9
  br label %522

522:                                              ; preds = %521, %371
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #9
  call void @_ZN7testing8internal20SingleFailureCheckerD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %29) #9
  br label %523

523:                                              ; preds = %522, %370
  call void @llvm.lifetime.end.p0(i64 48, ptr %29) #9
  call void @_ZN7testing19TestPartResultArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #9
  br label %673

524:                                              ; preds = %504
  %525 = landingpad { ptr, i32 }
          cleanup
  %526 = extractvalue { ptr, i32 } %525, 0
  store ptr %526, ptr %5, align 8
  %527 = extractvalue { ptr, i32 } %525, 1
  store i32 %527, ptr %6, align 4
  br label %532

528:                                              ; preds = %505
  %529 = landingpad { ptr, i32 }
          cleanup
  %530 = extractvalue { ptr, i32 } %529, 0
  store ptr %530, ptr %5, align 8
  %531 = extractvalue { ptr, i32 } %529, 1
  store i32 %531, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  br label %532

532:                                              ; preds = %528, %524
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #9
  br label %672

533:                                              ; preds = %506
  %534 = landingpad { ptr, i32 }
          cleanup
  %535 = extractvalue { ptr, i32 } %534, 0
  store ptr %535, ptr %5, align 8
  %536 = extractvalue { ptr, i32 } %534, 1
  store i32 %536, ptr %6, align 4
  br label %671

537:                                              ; preds = %507
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %5, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %6, align 4
  br label %670

541:                                              ; preds = %510
  %542 = landingpad { ptr, i32 }
          cleanup
  %543 = extractvalue { ptr, i32 } %542, 0
  store ptr %543, ptr %5, align 8
  %544 = extractvalue { ptr, i32 } %542, 1
  store i32 %544, ptr %6, align 4
  br label %665

545:                                              ; preds = %511
  %546 = landingpad { ptr, i32 }
          cleanup
  %547 = extractvalue { ptr, i32 } %546, 0
  store ptr %547, ptr %5, align 8
  %548 = extractvalue { ptr, i32 } %546, 1
  store i32 %548, ptr %6, align 4
  br label %664

549:                                              ; preds = %514
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %5, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %6, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #9
  br label %641

553:                                              ; preds = %520, %515
  %554 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %555 = extractvalue { ptr, i32 } %554, 0
  store ptr %555, ptr %5, align 8
  %556 = extractvalue { ptr, i32 } %554, 1
  store i32 %556, ptr %6, align 4
  br label %561

557:                                              ; preds = %518
  %558 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %559 = extractvalue { ptr, i32 } %558, 0
  store ptr %559, ptr %5, align 8
  %560 = extractvalue { ptr, i32 } %558, 1
  store i32 %560, ptr %6, align 4
  call void @__cxa_free_exception(ptr %519) #9
  br label %561

561:                                              ; preds = %557, %553
  %562 = load i32, ptr %6, align 4
  %563 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #9
  %564 = icmp eq i32 %562, %563
  br i1 %564, label %565, label %593

565:                                              ; preds = %561
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #9
  %566 = load ptr, ptr %5, align 8
  %567 = call ptr @__cxa_begin_catch(ptr %566) #9
  store ptr %567, ptr %50, align 8
  %568 = load ptr, ptr %50, align 8, !tbaa !5
  %569 = load ptr, ptr %568, align 8, !tbaa !13
  %570 = getelementptr inbounds ptr, ptr %569, i64 2
  %571 = load ptr, ptr %570, align 8
  %572 = call noundef ptr %571(ptr noundef nonnull align 8 dereferenceable(16) %568) #9
  %573 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef %572)
          to label %574 unwind label %610

574:                                              ; preds = %565
  br i1 %573, label %575, label %618

575:                                              ; preds = %574
  %576 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA72_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 1 dereferenceable(72) @.str.83)
          to label %577 unwind label %610

577:                                              ; preds = %575
  %578 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %576, ptr noundef nonnull align 1 dereferenceable(11) @.str.8)
          to label %579 unwind label %610

579:                                              ; preds = %577
  %580 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %578, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %581 unwind label %610

581:                                              ; preds = %579
  %582 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %580, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %583 unwind label %610

583:                                              ; preds = %581
  %584 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %582, ptr noundef nonnull align 1 dereferenceable(11) @.str.10)
          to label %585 unwind label %610

585:                                              ; preds = %583
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #9
  %586 = load ptr, ptr %50, align 8, !tbaa !5
  %587 = load ptr, ptr %586, align 8, !tbaa !13
  %588 = getelementptr inbounds ptr, ptr %587, i64 2
  %589 = load ptr, ptr %588, align 8
  %590 = call noundef ptr %589(ptr noundef nonnull align 8 dereferenceable(16) %586) #9
  store ptr %590, ptr %51, align 8, !tbaa !5
  %591 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIPKcEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %584, ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %592 unwind label %614

592:                                              ; preds = %585
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  store i32 11, ptr %10, align 4
  br label %619

593:                                              ; preds = %561
  %594 = load ptr, ptr %5, align 8
  %595 = call ptr @__cxa_begin_catch(ptr %594) #9
  %596 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA116_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 1 dereferenceable(116) @.str.82)
          to label %597 unwind label %600

597:                                              ; preds = %593
  store i32 11, ptr %10, align 4
  invoke void @__cxa_end_catch()
          to label %604 unwind label %605

598:                                              ; preds = %517
  br label %599

599:                                              ; preds = %598
  br label %623

600:                                              ; preds = %593
  %601 = landingpad { ptr, i32 }
          cleanup
  %602 = extractvalue { ptr, i32 } %601, 0
  store ptr %602, ptr %5, align 8
  %603 = extractvalue { ptr, i32 } %601, 1
  store i32 %603, ptr %6, align 4
  invoke void @__cxa_end_catch()
          to label %609 unwind label %679

604:                                              ; preds = %597
  br label %637

605:                                              ; preds = %626, %597
  %606 = landingpad { ptr, i32 }
          cleanup
  %607 = extractvalue { ptr, i32 } %606, 0
  store ptr %607, ptr %5, align 8
  %608 = extractvalue { ptr, i32 } %606, 1
  store i32 %608, ptr %6, align 4
  br label %640

609:                                              ; preds = %600
  br label %640

610:                                              ; preds = %583, %581, %579, %577, %575, %565
  %611 = landingpad { ptr, i32 }
          cleanup
  %612 = extractvalue { ptr, i32 } %611, 0
  store ptr %612, ptr %5, align 8
  %613 = extractvalue { ptr, i32 } %611, 1
  store i32 %613, ptr %6, align 4
  br label %633

614:                                              ; preds = %585
  %615 = landingpad { ptr, i32 }
          cleanup
  %616 = extractvalue { ptr, i32 } %615, 0
  store ptr %616, ptr %5, align 8
  %617 = extractvalue { ptr, i32 } %615, 1
  store i32 %617, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  br label %633

618:                                              ; preds = %574
  store i8 1, ptr %49, align 1, !tbaa !11
  store i32 0, ptr %10, align 4
  br label %619

619:                                              ; preds = %618, %592
  invoke void @__cxa_end_catch()
          to label %620 unwind label %629

620:                                              ; preds = %619
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  %621 = load i32, ptr %10, align 4
  switch i32 %621, label %637 [
    i32 0, label %622
  ]

622:                                              ; preds = %620
  br label %623

623:                                              ; preds = %622, %599
  %624 = load i8, ptr %49, align 1, !tbaa !11, !range !15, !noundef !16
  %625 = trunc i8 %624 to i1
  br i1 %625, label %636, label %626

626:                                              ; preds = %623
  %627 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA107_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 1 dereferenceable(107) @.str.84)
          to label %628 unwind label %605

628:                                              ; preds = %626
  store i32 11, ptr %10, align 4
  br label %637

629:                                              ; preds = %619
  %630 = landingpad { ptr, i32 }
          cleanup
  %631 = extractvalue { ptr, i32 } %630, 0
  store ptr %631, ptr %5, align 8
  %632 = extractvalue { ptr, i32 } %630, 1
  store i32 %632, ptr %6, align 4
  br label %635

633:                                              ; preds = %614, %610
  invoke void @__cxa_end_catch()
          to label %634 unwind label %679

634:                                              ; preds = %633
  br label %635

635:                                              ; preds = %634, %629
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  br label %640

636:                                              ; preds = %623
  store i32 0, ptr %10, align 4
  br label %637

637:                                              ; preds = %636, %628, %620, %604
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #9
  %638 = load i32, ptr %10, align 4
  switch i32 %638, label %682 [
    i32 0, label %639
    i32 11, label %643
  ]

639:                                              ; preds = %637
  br label %663

640:                                              ; preds = %635, %609, %605
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  br label %641

641:                                              ; preds = %640, %549
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #9
  br label %664

642:                                              ; preds = %513
  br label %643

643:                                              ; preds = %642, %637
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52)
          to label %644 unwind label %649

644:                                              ; preds = %643
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #9
  %645 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %46)
          to label %646 unwind label %653

646:                                              ; preds = %644
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %53, i32 noundef 1, ptr noundef @.str.4, i32 noundef 210, ptr noundef %645)
          to label %647 unwind label %653

647:                                              ; preds = %646
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %52)
          to label %648 unwind label %657

648:                                              ; preds = %647
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  br label %663

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

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

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

661:                                              ; preds = %657, %653
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  br label %662

662:                                              ; preds = %661, %649
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  br label %664

663:                                              ; preds = %648, %639
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #9
  br label %666

664:                                              ; preds = %662, %641, %545
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #9
  br label %665

665:                                              ; preds = %664, %541
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #9
  br label %670

666:                                              ; preds = %663, %509
  call void @_ZN7testing32ScopedFakeTestPartResultReporterD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #9
  call void @_ZN7testing8internal20SingleFailureCheckerD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %42) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %42) #9
  call void @_ZN7testing19TestPartResultArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #9
  br label %667

667:                                              ; preds = %666
  %668 = call noundef zeroext i1 @_ZN7testing8internal11AlwaysFalseEv()
  br i1 %668, label %504, label %669, !llvm.loop !20

669:                                              ; preds = %667
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #9
  ret void

670:                                              ; preds = %665, %537
  call void @_ZN7testing32ScopedFakeTestPartResultReporterD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  br label %671

671:                                              ; preds = %670, %533
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #9
  call void @_ZN7testing8internal20SingleFailureCheckerD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %42) #9
  br label %672

672:                                              ; preds = %671, %532
  call void @llvm.lifetime.end.p0(i64 48, ptr %42) #9
  call void @_ZN7testing19TestPartResultArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #9
  br label %673

673:                                              ; preds = %672, %523, %361, %200
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #9
  br label %674

674:                                              ; preds = %673
  %675 = load ptr, ptr %5, align 8
  %676 = load i32, ptr %6, align 4
  %677 = insertvalue { ptr, i32 } poison, ptr %675, 0
  %678 = insertvalue { ptr, i32 } %677, i32 %676, 1
  resume { ptr, i32 } %678

679:                                              ; preds = %633, %600, %467, %434, %306, %273, %152, %119
  %680 = landingpad { ptr, i32 }
          catch ptr null
  %681 = extractvalue { ptr, i32 } %680, 0
  call void @__clang_call_terminate(ptr %681) #11
  unreachable

682:                                              ; preds = %637, %520, %471, %357, %310, %156, %63
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA71_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(71)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA106_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(106)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA95_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(95)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA51_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(51)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA86_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(86)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA99_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(99)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA55_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(55)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA90_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(90)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA72_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(72)) #4 align 2

attributes #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 #1 = { 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 #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { 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 #5 = { nounwind memory(none) }
attributes #6 = { noinline noreturn nounwind uwtable "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 = { 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 #8 = { 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 #9 = { nounwind }
attributes #10 = { noreturn }
attributes #11 = { noreturn 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 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"vtable pointer", !8, i64 0}
!15 = !{i8 0, i8 2}
!16 = !{}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!20 = distinct !{!20, !18}


; 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.testing::AssertionResult" = type { i8, %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.5" }
%"struct.std::_Head_base.5" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.0 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.0 = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"class.testing::Message" = type { %"class.std::unique_ptr.6" }
%"class.std::unique_ptr.6" = type { %"struct.std::__uniq_ptr_data.7" }
%"struct.std::__uniq_ptr_data.7" = type { %"class.std::__uniq_ptr_impl.8" }
%"class.std::__uniq_ptr_impl.8" = type { %"class.std::tuple.9" }
%"class.std::tuple.9" = type { %"struct.std::_Tuple_impl.10" }
%"struct.std::_Tuple_impl.10" = type { %"struct.std::_Head_base.13" }
%"struct.std::_Head_base.13" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }
%"class.testing::TestPartResultArray" = type { %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<testing::TestPartResult, std::allocator<testing::TestPartResult>>::_Vector_impl" }
%"struct.std::_Vector_base<testing::TestPartResult, std::allocator<testing::TestPartResult>>::_Vector_impl" = type { %"struct.std::_Vector_base<testing::TestPartResult, std::allocator<testing::TestPartResult>>::_Vector_impl_data" }
%"struct.std::_Vector_base<testing::TestPartResult, std::allocator<testing::TestPartResult>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.testing::internal::SingleFailureChecker" = type { ptr, i32, %"class.std::__cxx11::basic_string" }
%"class.testing::ScopedFakeTestPartResultReporter" = type { %"class.testing::TestPartResultReporterInterface", i32, ptr, ptr }
%"class.testing::TestPartResultReporterInterface" = type { ptr }

@_ZTISt13runtime_error = external constant ptr
@.str.4 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [115 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [86 x i8], align 1
@_ZTIi = external constant ptr
@.str.77 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [107 x i8], align 1

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #0

declare i32 @__gxx_personality_v0(...)

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 align 2

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

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

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

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

declare void @_ZN7testing8internal20SingleFailureCheckerC1EPKNS_19TestPartResultArrayENS_14TestPartResult4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0

declare void @_ZN7testing32ScopedFakeTestPartResultReporterC1ENS0_13InterceptModeEPNS_19TestPartResultArrayE(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, ptr noundef) unnamed_addr #0

declare noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv() local_unnamed_addr #0

declare void @_ZN7testing16AssertionSuccessEv(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8) local_unnamed_addr #0

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

; Function Attrs: nofree nosync nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #5

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

declare void @__cxa_end_catch() local_unnamed_addr

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(11)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIPKcEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

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

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

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

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

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

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

; Function Attrs: nounwind
declare void @_ZN7testing8internal20SingleFailureCheckerD1Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #1

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7testing8internal11AlwaysFalseEv() local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA116_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(116)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA107_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(107)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA115_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(115)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN62gtest_extra_test_expect_throw_no_unreachable_code_warning_Test8TestBodyEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(16) %0) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.testing::AssertionResult", align 8
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator", align 1
  %5 = alloca ptr, align 8
  %6 = alloca %"class.testing::Message", align 8
  %7 = alloca %"class.testing::internal::AssertHelper", align 8
  %8 = alloca %"class.testing::TestPartResultArray", align 8
  %9 = alloca %"class.testing::internal::SingleFailureChecker", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator", align 1
  %12 = alloca %"class.testing::ScopedFakeTestPartResultReporter", align 8
  %13 = alloca %"class.testing::AssertionResult", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator", align 1
  %16 = alloca ptr, align 8
  %17 = alloca %"class.testing::Message", align 8
  %18 = alloca %"class.testing::internal::AssertHelper", align 8
  %19 = alloca %"class.testing::TestPartResultArray", align 8
  %20 = alloca %"class.testing::internal::SingleFailureChecker", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator", align 1
  %23 = alloca %"class.testing::ScopedFakeTestPartResultReporter", align 8
  %24 = alloca %"class.testing::AssertionResult", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator", align 1
  %27 = alloca ptr, align 8
  %28 = alloca %"class.testing::Message", align 8
  %29 = alloca %"class.testing::internal::AssertHelper", align 8
  %30 = alloca %"class.testing::TestPartResultArray", align 8
  %31 = alloca %"class.testing::internal::SingleFailureChecker", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator", align 1
  %34 = alloca %"class.testing::ScopedFakeTestPartResultReporter", align 8
  %35 = alloca %"class.testing::AssertionResult", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator", align 1
  %38 = alloca ptr, align 8
  %39 = alloca %"class.testing::Message", align 8
  %40 = alloca %"class.testing::internal::AssertHelper", align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #9
  call void @_ZN7testing16AssertionSuccessEv(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %2)
  %41 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %2)
  br i1 %41, label %42, label %102

42:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %43 unwind label %49

43:                                               ; preds = %42
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #9
  %44 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %45 unwind label %51

45:                                               ; preds = %43
  br i1 %44, label %46, label %.critedge

46:                                               ; preds = %45
  %47 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull @.str.58)
          to label %48 unwind label %53

48:                                               ; preds = %46
  invoke void @__cxa_throw(ptr nonnull %47, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %417 unwind label %51

49:                                               ; preds = %42
  %50 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #9
  br label %101

51:                                               ; preds = %48, %43
  %52 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %55

53:                                               ; preds = %46
  %54 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @__cxa_free_exception(ptr %47) #9
  br label %55

55:                                               ; preds = %53, %51
  %.pn = phi { ptr, i32 } [ %52, %51 ], [ %54, %53 ]
  %.040 = extractvalue { ptr, i32 } %.pn, 0
  %.048 = extractvalue { ptr, i32 } %.pn, 1
  %56 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #9
  %57 = icmp eq i32 %.048, %56
  %58 = call ptr @__cxa_begin_catch(ptr %.040) #9
  br i1 %57, label %59, label %83

59:                                               ; preds = %55
  %60 = load ptr, ptr %58, align 8, !tbaa !5
  %61 = getelementptr inbounds i8, ptr %60, i64 16
  %62 = load ptr, ptr %61, align 8
  %63 = call noundef ptr %62(ptr noundef nonnull align 8 dereferenceable(16) %58) #9
  %64 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef %63)
          to label %65 unwind label %90

65:                                               ; preds = %59
  br i1 %64, label %66, label %94

66:                                               ; preds = %65
  %67 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA71_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 1 dereferenceable(71) @.str.72)
          to label %68 unwind label %90

68:                                               ; preds = %66
  %69 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef nonnull align 1 dereferenceable(11) @.str.8)
          to label %70 unwind label %90

70:                                               ; preds = %68
  %71 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %69, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %72 unwind label %90

72:                                               ; preds = %70
  %73 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %71, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %74 unwind label %90

74:                                               ; preds = %72
  %75 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull align 1 dereferenceable(11) @.str.10)
          to label %76 unwind label %90

76:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #9
  %77 = load ptr, ptr %58, align 8, !tbaa !5
  %78 = getelementptr inbounds i8, ptr %77, i64 16
  %79 = load ptr, ptr %78, align 8
  %80 = call noundef ptr %79(ptr noundef nonnull align 8 dereferenceable(16) %58) #9
  store ptr %80, ptr %5, align 8, !tbaa !8
  %81 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIPKcEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %82 unwind label %92

82:                                               ; preds = %76
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  br label %94

83:                                               ; preds = %55
  %84 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA115_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 1 dereferenceable(115) @.str.71)
          to label %85 unwind label %86

85:                                               ; preds = %83
  invoke void @__cxa_end_catch()
          to label %.thread unwind label %88

86:                                               ; preds = %83
  %87 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %100 unwind label %414

88:                                               ; preds = %.critedge, %85
  %89 = landingpad { ptr, i32 }
          cleanup
  br label %100

90:                                               ; preds = %74, %72, %70, %68, %66, %59
  %91 = landingpad { ptr, i32 }
          cleanup
  br label %99

92:                                               ; preds = %76
  %93 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  br label %99

94:                                               ; preds = %65, %82
  invoke void @__cxa_end_catch()
          to label %95 unwind label %97

95:                                               ; preds = %94
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #9
  br i1 %64, label %102, label %.thread187

.critedge:                                        ; preds = %45
  %96 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA106_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 1 dereferenceable(106) @.str.73)
          to label %.thread unwind label %88

97:                                               ; preds = %94
  %98 = landingpad { ptr, i32 }
          cleanup
  br label %100

99:                                               ; preds = %92, %90
  %.pn107 = phi { ptr, i32 } [ %93, %92 ], [ %91, %90 ]
  invoke void @__cxa_end_catch()
          to label %100 unwind label %414

.thread:                                          ; preds = %85, %.critedge
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #9
  br label %102

100:                                              ; preds = %97, %99, %86, %88
  %.pn111 = phi { ptr, i32 } [ %89, %88 ], [ %87, %86 ], [ %98, %97 ], [ %.pn107, %99 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  br label %101

101:                                              ; preds = %100, %49
  %.pn111.pn = phi { ptr, i32 } [ %.pn111, %100 ], [ %50, %49 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #9
  br label %128

102:                                              ; preds = %95, %.thread, %1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %103 unwind label %108

103:                                              ; preds = %102
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #9
  %104 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %105 unwind label %110

105:                                              ; preds = %103
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %7, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 206, ptr noundef %104)
          to label %106 unwind label %110

106:                                              ; preds = %105
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %107 unwind label %112

107:                                              ; preds = %106
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  br label %.thread187

108:                                              ; preds = %102
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %115

110:                                              ; preds = %105, %103
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %114

112:                                              ; preds = %106
  %113 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #9
  br label %114

114:                                              ; preds = %112, %110
  %.pn114 = phi { ptr, i32 } [ %113, %112 ], [ %111, %110 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  br label %115

115:                                              ; preds = %114, %108
  %.pn114.pn = phi { ptr, i32 } [ %.pn114, %114 ], [ %109, %108 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  br label %128

.thread187:                                       ; preds = %95, %107
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #9
  br label %116

116:                                              ; preds = %209, %.thread187
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #9
  call void @_ZN7testing19TestPartResultArrayC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %9) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %117 unwind label %129

117:                                              ; preds = %116
  invoke void @_ZN7testing8internal20SingleFailureCheckerC1EPKNS_19TestPartResultArrayENS_14TestPartResult4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %9, ptr noundef nonnull %8, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %118 unwind label %131

118:                                              ; preds = %117
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #9
  invoke void @_ZN7testing32ScopedFakeTestPartResultReporterC1ENS0_13InterceptModeEPNS_19TestPartResultArrayE(ptr noundef nonnull align 8 dereferenceable(32) %12, i32 noundef 0, ptr noundef nonnull %8)
          to label %119 unwind label %134

119:                                              ; preds = %118
  %120 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %121 unwind label %136

121:                                              ; preds = %119
  br i1 %120, label %122, label %209

122:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #9
  invoke void @_ZN7testing16AssertionSuccessEv(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %13)
          to label %123 unwind label %138

123:                                              ; preds = %122
  %124 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
  br i1 %124, label %125, label %193

125:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %126 unwind label %140

126:                                              ; preds = %125
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #9
  %127 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %186 unwind label %142

128:                                              ; preds = %115, %101
  %.pn114.pn.pn = phi { ptr, i32 } [ %.pn114.pn, %115 ], [ %.pn111.pn, %101 ]
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #9
  br label %413

129:                                              ; preds = %116
  %130 = landingpad { ptr, i32 }
          cleanup
  br label %133

131:                                              ; preds = %117
  %132 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  br label %133

133:                                              ; preds = %131, %129
  %.pn118 = phi { ptr, i32 } [ %132, %131 ], [ %130, %129 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  br label %227

134:                                              ; preds = %118
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %226

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

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

140:                                              ; preds = %125
  %141 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #9
  br label %192

142:                                              ; preds = %126
  %143 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %144 = extractvalue { ptr, i32 } %143, 0
  %145 = extractvalue { ptr, i32 } %143, 1
  %146 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #9
  %147 = icmp eq i32 %145, %146
  %148 = call ptr @__cxa_begin_catch(ptr %144) #9
  br i1 %147, label %149, label %173

149:                                              ; preds = %142
  %150 = load ptr, ptr %148, align 8, !tbaa !5
  %151 = getelementptr inbounds i8, ptr %150, i64 16
  %152 = load ptr, ptr %151, align 8
  %153 = call noundef ptr %152(ptr noundef nonnull align 8 dereferenceable(16) %148) #9
  %154 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef %153)
          to label %155 unwind label %180

155:                                              ; preds = %149
  br i1 %154, label %156, label %184

156:                                              ; preds = %155
  %157 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA51_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 1 dereferenceable(51) @.str.75)
          to label %158 unwind label %180

158:                                              ; preds = %156
  %159 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %157, ptr noundef nonnull align 1 dereferenceable(11) @.str.8)
          to label %160 unwind label %180

160:                                              ; preds = %158
  %161 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %159, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %162 unwind label %180

162:                                              ; preds = %160
  %163 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %161, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %164 unwind label %180

164:                                              ; preds = %162
  %165 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %163, ptr noundef nonnull align 1 dereferenceable(11) @.str.10)
          to label %166 unwind label %180

166:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #9
  %167 = load ptr, ptr %148, align 8, !tbaa !5
  %168 = getelementptr inbounds i8, ptr %167, i64 16
  %169 = load ptr, ptr %168, align 8
  %170 = call noundef ptr %169(ptr noundef nonnull align 8 dereferenceable(16) %148) #9
  store ptr %170, ptr %16, align 8, !tbaa !8
  %171 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIPKcEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %165, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %172 unwind label %182

172:                                              ; preds = %166
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  br label %184

173:                                              ; preds = %142
  %174 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA95_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 1 dereferenceable(95) @.str.74)
          to label %175 unwind label %176

175:                                              ; preds = %173
  invoke void @__cxa_end_catch()
          to label %.thread194 unwind label %178

176:                                              ; preds = %173
  %177 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %191 unwind label %414

178:                                              ; preds = %186, %175
  %179 = landingpad { ptr, i32 }
          cleanup
  br label %191

180:                                              ; preds = %164, %162, %160, %158, %156, %149
  %181 = landingpad { ptr, i32 }
          cleanup
  br label %190

182:                                              ; preds = %166
  %183 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  br label %190

184:                                              ; preds = %155, %172
  invoke void @__cxa_end_catch()
          to label %185 unwind label %188

185:                                              ; preds = %184
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  br i1 %154, label %193, label %.thread198

186:                                              ; preds = %126
  %187 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA86_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 1 dereferenceable(86) @.str.76)
          to label %.thread194 unwind label %178

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

190:                                              ; preds = %182, %180
  %.pn120 = phi { ptr, i32 } [ %183, %182 ], [ %181, %180 ]
  invoke void @__cxa_end_catch()
          to label %191 unwind label %414

.thread194:                                       ; preds = %175, %186
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  br label %193

191:                                              ; preds = %188, %190, %176, %178
  %.pn124 = phi { ptr, i32 } [ %179, %178 ], [ %177, %176 ], [ %189, %188 ], [ %.pn120, %190 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  br label %192

192:                                              ; preds = %191, %140
  %.pn124.pn = phi { ptr, i32 } [ %.pn124, %191 ], [ %141, %140 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  br label %207

193:                                              ; preds = %185, %.thread194, %123
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %194 unwind label %199

194:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #9
  %195 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %196 unwind label %201

196:                                              ; preds = %194
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %18, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 207, ptr noundef %195)
          to label %197 unwind label %201

197:                                              ; preds = %196
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %198 unwind label %203

198:                                              ; preds = %197
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  br label %.thread198

199:                                              ; preds = %193
  %200 = landingpad { ptr, i32 }
          cleanup
  br label %206

201:                                              ; preds = %196, %194
  %202 = landingpad { ptr, i32 }
          cleanup
  br label %205

203:                                              ; preds = %197
  %204 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  br label %205

205:                                              ; preds = %203, %201
  %.pn127 = phi { ptr, i32 } [ %204, %203 ], [ %202, %201 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  br label %206

206:                                              ; preds = %205, %199
  %.pn127.pn = phi { ptr, i32 } [ %.pn127, %205 ], [ %200, %199 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  br label %207

.thread198:                                       ; preds = %185, %198
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #9
  br label %209

207:                                              ; preds = %206, %192
  %.pn127.pn.pn = phi { ptr, i32 } [ %.pn127.pn, %206 ], [ %.pn124.pn, %192 ]
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #9
  br label %208

208:                                              ; preds = %207, %138
  %.pn127.pn.pn.pn = phi { ptr, i32 } [ %.pn127.pn.pn, %207 ], [ %139, %138 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #9
  br label %225

209:                                              ; preds = %.thread198, %121
  call void @_ZN7testing32ScopedFakeTestPartResultReporterD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  call void @_ZN7testing8internal20SingleFailureCheckerD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %9) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) #9
  call void @_ZN7testing19TestPartResultArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #9
  %210 = call noundef zeroext i1 @_ZN7testing8internal11AlwaysFalseEv()
  br i1 %210, label %116, label %.preheader218, !llvm.loop !11

.preheader218:                                    ; preds = %209, %307
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #9
  call void @_ZN7testing19TestPartResultArrayC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %20) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %211 unwind label %228

211:                                              ; preds = %.preheader218
  invoke void @_ZN7testing8internal20SingleFailureCheckerC1EPKNS_19TestPartResultArrayENS_14TestPartResult4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %20, ptr noundef nonnull %19, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %212 unwind label %230

212:                                              ; preds = %211
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #9
  invoke void @_ZN7testing32ScopedFakeTestPartResultReporterC1ENS0_13InterceptModeEPNS_19TestPartResultArrayE(ptr noundef nonnull align 8 dereferenceable(32) %23, i32 noundef 0, ptr noundef nonnull %19)
          to label %213 unwind label %233

213:                                              ; preds = %212
  %214 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %215 unwind label %235

215:                                              ; preds = %213
  br i1 %214, label %216, label %307

216:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #9
  invoke void @_ZN7testing16AssertionSuccessEv(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %24)
          to label %217 unwind label %237

217:                                              ; preds = %216
  %218 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %24)
  br i1 %218, label %219, label %291

219:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %220 unwind label %239

220:                                              ; preds = %219
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #9
  %221 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %222 unwind label %241

222:                                              ; preds = %220
  br i1 %221, label %223, label %.critedge175

223:                                              ; preds = %222
  %224 = call ptr @__cxa_allocate_exception(i64 4) #9
  store i32 1, ptr %224, align 16, !tbaa !13
  invoke void @__cxa_throw(ptr nonnull %224, ptr nonnull @_ZTIi, ptr null) #10
          to label %.loopexit219.unreachable unwind label %241

225:                                              ; preds = %208, %136
  %.pn127.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn127.pn.pn.pn, %208 ], [ %137, %136 ]
  call void @_ZN7testing32ScopedFakeTestPartResultReporterD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  br label %226

226:                                              ; preds = %225, %134
  %.pn127.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn127.pn.pn.pn.pn, %225 ], [ %135, %134 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  call void @_ZN7testing8internal20SingleFailureCheckerD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %9) #9
  br label %227

227:                                              ; preds = %226, %133
  %.pn127.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn127.pn.pn.pn.pn.pn, %226 ], [ %.pn118, %133 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) #9
  call void @_ZN7testing19TestPartResultArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #9
  br label %413

228:                                              ; preds = %.preheader218
  %229 = landingpad { ptr, i32 }
          cleanup
  br label %232

230:                                              ; preds = %211
  %231 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  br label %232

232:                                              ; preds = %230, %228
  %.pn135 = phi { ptr, i32 } [ %231, %230 ], [ %229, %228 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  br label %326

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

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

237:                                              ; preds = %216
  %238 = landingpad { ptr, i32 }
          cleanup
  br label %306

239:                                              ; preds = %219
  %240 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #9
  br label %290

241:                                              ; preds = %223, %220
  %242 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %243 = extractvalue { ptr, i32 } %242, 0
  %244 = extractvalue { ptr, i32 } %242, 1
  %245 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #9
  %246 = icmp eq i32 %244, %245
  %247 = call ptr @__cxa_begin_catch(ptr %243) #9
  br i1 %246, label %248, label %272

248:                                              ; preds = %241
  %249 = load ptr, ptr %247, align 8, !tbaa !5
  %250 = getelementptr inbounds i8, ptr %249, i64 16
  %251 = load ptr, ptr %250, align 8
  %252 = call noundef ptr %251(ptr noundef nonnull align 8 dereferenceable(16) %247) #9
  %253 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef %252)
          to label %254 unwind label %279

254:                                              ; preds = %248
  br i1 %253, label %255, label %283

255:                                              ; preds = %254
  %256 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA55_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 1 dereferenceable(55) @.str.78)
          to label %257 unwind label %279

257:                                              ; preds = %255
  %258 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %256, ptr noundef nonnull align 1 dereferenceable(11) @.str.8)
          to label %259 unwind label %279

259:                                              ; preds = %257
  %260 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %258, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %261 unwind label %279

261:                                              ; preds = %259
  %262 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %260, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %263 unwind label %279

263:                                              ; preds = %261
  %264 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %262, ptr noundef nonnull align 1 dereferenceable(11) @.str.10)
          to label %265 unwind label %279

265:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #9
  %266 = load ptr, ptr %247, align 8, !tbaa !5
  %267 = getelementptr inbounds i8, ptr %266, i64 16
  %268 = load ptr, ptr %267, align 8
  %269 = call noundef ptr %268(ptr noundef nonnull align 8 dereferenceable(16) %247) #9
  store ptr %269, ptr %27, align 8, !tbaa !8
  %270 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIPKcEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %264, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %271 unwind label %281

271:                                              ; preds = %265
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #9
  br label %283

272:                                              ; preds = %241
  %273 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA99_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 1 dereferenceable(99) @.str.77)
          to label %274 unwind label %275

274:                                              ; preds = %272
  invoke void @__cxa_end_catch()
          to label %.thread204 unwind label %277

275:                                              ; preds = %272
  %276 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %289 unwind label %414

277:                                              ; preds = %.critedge175, %274
  %278 = landingpad { ptr, i32 }
          cleanup
  br label %289

279:                                              ; preds = %263, %261, %259, %257, %255, %248
  %280 = landingpad { ptr, i32 }
          cleanup
  br label %288

281:                                              ; preds = %265
  %282 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #9
  br label %288

283:                                              ; preds = %254, %271
  invoke void @__cxa_end_catch()
          to label %284 unwind label %286

284:                                              ; preds = %283
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #9
  br i1 %253, label %291, label %.thread207

.critedge175:                                     ; preds = %222
  %285 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA90_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 1 dereferenceable(90) @.str.79)
          to label %.thread204 unwind label %277

286:                                              ; preds = %283
  %287 = landingpad { ptr, i32 }
          cleanup
  br label %289

288:                                              ; preds = %281, %279
  %.pn137 = phi { ptr, i32 } [ %282, %281 ], [ %280, %279 ]
  invoke void @__cxa_end_catch()
          to label %289 unwind label %414

.thread204:                                       ; preds = %274, %.critedge175
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #9
  br label %291

289:                                              ; preds = %286, %288, %275, %277
  %.pn141 = phi { ptr, i32 } [ %278, %277 ], [ %276, %275 ], [ %287, %286 ], [ %.pn137, %288 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  br label %290

290:                                              ; preds = %289, %239
  %.pn141.pn = phi { ptr, i32 } [ %.pn141, %289 ], [ %240, %239 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #9
  br label %305

291:                                              ; preds = %284, %.thread204, %217
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %292 unwind label %297

292:                                              ; preds = %291
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #9
  %293 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %294 unwind label %299

294:                                              ; preds = %292
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %29, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 208, ptr noundef %293)
          to label %295 unwind label %299

295:                                              ; preds = %294
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %296 unwind label %301

296:                                              ; preds = %295
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #9
  br label %.thread207

297:                                              ; preds = %291
  %298 = landingpad { ptr, i32 }
          cleanup
  br label %304

299:                                              ; preds = %294, %292
  %300 = landingpad { ptr, i32 }
          cleanup
  br label %303

301:                                              ; preds = %295
  %302 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  br label %303

303:                                              ; preds = %301, %299
  %.pn144 = phi { ptr, i32 } [ %302, %301 ], [ %300, %299 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  br label %304

304:                                              ; preds = %303, %297
  %.pn144.pn = phi { ptr, i32 } [ %.pn144, %303 ], [ %298, %297 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #9
  br label %305

.thread207:                                       ; preds = %284, %296
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #9
  br label %307

305:                                              ; preds = %304, %290
  %.pn144.pn.pn = phi { ptr, i32 } [ %.pn144.pn, %304 ], [ %.pn141.pn, %290 ]
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #9
  br label %306

306:                                              ; preds = %305, %237
  %.pn144.pn.pn.pn = phi { ptr, i32 } [ %.pn144.pn.pn, %305 ], [ %238, %237 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #9
  br label %324

307:                                              ; preds = %.thread207, %215
  call void @_ZN7testing32ScopedFakeTestPartResultReporterD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #9
  call void @_ZN7testing8internal20SingleFailureCheckerD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %20) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %20) #9
  call void @_ZN7testing19TestPartResultArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #9
  %308 = call noundef zeroext i1 @_ZN7testing8internal11AlwaysFalseEv()
  br i1 %308, label %.preheader218, label %.preheader, !llvm.loop !15

.preheader:                                       ; preds = %307, %407
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %30) #9
  call void @_ZN7testing19TestPartResultArrayC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %31) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %309 unwind label %327

309:                                              ; preds = %.preheader
  invoke void @_ZN7testing8internal20SingleFailureCheckerC1EPKNS_19TestPartResultArrayENS_14TestPartResult4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %31, ptr noundef nonnull %30, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %310 unwind label %329

310:                                              ; preds = %309
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #9
  invoke void @_ZN7testing32ScopedFakeTestPartResultReporterC1ENS0_13InterceptModeEPNS_19TestPartResultArrayE(ptr noundef nonnull align 8 dereferenceable(32) %34, i32 noundef 0, ptr noundef nonnull %30)
          to label %311 unwind label %332

311:                                              ; preds = %310
  %312 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %313 unwind label %334

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

314:                                              ; preds = %313
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #9
  invoke void @_ZN7testing16AssertionSuccessEv(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %35)
          to label %315 unwind label %336

315:                                              ; preds = %314
  %316 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %35)
  br i1 %316, label %317, label %391

317:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %318 unwind label %338

318:                                              ; preds = %317
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #9
  %319 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %320 unwind label %340

320:                                              ; preds = %318
  br i1 %319, label %321, label %.critedge179

321:                                              ; preds = %320
  %322 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %322, ptr noundef nonnull @.str.81)
          to label %323 unwind label %342

323:                                              ; preds = %321
  invoke void @__cxa_throw(ptr nonnull %322, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %.loopexit.unreachable unwind label %340

324:                                              ; preds = %306, %235
  %.pn144.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn144.pn.pn.pn, %306 ], [ %236, %235 ]
  call void @_ZN7testing32ScopedFakeTestPartResultReporterD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  br label %325

325:                                              ; preds = %324, %233
  %.pn144.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn144.pn.pn.pn.pn, %324 ], [ %234, %233 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #9
  call void @_ZN7testing8internal20SingleFailureCheckerD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %20) #9
  br label %326

326:                                              ; preds = %325, %232
  %.pn144.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn144.pn.pn.pn.pn.pn, %325 ], [ %.pn135, %232 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %20) #9
  call void @_ZN7testing19TestPartResultArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #9
  br label %413

327:                                              ; preds = %.preheader
  %328 = landingpad { ptr, i32 }
          cleanup
  br label %331

329:                                              ; preds = %309
  %330 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #9
  br label %331

331:                                              ; preds = %329, %327
  %.pn152 = phi { ptr, i32 } [ %330, %329 ], [ %328, %327 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #9
  br label %412

332:                                              ; preds = %310
  %333 = landingpad { ptr, i32 }
          cleanup
  br label %411

334:                                              ; preds = %311
  %335 = landingpad { ptr, i32 }
          cleanup
  br label %410

336:                                              ; preds = %314
  %337 = landingpad { ptr, i32 }
          cleanup
  br label %406

338:                                              ; preds = %317
  %339 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #9
  br label %390

340:                                              ; preds = %323, %318
  %341 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %344

342:                                              ; preds = %321
  %343 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @__cxa_free_exception(ptr %322) #9
  br label %344

344:                                              ; preds = %342, %340
  %.pn154 = phi { ptr, i32 } [ %341, %340 ], [ %343, %342 ]
  %.33 = extractvalue { ptr, i32 } %.pn154, 0
  %.3381 = extractvalue { ptr, i32 } %.pn154, 1
  %345 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #9
  %346 = icmp eq i32 %.3381, %345
  %347 = call ptr @__cxa_begin_catch(ptr %.33) #9
  br i1 %346, label %348, label %372

348:                                              ; preds = %344
  %349 = load ptr, ptr %347, align 8, !tbaa !5
  %350 = getelementptr inbounds i8, ptr %349, i64 16
  %351 = load ptr, ptr %350, align 8
  %352 = call noundef ptr %351(ptr noundef nonnull align 8 dereferenceable(16) %347) #9
  %353 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef %352)
          to label %354 unwind label %379

354:                                              ; preds = %348
  br i1 %353, label %355, label %383

355:                                              ; preds = %354
  %356 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA72_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 1 dereferenceable(72) @.str.83)
          to label %357 unwind label %379

357:                                              ; preds = %355
  %358 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %356, ptr noundef nonnull align 1 dereferenceable(11) @.str.8)
          to label %359 unwind label %379

359:                                              ; preds = %357
  %360 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %358, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %361 unwind label %379

361:                                              ; preds = %359
  %362 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %360, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %363 unwind label %379

363:                                              ; preds = %361
  %364 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA11_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %362, ptr noundef nonnull align 1 dereferenceable(11) @.str.10)
          to label %365 unwind label %379

365:                                              ; preds = %363
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #9
  %366 = load ptr, ptr %347, align 8, !tbaa !5
  %367 = getelementptr inbounds i8, ptr %366, i64 16
  %368 = load ptr, ptr %367, align 8
  %369 = call noundef ptr %368(ptr noundef nonnull align 8 dereferenceable(16) %347) #9
  store ptr %369, ptr %38, align 8, !tbaa !8
  %370 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIPKcEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %364, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %371 unwind label %381

371:                                              ; preds = %365
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  br label %383

372:                                              ; preds = %344
  %373 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA116_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 1 dereferenceable(116) @.str.82)
          to label %374 unwind label %375

374:                                              ; preds = %372
  invoke void @__cxa_end_catch()
          to label %.thread212 unwind label %377

375:                                              ; preds = %372
  %376 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %389 unwind label %414

377:                                              ; preds = %.critedge179, %374
  %378 = landingpad { ptr, i32 }
          cleanup
  br label %389

379:                                              ; preds = %363, %361, %359, %357, %355, %348
  %380 = landingpad { ptr, i32 }
          cleanup
  br label %388

381:                                              ; preds = %365
  %382 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  br label %388

383:                                              ; preds = %354, %371
  invoke void @__cxa_end_catch()
          to label %384 unwind label %386

384:                                              ; preds = %383
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #9
  br i1 %353, label %391, label %.thread215

.critedge179:                                     ; preds = %320
  %385 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA107_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 1 dereferenceable(107) @.str.84)
          to label %.thread212 unwind label %377

386:                                              ; preds = %383
  %387 = landingpad { ptr, i32 }
          cleanup
  br label %389

388:                                              ; preds = %381, %379
  %.pn156 = phi { ptr, i32 } [ %382, %381 ], [ %380, %379 ]
  invoke void @__cxa_end_catch()
          to label %389 unwind label %414

.thread212:                                       ; preds = %374, %.critedge179
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #9
  br label %391

389:                                              ; preds = %386, %388, %375, %377
  %.pn160 = phi { ptr, i32 } [ %378, %377 ], [ %376, %375 ], [ %387, %386 ], [ %.pn156, %388 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  br label %390

390:                                              ; preds = %389, %338
  %.pn160.pn = phi { ptr, i32 } [ %.pn160, %389 ], [ %339, %338 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #9
  br label %405

391:                                              ; preds = %384, %.thread212, %315
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %392 unwind label %397

392:                                              ; preds = %391
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #9
  %393 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %35)
          to label %394 unwind label %399

394:                                              ; preds = %392
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %40, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 210, ptr noundef %393)
          to label %395 unwind label %399

395:                                              ; preds = %394
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %396 unwind label %401

396:                                              ; preds = %395
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #9
  br label %.thread215

397:                                              ; preds = %391
  %398 = landingpad { ptr, i32 }
          cleanup
  br label %404

399:                                              ; preds = %394, %392
  %400 = landingpad { ptr, i32 }
          cleanup
  br label %403

401:                                              ; preds = %395
  %402 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  br label %403

403:                                              ; preds = %401, %399
  %.pn163 = phi { ptr, i32 } [ %402, %401 ], [ %400, %399 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #9
  br label %404

404:                                              ; preds = %403, %397
  %.pn163.pn = phi { ptr, i32 } [ %.pn163, %403 ], [ %398, %397 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #9
  br label %405

.thread215:                                       ; preds = %384, %396
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #9
  br label %407

405:                                              ; preds = %404, %390
  %.pn163.pn.pn = phi { ptr, i32 } [ %.pn163.pn, %404 ], [ %.pn160.pn, %390 ]
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #9
  br label %406

406:                                              ; preds = %405, %336
  %.pn163.pn.pn.pn = phi { ptr, i32 } [ %.pn163.pn.pn, %405 ], [ %337, %336 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #9
  br label %410

407:                                              ; preds = %.thread215, %313
  call void @_ZN7testing32ScopedFakeTestPartResultReporterD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #9
  call void @_ZN7testing8internal20SingleFailureCheckerD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %31) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %31) #9
  call void @_ZN7testing19TestPartResultArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #9
  %408 = call noundef zeroext i1 @_ZN7testing8internal11AlwaysFalseEv()
  br i1 %408, label %.preheader, label %409, !llvm.loop !16

409:                                              ; preds = %407
  ret void

410:                                              ; preds = %406, %334
  %.pn163.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn163.pn.pn.pn, %406 ], [ %335, %334 ]
  call void @_ZN7testing32ScopedFakeTestPartResultReporterD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  br label %411

411:                                              ; preds = %410, %332
  %.pn163.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn163.pn.pn.pn.pn, %410 ], [ %333, %332 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #9
  call void @_ZN7testing8internal20SingleFailureCheckerD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %31) #9
  br label %412

412:                                              ; preds = %411, %331
  %.pn163.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn163.pn.pn.pn.pn.pn, %411 ], [ %.pn152, %331 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %31) #9
  call void @_ZN7testing19TestPartResultArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #9
  br label %413

413:                                              ; preds = %412, %326, %227, %128
  %.pn163.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn163.pn.pn.pn.pn.pn.pn, %412 ], [ %.pn144.pn.pn.pn.pn.pn.pn, %326 ], [ %.pn127.pn.pn.pn.pn.pn.pn, %227 ], [ %.pn114.pn.pn, %128 ]
  resume { ptr, i32 } %.pn163.pn.pn.pn.pn.pn.pn.pn

414:                                              ; preds = %388, %375, %288, %275, %190, %176, %99, %86
  %415 = landingpad { ptr, i32 }
          catch ptr null
  %416 = extractvalue { ptr, i32 } %415, 0
  call void @__clang_call_terminate(ptr %416) #11
  unreachable

.loopexit.unreachable:                            ; preds = %323
  unreachable

.loopexit219.unreachable:                         ; preds = %223
  unreachable

417:                                              ; preds = %48
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA71_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(71)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA106_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(106)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA95_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(95)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA51_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(51)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA86_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(86)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA99_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(99)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA55_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(55)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA90_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(90)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN7testing15AssertionResultlsIA72_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(72)) local_unnamed_addr #4 align 2

attributes #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 #1 = { 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 #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { 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 #5 = { nofree nosync nounwind memory(none) }
attributes #6 = { noinline noreturn nounwind uwtable "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 = { 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 #8 = { 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 #9 = { nounwind }
attributes #10 = { noreturn }
attributes #11 = { noreturn 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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !10, i64 0}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass