; LLVM IR from gem5/gem5 :: util/m5/src/command/initparam.test.ll (ZN19Fail_Arguments_Test8TestBodyEv)

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.testing::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.4" }
%"struct.std::_Head_base.4" = type { ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.std::allocator" = type { i8 }
%"class.testing::Message" = type { %"class.std::unique_ptr.5" }
%"class.std::unique_ptr.5" = type { %"struct.std::__uniq_ptr_data.6" }
%"struct.std::__uniq_ptr_data.6" = type { %"class.std::__uniq_ptr_impl.7" }
%"class.std::__uniq_ptr_impl.7" = type { %"class.std::tuple.8" }
%"class.std::tuple.8" = type { %"struct.std::_Tuple_impl.9" }
%"struct.std::_Tuple_impl.9" = type { %"struct.std::_Head_base.12" }
%"struct.std::_Head_base.12" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }

@test_key_str1 = external dso_local global i64, align 8
@test_key_str2 = external dso_local global i64, align 8
@test_result = external dso_local global i64, align 8
@_Z11cout_outputB5cxx11 = external dso_local global %"class.std::__cxx11::basic_string", align 8
@.str.4 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [188 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [188 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [188 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [24 x i8], align 1

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z3runSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr, i64) #1

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

declare i32 @__gxx_personality_v0(...)

; 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 void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 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 #1 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN19Fail_Arguments_Test8TestBodyEv(ptr noundef nonnull align 8 dereferenceable(16) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.testing::AssertionResult", align 8
  %4 = alloca i8, align 1
  %5 = alloca %"class.std::initializer_list", align 8
  %6 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %7 = alloca ptr, align 8
  %8 = alloca %"class.std::allocator", align 1
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i1, align 1
  %12 = alloca %"class.testing::Message", align 8
  %13 = alloca %"class.testing::internal::AssertHelper", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.testing::AssertionResult", align 8
  %16 = alloca %"class.testing::Message", align 8
  %17 = alloca %"class.testing::internal::AssertHelper", align 8
  %18 = alloca %"class.testing::AssertionResult", align 8
  %19 = alloca i8, align 1
  %20 = alloca %"class.std::initializer_list", align 8
  %21 = alloca [2 x %"class.std::__cxx11::basic_string"], align 8
  %22 = alloca ptr, align 8
  %23 = alloca %"class.std::allocator", align 1
  %24 = alloca %"class.std::allocator", align 1
  %25 = alloca i1, align 1
  %26 = alloca %"class.testing::Message", align 8
  %27 = alloca %"class.testing::internal::AssertHelper", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.testing::AssertionResult", align 8
  %30 = alloca i32, align 4
  %31 = alloca %"class.testing::Message", align 8
  %32 = alloca %"class.testing::internal::AssertHelper", align 8
  %33 = alloca %"class.testing::AssertionResult", align 8
  %34 = alloca i32, align 4
  %35 = alloca %"class.testing::Message", align 8
  %36 = alloca %"class.testing::internal::AssertHelper", align 8
  %37 = alloca %"class.testing::AssertionResult", align 8
  %38 = alloca %"class.testing::Message", align 8
  %39 = alloca %"class.testing::internal::AssertHelper", align 8
  %40 = alloca %"class.testing::AssertionResult", align 8
  %41 = alloca i8, align 1
  %42 = alloca %"class.std::initializer_list", align 8
  %43 = alloca [2 x %"class.std::__cxx11::basic_string"], align 8
  %44 = alloca ptr, align 8
  %45 = alloca %"class.std::allocator", align 1
  %46 = alloca %"class.std::allocator", align 1
  %47 = alloca i1, align 1
  %48 = alloca %"class.testing::Message", align 8
  %49 = alloca %"class.testing::internal::AssertHelper", align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.testing::AssertionResult", align 8
  %52 = alloca i64, align 8
  %53 = alloca %"class.testing::Message", align 8
  %54 = alloca %"class.testing::internal::AssertHelper", align 8
  %55 = alloca %"class.testing::AssertionResult", align 8
  %56 = alloca i32, align 4
  %57 = alloca %"class.testing::Message", align 8
  %58 = alloca %"class.testing::internal::AssertHelper", align 8
  %59 = alloca %"class.testing::AssertionResult", align 8
  %60 = alloca %"class.testing::Message", align 8
  %61 = alloca %"class.testing::internal::AssertHelper", align 8
  %62 = alloca %"class.testing::AssertionResult", align 8
  %63 = alloca i8, align 1
  %64 = alloca %"class.std::initializer_list", align 8
  %65 = alloca [2 x %"class.std::__cxx11::basic_string"], align 8
  %66 = alloca ptr, align 8
  %67 = alloca %"class.std::allocator", align 1
  %68 = alloca %"class.std::allocator", align 1
  %69 = alloca i1, align 1
  %70 = alloca %"class.testing::Message", align 8
  %71 = alloca %"class.testing::internal::AssertHelper", align 8
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.testing::AssertionResult", align 8
  %74 = alloca i64, align 8
  %75 = alloca %"class.testing::Message", align 8
  %76 = alloca %"class.testing::internal::AssertHelper", align 8
  %77 = alloca %"class.testing::AssertionResult", align 8
  %78 = alloca i64, align 8
  %79 = alloca %"class.testing::Message", align 8
  %80 = alloca %"class.testing::internal::AssertHelper", align 8
  %81 = alloca %"class.testing::AssertionResult", align 8
  %82 = alloca %"class.testing::Message", align 8
  %83 = alloca %"class.testing::internal::AssertHelper", align 8
  %84 = alloca %"class.testing::AssertionResult", align 8
  %85 = alloca i8, align 1
  %86 = alloca %"class.std::initializer_list", align 8
  %87 = alloca [2 x %"class.std::__cxx11::basic_string"], align 8
  %88 = alloca ptr, align 8
  %89 = alloca %"class.std::allocator", align 1
  %90 = alloca %"class.std::allocator", align 1
  %91 = alloca i1, align 1
  %92 = alloca %"class.testing::Message", align 8
  %93 = alloca %"class.testing::internal::AssertHelper", align 8
  %94 = alloca %"class.std::__cxx11::basic_string", align 8
  %95 = alloca %"class.testing::AssertionResult", align 8
  %96 = alloca i64, align 8
  %97 = alloca %"class.testing::Message", align 8
  %98 = alloca %"class.testing::internal::AssertHelper", align 8
  %99 = alloca %"class.testing::AssertionResult", align 8
  %100 = alloca i64, align 8
  %101 = alloca %"class.testing::Message", align 8
  %102 = alloca %"class.testing::internal::AssertHelper", align 8
  %103 = alloca %"class.testing::AssertionResult", align 8
  %104 = alloca %"class.testing::Message", align 8
  %105 = alloca %"class.testing::internal::AssertHelper", align 8
  %106 = alloca %"class.testing::AssertionResult", align 8
  %107 = alloca i8, align 1
  %108 = alloca %"class.std::initializer_list", align 8
  %109 = alloca [2 x %"class.std::__cxx11::basic_string"], align 8
  %110 = alloca ptr, align 8
  %111 = alloca %"class.std::allocator", align 1
  %112 = alloca %"class.std::allocator", align 1
  %113 = alloca i1, align 1
  %114 = alloca %"class.testing::Message", align 8
  %115 = alloca %"class.testing::internal::AssertHelper", align 8
  %116 = alloca %"class.std::__cxx11::basic_string", align 8
  %117 = alloca %"class.testing::AssertionResult", align 8
  %118 = alloca %"class.testing::Message", align 8
  %119 = alloca %"class.testing::internal::AssertHelper", align 8
  %120 = alloca %"class.testing::AssertionResult", align 8
  %121 = alloca i8, align 1
  %122 = alloca %"class.std::initializer_list", align 8
  %123 = alloca [2 x %"class.std::__cxx11::basic_string"], align 8
  %124 = alloca ptr, align 8
  %125 = alloca %"class.std::allocator", align 1
  %126 = alloca %"class.std::allocator", align 1
  %127 = alloca i1, align 1
  %128 = alloca %"class.testing::Message", align 8
  %129 = alloca %"class.testing::internal::AssertHelper", align 8
  %130 = alloca %"class.std::__cxx11::basic_string", align 8
  %131 = alloca %"class.testing::AssertionResult", align 8
  %132 = alloca %"class.testing::Message", align 8
  %133 = alloca %"class.testing::internal::AssertHelper", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %134 = load ptr, ptr %2, align 8
  store i64 0, ptr @test_key_str1, align 8, !tbaa !9
  store i64 0, ptr @test_key_str2, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %3) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %4) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %6) #6
  store i1 true, ptr %11, align 1
  store ptr %6, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %135 unwind label %157

135:                                              ; preds = %1
  store i1 false, ptr %11, align 1
  %136 = getelementptr inbounds %"class.std::initializer_list", ptr %5, i32 0, i32 0
  store ptr %6, ptr %136, align 8, !tbaa !11
  %137 = getelementptr inbounds %"class.std::initializer_list", ptr %5, i32 0, i32 1
  store i64 1, ptr %137, align 8, !tbaa !13
  %138 = getelementptr inbounds { ptr, i64 }, ptr %5, i32 0, i32 0
  %139 = load ptr, ptr %138, align 8
  %140 = getelementptr inbounds { ptr, i64 }, ptr %5, i32 0, i32 1
  %141 = load i64, ptr %140, align 8
  %142 = invoke noundef zeroext i1 @_Z3runSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr %139, i64 %141)
          to label %143 unwind label %161

143:                                              ; preds = %135
  %144 = xor i1 %142, true
  %145 = zext i1 %144 to i8
  store i8 %145, ptr %4, align 1, !tbaa !14
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNSt9enable_ifIXntsr3std14is_convertibleIS2_S0_EE5valueEvE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 1 dereferenceable(1) %4, ptr noundef null)
          to label %146 unwind label %161

146:                                              ; preds = %143
  %147 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %6, i32 0, i32 0
  %148 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %147, i64 1
  br label %149

149:                                              ; preds = %149, %146
  %150 = phi ptr [ %148, %146 ], [ %151, %149 ]
  %151 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %150, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #6
  %152 = icmp eq ptr %151, %147
  br i1 %152, label %153, label %149

153:                                              ; preds = %149
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %4) #6
  %154 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %155 unwind label %183

155:                                              ; preds = %153
  br i1 %154, label %156, label %187

156:                                              ; preds = %155
  br label %212

157:                                              ; preds = %1
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %9, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %10, align 4
  br label %172

161:                                              ; preds = %143, %135
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %9, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %10, align 4
  %165 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %6, i32 0, i32 0
  %166 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %165, i64 1
  br label %167

167:                                              ; preds = %167, %161
  %168 = phi ptr [ %166, %161 ], [ %169, %167 ]
  %169 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %168, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #6
  %170 = icmp eq ptr %169, %165
  br i1 %170, label %171, label %167

171:                                              ; preds = %167
  br label %172

172:                                              ; preds = %171, %157
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #6
  %173 = load i1, ptr %11, align 1
  br i1 %173, label %174, label %182

174:                                              ; preds = %172
  %175 = load ptr, ptr %7, align 8
  %176 = icmp eq ptr %6, %175
  br i1 %176, label %181, label %177

177:                                              ; preds = %177, %174
  %178 = phi ptr [ %175, %174 ], [ %179, %177 ]
  %179 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %178, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #6
  %180 = icmp eq ptr %179, %6
  br i1 %180, label %181, label %177

181:                                              ; preds = %177, %174
  br label %182

182:                                              ; preds = %181, %172
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %4) #6
  br label %217

183:                                              ; preds = %153
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %9, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %10, align 4
  br label %216

187:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %188 unwind label %193

188:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #6
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef @.str.8)
          to label %189 unwind label %197

189:                                              ; preds = %188
  %190 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %13, i32 noundef 1, ptr noundef @.str.4, i32 noundef 74, ptr noundef %190)
          to label %191 unwind label %201

191:                                              ; preds = %189
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %192 unwind label %205

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

193:                                              ; preds = %187
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %9, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %10, align 4
  br label %211

197:                                              ; preds = %188
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %9, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %10, align 4
  br label %210

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

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

209:                                              ; preds = %205, %201
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  br label %210

210:                                              ; preds = %209, %197
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #6
  br label %211

211:                                              ; preds = %210, %193
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  br label %216

212:                                              ; preds = %192, %156
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #6
  call void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA1_cTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSJ_RKSB_RKSC_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %15, ptr noundef @.str.9, ptr noundef @.str.10, ptr noundef nonnull align 8 dereferenceable(32) @_Z11cout_outputB5cxx11, ptr noundef nonnull align 1 dereferenceable(1) @.str.11)
  %213 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %214 unwind label %218

214:                                              ; preds = %212
  br i1 %213, label %215, label %222

215:                                              ; preds = %214
  br label %242

216:                                              ; preds = %211, %183
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #6
  br label %217

217:                                              ; preds = %216, %182
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #6
  br label %1168

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

222:                                              ; preds = %214
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %223 unwind label %228

223:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  %224 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %225 unwind label %232

225:                                              ; preds = %223
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %17, i32 noundef 1, ptr noundef @.str.4, i32 noundef 75, ptr noundef %224)
          to label %226 unwind label %232

226:                                              ; preds = %225
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %227 unwind label %236

227:                                              ; preds = %226
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  br label %242

228:                                              ; preds = %222
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %9, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %10, align 4
  br label %241

232:                                              ; preds = %225, %223
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %9, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %10, align 4
  br label %240

236:                                              ; preds = %226
  %237 = landingpad { ptr, i32 }
          cleanup
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %9, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #6
  br label %240

240:                                              ; preds = %236, %232
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #6
  br label %241

241:                                              ; preds = %240, %228
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  br label %266

242:                                              ; preds = %227, %215
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #6
  store i64 1, ptr @test_key_str1, align 8, !tbaa !9
  store i64 1, ptr @test_key_str2, align 8, !tbaa !9
  store i64 5, ptr @test_result, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %21) #6
  store i1 true, ptr %25, align 1
  store ptr %21, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %243 unwind label %267

243:                                              ; preds = %242
  %244 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %21, i64 1
  store ptr %244, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %244, ptr noundef @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %245 unwind label %271

245:                                              ; preds = %243
  store i1 false, ptr %25, align 1
  %246 = getelementptr inbounds %"class.std::initializer_list", ptr %20, i32 0, i32 0
  store ptr %21, ptr %246, align 8, !tbaa !11
  %247 = getelementptr inbounds %"class.std::initializer_list", ptr %20, i32 0, i32 1
  store i64 2, ptr %247, align 8, !tbaa !13
  %248 = getelementptr inbounds { ptr, i64 }, ptr %20, i32 0, i32 0
  %249 = load ptr, ptr %248, align 8
  %250 = getelementptr inbounds { ptr, i64 }, ptr %20, i32 0, i32 1
  %251 = load i64, ptr %250, align 8
  %252 = invoke noundef zeroext i1 @_Z3runSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr %249, i64 %251)
          to label %253 unwind label %275

253:                                              ; preds = %245
  %254 = zext i1 %252 to i8
  store i8 %254, ptr %19, align 1, !tbaa !14
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNSt9enable_ifIXntsr3std14is_convertibleIS2_S0_EE5valueEvE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 1 dereferenceable(1) %19, ptr noundef null)
          to label %255 unwind label %275

255:                                              ; preds = %253
  %256 = getelementptr inbounds [2 x %"class.std::__cxx11::basic_string"], ptr %21, i32 0, i32 0
  %257 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %256, i64 2
  br label %258

258:                                              ; preds = %258, %255
  %259 = phi ptr [ %257, %255 ], [ %260, %258 ]
  %260 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %259, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %260) #6
  %261 = icmp eq ptr %260, %256
  br i1 %261, label %262, label %258

262:                                              ; preds = %258
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  %263 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %18)
          to label %264 unwind label %298

264:                                              ; preds = %262
  br i1 %263, label %265, label %302

265:                                              ; preds = %264
  br label %327

266:                                              ; preds = %241, %218
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #6
  br label %1168

267:                                              ; preds = %242
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %9, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %10, align 4
  br label %287

271:                                              ; preds = %243
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %9, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %10, align 4
  br label %286

275:                                              ; preds = %253, %245
  %276 = landingpad { ptr, i32 }
          cleanup
  %277 = extractvalue { ptr, i32 } %276, 0
  store ptr %277, ptr %9, align 8
  %278 = extractvalue { ptr, i32 } %276, 1
  store i32 %278, ptr %10, align 4
  %279 = getelementptr inbounds [2 x %"class.std::__cxx11::basic_string"], ptr %21, i32 0, i32 0
  %280 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %279, i64 2
  br label %281

281:                                              ; preds = %281, %275
  %282 = phi ptr [ %280, %275 ], [ %283, %281 ]
  %283 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %282, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %283) #6
  %284 = icmp eq ptr %283, %279
  br i1 %284, label %285, label %281

285:                                              ; preds = %281
  br label %286

286:                                              ; preds = %285, %271
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  br label %287

287:                                              ; preds = %286, %267
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #6
  %288 = load i1, ptr %25, align 1
  br i1 %288, label %289, label %297

289:                                              ; preds = %287
  %290 = load ptr, ptr %22, align 8
  %291 = icmp eq ptr %21, %290
  br i1 %291, label %296, label %292

292:                                              ; preds = %292, %289
  %293 = phi ptr [ %290, %289 ], [ %294, %292 ]
  %294 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %293, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %294) #6
  %295 = icmp eq ptr %294, %21
  br i1 %295, label %296, label %292

296:                                              ; preds = %292, %289
  br label %297

297:                                              ; preds = %296, %287
  call void @llvm.lifetime.end.p0(i64 64, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  br label %332

298:                                              ; preds = %262
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %9, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %10, align 4
  br label %331

302:                                              ; preds = %264
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %303 unwind label %308

303:                                              ; preds = %302
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #6
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef @.str.12, ptr noundef @.str.8, ptr noundef @.str.7)
          to label %304 unwind label %312

304:                                              ; preds = %303
  %305 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %28) #6
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %27, i32 noundef 1, ptr noundef @.str.4, i32 noundef 81, ptr noundef %305)
          to label %306 unwind label %316

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

307:                                              ; preds = %306
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  br label %327

308:                                              ; preds = %302
  %309 = landingpad { ptr, i32 }
          cleanup
  %310 = extractvalue { ptr, i32 } %309, 0
  store ptr %310, ptr %9, align 8
  %311 = extractvalue { ptr, i32 } %309, 1
  store i32 %311, ptr %10, align 4
  br label %326

312:                                              ; preds = %303
  %313 = landingpad { ptr, i32 }
          cleanup
  %314 = extractvalue { ptr, i32 } %313, 0
  store ptr %314, ptr %9, align 8
  %315 = extractvalue { ptr, i32 } %313, 1
  store i32 %315, ptr %10, align 4
  br label %325

316:                                              ; preds = %304
  %317 = landingpad { ptr, i32 }
          cleanup
  %318 = extractvalue { ptr, i32 } %317, 0
  store ptr %318, ptr %9, align 8
  %319 = extractvalue { ptr, i32 } %317, 1
  store i32 %319, ptr %10, align 4
  br label %324

320:                                              ; preds = %306
  %321 = landingpad { ptr, i32 }
          cleanup
  %322 = extractvalue { ptr, i32 } %321, 0
  store ptr %322, ptr %9, align 8
  %323 = extractvalue { ptr, i32 } %321, 1
  store i32 %323, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #6
  br label %324

324:                                              ; preds = %320, %316
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #6
  br label %325

325:                                              ; preds = %324, %312
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #6
  br label %326

326:                                              ; preds = %325, %308
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  br label %331

327:                                              ; preds = %307, %265
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  store i32 0, ptr %30, align 4, !tbaa !16
  call void @_ZN7testing8internal8EqHelper7CompareImiTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %29, ptr noundef @.str.13, ptr noundef @.str.14, ptr noundef nonnull align 8 dereferenceable(8) @test_key_str1, ptr noundef nonnull align 4 dereferenceable(4) %30)
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  %328 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %29)
          to label %329 unwind label %333

329:                                              ; preds = %327
  br i1 %328, label %330, label %337

330:                                              ; preds = %329
  br label %357

331:                                              ; preds = %326, %298
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #6
  br label %332

332:                                              ; preds = %331, %297
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #6
  br label %1168

333:                                              ; preds = %327
  %334 = landingpad { ptr, i32 }
          cleanup
  %335 = extractvalue { ptr, i32 } %334, 0
  store ptr %335, ptr %9, align 8
  %336 = extractvalue { ptr, i32 } %334, 1
  store i32 %336, ptr %10, align 4
  br label %361

337:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %338 unwind label %343

338:                                              ; preds = %337
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  %339 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %29)
          to label %340 unwind label %347

340:                                              ; preds = %338
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %32, i32 noundef 1, ptr noundef @.str.4, i32 noundef 82, ptr noundef %339)
          to label %341 unwind label %347

341:                                              ; preds = %340
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %342 unwind label %351

342:                                              ; preds = %341
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  br label %357

343:                                              ; preds = %337
  %344 = landingpad { ptr, i32 }
          cleanup
  %345 = extractvalue { ptr, i32 } %344, 0
  store ptr %345, ptr %9, align 8
  %346 = extractvalue { ptr, i32 } %344, 1
  store i32 %346, ptr %10, align 4
  br label %356

347:                                              ; preds = %340, %338
  %348 = landingpad { ptr, i32 }
          cleanup
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %9, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %10, align 4
  br label %355

351:                                              ; preds = %341
  %352 = landingpad { ptr, i32 }
          cleanup
  %353 = extractvalue { ptr, i32 } %352, 0
  store ptr %353, ptr %9, align 8
  %354 = extractvalue { ptr, i32 } %352, 1
  store i32 %354, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #6
  br label %355

355:                                              ; preds = %351, %347
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #6
  br label %356

356:                                              ; preds = %355, %343
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  br label %361

357:                                              ; preds = %342, %330
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  store i32 0, ptr %34, align 4, !tbaa !16
  call void @_ZN7testing8internal8EqHelper7CompareImiTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %33, ptr noundef @.str.15, ptr noundef @.str.14, ptr noundef nonnull align 8 dereferenceable(8) @test_key_str2, ptr noundef nonnull align 4 dereferenceable(4) %34)
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  %358 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %359 unwind label %362

359:                                              ; preds = %357
  br i1 %358, label %360, label %366

360:                                              ; preds = %359
  br label %386

361:                                              ; preds = %356, %333
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #6
  br label %1168

362:                                              ; preds = %357
  %363 = landingpad { ptr, i32 }
          cleanup
  %364 = extractvalue { ptr, i32 } %363, 0
  store ptr %364, ptr %9, align 8
  %365 = extractvalue { ptr, i32 } %363, 1
  store i32 %365, ptr %10, align 4
  br label %390

366:                                              ; preds = %359
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %367 unwind label %372

367:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #6
  %368 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %369 unwind label %376

369:                                              ; preds = %367
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %36, i32 noundef 1, ptr noundef @.str.4, i32 noundef 83, ptr noundef %368)
          to label %370 unwind label %376

370:                                              ; preds = %369
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %371 unwind label %380

371:                                              ; preds = %370
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  br label %386

372:                                              ; preds = %366
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %9, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %10, align 4
  br label %385

376:                                              ; preds = %369, %367
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %9, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %10, align 4
  br label %384

380:                                              ; preds = %370
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %9, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #6
  br label %384

384:                                              ; preds = %380, %376
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #6
  br label %385

385:                                              ; preds = %384, %372
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  br label %390

386:                                              ; preds = %371, %360
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #6
  call void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSJ_RKSB_RKSC_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %37, ptr noundef @.str.9, ptr noundef @.str.16, ptr noundef nonnull align 8 dereferenceable(32) @_Z11cout_outputB5cxx11, ptr noundef nonnull align 1 dereferenceable(2) @.str.17)
  %387 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %388 unwind label %391

388:                                              ; preds = %386
  br i1 %387, label %389, label %395

389:                                              ; preds = %388
  br label %415

390:                                              ; preds = %385, %362
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #6
  br label %1168

391:                                              ; preds = %386
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %9, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %10, align 4
  br label %439

395:                                              ; preds = %388
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %396 unwind label %401

396:                                              ; preds = %395
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #6
  %397 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %398 unwind label %405

398:                                              ; preds = %396
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %39, i32 noundef 1, ptr noundef @.str.4, i32 noundef 84, ptr noundef %397)
          to label %399 unwind label %405

399:                                              ; preds = %398
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %400 unwind label %409

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

401:                                              ; preds = %395
  %402 = landingpad { ptr, i32 }
          cleanup
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %9, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %10, align 4
  br label %414

405:                                              ; preds = %398, %396
  %406 = landingpad { ptr, i32 }
          cleanup
  %407 = extractvalue { ptr, i32 } %406, 0
  store ptr %407, ptr %9, align 8
  %408 = extractvalue { ptr, i32 } %406, 1
  store i32 %408, ptr %10, align 4
  br label %413

409:                                              ; preds = %399
  %410 = landingpad { ptr, i32 }
          cleanup
  %411 = extractvalue { ptr, i32 } %410, 0
  store ptr %411, ptr %9, align 8
  %412 = extractvalue { ptr, i32 } %410, 1
  store i32 %412, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #6
  br label %413

413:                                              ; preds = %409, %405
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #6
  br label %414

414:                                              ; preds = %413, %401
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  br label %439

415:                                              ; preds = %400, %389
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #6
  store i64 1, ptr @test_key_str1, align 8, !tbaa !9
  store i64 1, ptr @test_key_str2, align 8, !tbaa !9
  store i64 4, ptr @test_result, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %43) #6
  store i1 true, ptr %47, align 1
  store ptr %43, ptr %44, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %416 unwind label %440

416:                                              ; preds = %415
  %417 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %43, i64 1
  store ptr %417, ptr %44, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %417, ptr noundef @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %418 unwind label %444

418:                                              ; preds = %416
  store i1 false, ptr %47, align 1
  %419 = getelementptr inbounds %"class.std::initializer_list", ptr %42, i32 0, i32 0
  store ptr %43, ptr %419, align 8, !tbaa !11
  %420 = getelementptr inbounds %"class.std::initializer_list", ptr %42, i32 0, i32 1
  store i64 2, ptr %420, align 8, !tbaa !13
  %421 = getelementptr inbounds { ptr, i64 }, ptr %42, i32 0, i32 0
  %422 = load ptr, ptr %421, align 8
  %423 = getelementptr inbounds { ptr, i64 }, ptr %42, i32 0, i32 1
  %424 = load i64, ptr %423, align 8
  %425 = invoke noundef zeroext i1 @_Z3runSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr %422, i64 %424)
          to label %426 unwind label %448

426:                                              ; preds = %418
  %427 = zext i1 %425 to i8
  store i8 %427, ptr %41, align 1, !tbaa !14
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNSt9enable_ifIXntsr3std14is_convertibleIS2_S0_EE5valueEvE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef nonnull align 1 dereferenceable(1) %41, ptr noundef null)
          to label %428 unwind label %448

428:                                              ; preds = %426
  %429 = getelementptr inbounds [2 x %"class.std::__cxx11::basic_string"], ptr %43, i32 0, i32 0
  %430 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %429, i64 2
  br label %431

431:                                              ; preds = %431, %428
  %432 = phi ptr [ %430, %428 ], [ %433, %431 ]
  %433 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %432, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %433) #6
  %434 = icmp eq ptr %433, %429
  br i1 %434, label %435, label %431

435:                                              ; preds = %431
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  %436 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %40)
          to label %437 unwind label %471

437:                                              ; preds = %435
  br i1 %436, label %438, label %475

438:                                              ; preds = %437
  br label %500

439:                                              ; preds = %414, %391
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #6
  br label %1168

440:                                              ; preds = %415
  %441 = landingpad { ptr, i32 }
          cleanup
  %442 = extractvalue { ptr, i32 } %441, 0
  store ptr %442, ptr %9, align 8
  %443 = extractvalue { ptr, i32 } %441, 1
  store i32 %443, ptr %10, align 4
  br label %460

444:                                              ; preds = %416
  %445 = landingpad { ptr, i32 }
          cleanup
  %446 = extractvalue { ptr, i32 } %445, 0
  store ptr %446, ptr %9, align 8
  %447 = extractvalue { ptr, i32 } %445, 1
  store i32 %447, ptr %10, align 4
  br label %459

448:                                              ; preds = %426, %418
  %449 = landingpad { ptr, i32 }
          cleanup
  %450 = extractvalue { ptr, i32 } %449, 0
  store ptr %450, ptr %9, align 8
  %451 = extractvalue { ptr, i32 } %449, 1
  store i32 %451, ptr %10, align 4
  %452 = getelementptr inbounds [2 x %"class.std::__cxx11::basic_string"], ptr %43, i32 0, i32 0
  %453 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %452, i64 2
  br label %454

454:                                              ; preds = %454, %448
  %455 = phi ptr [ %453, %448 ], [ %456, %454 ]
  %456 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %455, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %456) #6
  %457 = icmp eq ptr %456, %452
  br i1 %457, label %458, label %454

458:                                              ; preds = %454
  br label %459

459:                                              ; preds = %458, %444
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #6
  br label %460

460:                                              ; preds = %459, %440
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #6
  %461 = load i1, ptr %47, align 1
  br i1 %461, label %462, label %470

462:                                              ; preds = %460
  %463 = load ptr, ptr %44, align 8
  %464 = icmp eq ptr %43, %463
  br i1 %464, label %469, label %465

465:                                              ; preds = %465, %462
  %466 = phi ptr [ %463, %462 ], [ %467, %465 ]
  %467 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %466, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %467) #6
  %468 = icmp eq ptr %467, %43
  br i1 %468, label %469, label %465

469:                                              ; preds = %465, %462
  br label %470

470:                                              ; preds = %469, %460
  call void @llvm.lifetime.end.p0(i64 64, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  br label %505

471:                                              ; preds = %435
  %472 = landingpad { ptr, i32 }
          cleanup
  %473 = extractvalue { ptr, i32 } %472, 0
  store ptr %473, ptr %9, align 8
  %474 = extractvalue { ptr, i32 } %472, 1
  store i32 %474, ptr %10, align 4
  br label %504

475:                                              ; preds = %437
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %476 unwind label %481

476:                                              ; preds = %475
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #6
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %50, ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef @.str.19, ptr noundef @.str.8, ptr noundef @.str.7)
          to label %477 unwind label %485

477:                                              ; preds = %476
  %478 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %50) #6
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %49, i32 noundef 1, ptr noundef @.str.4, i32 noundef 90, ptr noundef %478)
          to label %479 unwind label %489

479:                                              ; preds = %477
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %480 unwind label %493

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

481:                                              ; preds = %475
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %9, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %10, align 4
  br label %499

485:                                              ; preds = %476
  %486 = landingpad { ptr, i32 }
          cleanup
  %487 = extractvalue { ptr, i32 } %486, 0
  store ptr %487, ptr %9, align 8
  %488 = extractvalue { ptr, i32 } %486, 1
  store i32 %488, ptr %10, align 4
  br label %498

489:                                              ; preds = %477
  %490 = landingpad { ptr, i32 }
          cleanup
  %491 = extractvalue { ptr, i32 } %490, 0
  store ptr %491, ptr %9, align 8
  %492 = extractvalue { ptr, i32 } %490, 1
  store i32 %492, ptr %10, align 4
  br label %497

493:                                              ; preds = %479
  %494 = landingpad { ptr, i32 }
          cleanup
  %495 = extractvalue { ptr, i32 } %494, 0
  store ptr %495, ptr %9, align 8
  %496 = extractvalue { ptr, i32 } %494, 1
  store i32 %496, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #6
  br label %497

497:                                              ; preds = %493, %489
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #6
  br label %498

498:                                              ; preds = %497, %485
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #6
  br label %499

499:                                              ; preds = %498, %481
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #6
  br label %504

500:                                              ; preds = %480, %438
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #6
  store i64 1953654899, ptr %52, align 8, !tbaa !9
  call void @_ZN7testing8internal8EqHelper7CompareImmTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %51, ptr noundef @.str.13, ptr noundef @.str.20, ptr noundef nonnull align 8 dereferenceable(8) @test_key_str1, ptr noundef nonnull align 8 dereferenceable(8) %52)
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #6
  %501 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %51)
          to label %502 unwind label %506

502:                                              ; preds = %500
  br i1 %501, label %503, label %510

503:                                              ; preds = %502
  br label %530

504:                                              ; preds = %499, %471
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #6
  br label %505

505:                                              ; preds = %504, %470
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #6
  br label %1168

506:                                              ; preds = %500
  %507 = landingpad { ptr, i32 }
          cleanup
  %508 = extractvalue { ptr, i32 } %507, 0
  store ptr %508, ptr %9, align 8
  %509 = extractvalue { ptr, i32 } %507, 1
  store i32 %509, ptr %10, align 4
  br label %534

510:                                              ; preds = %502
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53)
          to label %511 unwind label %516

511:                                              ; preds = %510
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #6
  %512 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %51)
          to label %513 unwind label %520

513:                                              ; preds = %511
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %54, i32 noundef 1, ptr noundef @.str.4, i32 noundef 92, ptr noundef %512)
          to label %514 unwind label %520

514:                                              ; preds = %513
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %53)
          to label %515 unwind label %524

515:                                              ; preds = %514
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #6
  br label %530

516:                                              ; preds = %510
  %517 = landingpad { ptr, i32 }
          cleanup
  %518 = extractvalue { ptr, i32 } %517, 0
  store ptr %518, ptr %9, align 8
  %519 = extractvalue { ptr, i32 } %517, 1
  store i32 %519, ptr %10, align 4
  br label %529

520:                                              ; preds = %513, %511
  %521 = landingpad { ptr, i32 }
          cleanup
  %522 = extractvalue { ptr, i32 } %521, 0
  store ptr %522, ptr %9, align 8
  %523 = extractvalue { ptr, i32 } %521, 1
  store i32 %523, ptr %10, align 4
  br label %528

524:                                              ; preds = %514
  %525 = landingpad { ptr, i32 }
          cleanup
  %526 = extractvalue { ptr, i32 } %525, 0
  store ptr %526, ptr %9, align 8
  %527 = extractvalue { ptr, i32 } %525, 1
  store i32 %527, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #6
  br label %528

528:                                              ; preds = %524, %520
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #6
  br label %529

529:                                              ; preds = %528, %516
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #6
  br label %534

530:                                              ; preds = %515, %503
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #6
  store i32 0, ptr %56, align 4, !tbaa !16
  call void @_ZN7testing8internal8EqHelper7CompareImiTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %55, ptr noundef @.str.15, ptr noundef @.str.14, ptr noundef nonnull align 8 dereferenceable(8) @test_key_str2, ptr noundef nonnull align 4 dereferenceable(4) %56)
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  %531 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %55)
          to label %532 unwind label %535

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

533:                                              ; preds = %532
  br label %559

534:                                              ; preds = %529, %506
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #6
  br label %1168

535:                                              ; preds = %530
  %536 = landingpad { ptr, i32 }
          cleanup
  %537 = extractvalue { ptr, i32 } %536, 0
  store ptr %537, ptr %9, align 8
  %538 = extractvalue { ptr, i32 } %536, 1
  store i32 %538, ptr %10, align 4
  br label %563

539:                                              ; preds = %532
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %540 unwind label %545

540:                                              ; preds = %539
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #6
  %541 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %55)
          to label %542 unwind label %549

542:                                              ; preds = %540
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %58, i32 noundef 1, ptr noundef @.str.4, i32 noundef 93, ptr noundef %541)
          to label %543 unwind label %549

543:                                              ; preds = %542
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %544 unwind label %553

544:                                              ; preds = %543
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #6
  br label %559

545:                                              ; preds = %539
  %546 = landingpad { ptr, i32 }
          cleanup
  %547 = extractvalue { ptr, i32 } %546, 0
  store ptr %547, ptr %9, align 8
  %548 = extractvalue { ptr, i32 } %546, 1
  store i32 %548, ptr %10, align 4
  br label %558

549:                                              ; preds = %542, %540
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %9, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %10, align 4
  br label %557

553:                                              ; preds = %543
  %554 = landingpad { ptr, i32 }
          cleanup
  %555 = extractvalue { ptr, i32 } %554, 0
  store ptr %555, ptr %9, align 8
  %556 = extractvalue { ptr, i32 } %554, 1
  store i32 %556, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #6
  br label %557

557:                                              ; preds = %553, %549
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #6
  br label %558

558:                                              ; preds = %557, %545
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #6
  br label %563

559:                                              ; preds = %544, %533
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #6
  call void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSJ_RKSB_RKSC_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %59, ptr noundef @.str.9, ptr noundef @.str.21, ptr noundef nonnull align 8 dereferenceable(32) @_Z11cout_outputB5cxx11, ptr noundef nonnull align 1 dereferenceable(2) @.str.22)
  %560 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %59)
          to label %561 unwind label %564

561:                                              ; preds = %559
  br i1 %560, label %562, label %568

562:                                              ; preds = %561
  br label %588

563:                                              ; preds = %558, %535
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #6
  br label %1168

564:                                              ; preds = %559
  %565 = landingpad { ptr, i32 }
          cleanup
  %566 = extractvalue { ptr, i32 } %565, 0
  store ptr %566, ptr %9, align 8
  %567 = extractvalue { ptr, i32 } %565, 1
  store i32 %567, ptr %10, align 4
  br label %612

568:                                              ; preds = %561
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %569 unwind label %574

569:                                              ; preds = %568
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #6
  %570 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %59)
          to label %571 unwind label %578

571:                                              ; preds = %569
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %61, i32 noundef 1, ptr noundef @.str.4, i32 noundef 94, ptr noundef %570)
          to label %572 unwind label %578

572:                                              ; preds = %571
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %573 unwind label %582

573:                                              ; preds = %572
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #6
  br label %588

574:                                              ; preds = %568
  %575 = landingpad { ptr, i32 }
          cleanup
  %576 = extractvalue { ptr, i32 } %575, 0
  store ptr %576, ptr %9, align 8
  %577 = extractvalue { ptr, i32 } %575, 1
  store i32 %577, ptr %10, align 4
  br label %587

578:                                              ; preds = %571, %569
  %579 = landingpad { ptr, i32 }
          cleanup
  %580 = extractvalue { ptr, i32 } %579, 0
  store ptr %580, ptr %9, align 8
  %581 = extractvalue { ptr, i32 } %579, 1
  store i32 %581, ptr %10, align 4
  br label %586

582:                                              ; preds = %572
  %583 = landingpad { ptr, i32 }
          cleanup
  %584 = extractvalue { ptr, i32 } %583, 0
  store ptr %584, ptr %9, align 8
  %585 = extractvalue { ptr, i32 } %583, 1
  store i32 %585, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #6
  br label %586

586:                                              ; preds = %582, %578
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #6
  br label %587

587:                                              ; preds = %586, %574
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #6
  br label %612

588:                                              ; preds = %573, %562
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #6
  store i64 1, ptr @test_key_str1, align 8, !tbaa !9
  store i64 1, ptr @test_key_str2, align 8, !tbaa !9
  store i64 3, ptr @test_result, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %65) #6
  store i1 true, ptr %69, align 1
  store ptr %65, ptr %66, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %589 unwind label %613

589:                                              ; preds = %588
  %590 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %65, i64 1
  store ptr %590, ptr %66, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %590, ptr noundef @.str.23, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %591 unwind label %617

591:                                              ; preds = %589
  store i1 false, ptr %69, align 1
  %592 = getelementptr inbounds %"class.std::initializer_list", ptr %64, i32 0, i32 0
  store ptr %65, ptr %592, align 8, !tbaa !11
  %593 = getelementptr inbounds %"class.std::initializer_list", ptr %64, i32 0, i32 1
  store i64 2, ptr %593, align 8, !tbaa !13
  %594 = getelementptr inbounds { ptr, i64 }, ptr %64, i32 0, i32 0
  %595 = load ptr, ptr %594, align 8
  %596 = getelementptr inbounds { ptr, i64 }, ptr %64, i32 0, i32 1
  %597 = load i64, ptr %596, align 8
  %598 = invoke noundef zeroext i1 @_Z3runSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr %595, i64 %597)
          to label %599 unwind label %621

599:                                              ; preds = %591
  %600 = zext i1 %598 to i8
  store i8 %600, ptr %63, align 1, !tbaa !14
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNSt9enable_ifIXntsr3std14is_convertibleIS2_S0_EE5valueEvE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %62, ptr noundef nonnull align 1 dereferenceable(1) %63, ptr noundef null)
          to label %601 unwind label %621

601:                                              ; preds = %599
  %602 = getelementptr inbounds [2 x %"class.std::__cxx11::basic_string"], ptr %65, i32 0, i32 0
  %603 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %602, i64 2
  br label %604

604:                                              ; preds = %604, %601
  %605 = phi ptr [ %603, %601 ], [ %606, %604 ]
  %606 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %605, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %606) #6
  %607 = icmp eq ptr %606, %602
  br i1 %607, label %608, label %604

608:                                              ; preds = %604
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #6
  %609 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %62)
          to label %610 unwind label %644

610:                                              ; preds = %608
  br i1 %609, label %611, label %648

611:                                              ; preds = %610
  br label %673

612:                                              ; preds = %587, %564
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #6
  br label %1168

613:                                              ; preds = %588
  %614 = landingpad { ptr, i32 }
          cleanup
  %615 = extractvalue { ptr, i32 } %614, 0
  store ptr %615, ptr %9, align 8
  %616 = extractvalue { ptr, i32 } %614, 1
  store i32 %616, ptr %10, align 4
  br label %633

617:                                              ; preds = %589
  %618 = landingpad { ptr, i32 }
          cleanup
  %619 = extractvalue { ptr, i32 } %618, 0
  store ptr %619, ptr %9, align 8
  %620 = extractvalue { ptr, i32 } %618, 1
  store i32 %620, ptr %10, align 4
  br label %632

621:                                              ; preds = %599, %591
  %622 = landingpad { ptr, i32 }
          cleanup
  %623 = extractvalue { ptr, i32 } %622, 0
  store ptr %623, ptr %9, align 8
  %624 = extractvalue { ptr, i32 } %622, 1
  store i32 %624, ptr %10, align 4
  %625 = getelementptr inbounds [2 x %"class.std::__cxx11::basic_string"], ptr %65, i32 0, i32 0
  %626 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %625, i64 2
  br label %627

627:                                              ; preds = %627, %621
  %628 = phi ptr [ %626, %621 ], [ %629, %627 ]
  %629 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %628, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %629) #6
  %630 = icmp eq ptr %629, %625
  br i1 %630, label %631, label %627

631:                                              ; preds = %627
  br label %632

632:                                              ; preds = %631, %617
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #6
  br label %633

633:                                              ; preds = %632, %613
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #6
  %634 = load i1, ptr %69, align 1
  br i1 %634, label %635, label %643

635:                                              ; preds = %633
  %636 = load ptr, ptr %66, align 8
  %637 = icmp eq ptr %65, %636
  br i1 %637, label %642, label %638

638:                                              ; preds = %638, %635
  %639 = phi ptr [ %636, %635 ], [ %640, %638 ]
  %640 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %639, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %640) #6
  %641 = icmp eq ptr %640, %65
  br i1 %641, label %642, label %638

642:                                              ; preds = %638, %635
  br label %643

643:                                              ; preds = %642, %633
  call void @llvm.lifetime.end.p0(i64 64, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #6
  br label %678

644:                                              ; preds = %608
  %645 = landingpad { ptr, i32 }
          cleanup
  %646 = extractvalue { ptr, i32 } %645, 0
  store ptr %646, ptr %9, align 8
  %647 = extractvalue { ptr, i32 } %645, 1
  store i32 %647, ptr %10, align 4
  br label %677

648:                                              ; preds = %610
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %649 unwind label %654

649:                                              ; preds = %648
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #6
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %72, ptr noundef nonnull align 8 dereferenceable(16) %62, ptr noundef @.str.24, ptr noundef @.str.8, ptr noundef @.str.7)
          to label %650 unwind label %658

650:                                              ; preds = %649
  %651 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %72) #6
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %71, i32 noundef 1, ptr noundef @.str.4, i32 noundef 100, ptr noundef %651)
          to label %652 unwind label %662

652:                                              ; preds = %650
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %653 unwind label %666

653:                                              ; preds = %652
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #6
  br label %673

654:                                              ; preds = %648
  %655 = landingpad { ptr, i32 }
          cleanup
  %656 = extractvalue { ptr, i32 } %655, 0
  store ptr %656, ptr %9, align 8
  %657 = extractvalue { ptr, i32 } %655, 1
  store i32 %657, ptr %10, align 4
  br label %672

658:                                              ; preds = %649
  %659 = landingpad { ptr, i32 }
          cleanup
  %660 = extractvalue { ptr, i32 } %659, 0
  store ptr %660, ptr %9, align 8
  %661 = extractvalue { ptr, i32 } %659, 1
  store i32 %661, ptr %10, align 4
  br label %671

662:                                              ; preds = %650
  %663 = landingpad { ptr, i32 }
          cleanup
  %664 = extractvalue { ptr, i32 } %663, 0
  store ptr %664, ptr %9, align 8
  %665 = extractvalue { ptr, i32 } %663, 1
  store i32 %665, ptr %10, align 4
  br label %670

666:                                              ; preds = %652
  %667 = landingpad { ptr, i32 }
          cleanup
  %668 = extractvalue { ptr, i32 } %667, 0
  store ptr %668, ptr %9, align 8
  %669 = extractvalue { ptr, i32 } %667, 1
  store i32 %669, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #6
  br label %670

670:                                              ; preds = %666, %662
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #6
  br label %671

671:                                              ; preds = %670, %658
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #6
  br label %672

672:                                              ; preds = %671, %654
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #6
  br label %677

673:                                              ; preds = %653, %611
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #6
  store i64 6998719600786304876, ptr %74, align 8, !tbaa !9
  call void @_ZN7testing8internal8EqHelper7CompareImmTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %73, ptr noundef @.str.13, ptr noundef @.str.25, ptr noundef nonnull align 8 dereferenceable(8) @test_key_str1, ptr noundef nonnull align 8 dereferenceable(8) %74)
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #6
  %674 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %73)
          to label %675 unwind label %679

675:                                              ; preds = %673
  br i1 %674, label %676, label %683

676:                                              ; preds = %675
  br label %703

677:                                              ; preds = %672, %644
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #6
  br label %678

678:                                              ; preds = %677, %643
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #6
  br label %1168

679:                                              ; preds = %673
  %680 = landingpad { ptr, i32 }
          cleanup
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %9, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %10, align 4
  br label %707

683:                                              ; preds = %675
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %75)
          to label %684 unwind label %689

684:                                              ; preds = %683
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #6
  %685 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %73)
          to label %686 unwind label %693

686:                                              ; preds = %684
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %76, i32 noundef 1, ptr noundef @.str.4, i32 noundef 104, ptr noundef %685)
          to label %687 unwind label %693

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

688:                                              ; preds = %687
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #6
  br label %703

689:                                              ; preds = %683
  %690 = landingpad { ptr, i32 }
          cleanup
  %691 = extractvalue { ptr, i32 } %690, 0
  store ptr %691, ptr %9, align 8
  %692 = extractvalue { ptr, i32 } %690, 1
  store i32 %692, ptr %10, align 4
  br label %702

693:                                              ; preds = %686, %684
  %694 = landingpad { ptr, i32 }
          cleanup
  %695 = extractvalue { ptr, i32 } %694, 0
  store ptr %695, ptr %9, align 8
  %696 = extractvalue { ptr, i32 } %694, 1
  store i32 %696, ptr %10, align 4
  br label %701

697:                                              ; preds = %687
  %698 = landingpad { ptr, i32 }
          cleanup
  %699 = extractvalue { ptr, i32 } %698, 0
  store ptr %699, ptr %9, align 8
  %700 = extractvalue { ptr, i32 } %698, 1
  store i32 %700, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #6
  br label %701

701:                                              ; preds = %697, %693
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #6
  br label %702

702:                                              ; preds = %701, %689
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #6
  br label %707

703:                                              ; preds = %688, %676
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %77) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #6
  store i64 26482, ptr %78, align 8, !tbaa !9
  call void @_ZN7testing8internal8EqHelper7CompareImmTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %77, ptr noundef @.str.15, ptr noundef @.str.26, ptr noundef nonnull align 8 dereferenceable(8) @test_key_str2, ptr noundef nonnull align 8 dereferenceable(8) %78)
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #6
  %704 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %77)
          to label %705 unwind label %708

705:                                              ; preds = %703
  br i1 %704, label %706, label %712

706:                                              ; preds = %705
  br label %732

707:                                              ; preds = %702, %679
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #6
  br label %1168

708:                                              ; preds = %703
  %709 = landingpad { ptr, i32 }
          cleanup
  %710 = extractvalue { ptr, i32 } %709, 0
  store ptr %710, ptr %9, align 8
  %711 = extractvalue { ptr, i32 } %709, 1
  store i32 %711, ptr %10, align 4
  br label %736

712:                                              ; preds = %705
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %713 unwind label %718

713:                                              ; preds = %712
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #6
  %714 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %77)
          to label %715 unwind label %722

715:                                              ; preds = %713
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %80, i32 noundef 1, ptr noundef @.str.4, i32 noundef 105, ptr noundef %714)
          to label %716 unwind label %722

716:                                              ; preds = %715
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %717 unwind label %726

717:                                              ; preds = %716
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #6
  br label %732

718:                                              ; preds = %712
  %719 = landingpad { ptr, i32 }
          cleanup
  %720 = extractvalue { ptr, i32 } %719, 0
  store ptr %720, ptr %9, align 8
  %721 = extractvalue { ptr, i32 } %719, 1
  store i32 %721, ptr %10, align 4
  br label %731

722:                                              ; preds = %715, %713
  %723 = landingpad { ptr, i32 }
          cleanup
  %724 = extractvalue { ptr, i32 } %723, 0
  store ptr %724, ptr %9, align 8
  %725 = extractvalue { ptr, i32 } %723, 1
  store i32 %725, ptr %10, align 4
  br label %730

726:                                              ; preds = %716
  %727 = landingpad { ptr, i32 }
          cleanup
  %728 = extractvalue { ptr, i32 } %727, 0
  store ptr %728, ptr %9, align 8
  %729 = extractvalue { ptr, i32 } %727, 1
  store i32 %729, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #6
  br label %730

730:                                              ; preds = %726, %722
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #6
  br label %731

731:                                              ; preds = %730, %718
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #6
  br label %736

732:                                              ; preds = %717, %706
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %81) #6
  call void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSJ_RKSB_RKSC_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %81, ptr noundef @.str.9, ptr noundef @.str.27, ptr noundef nonnull align 8 dereferenceable(32) @_Z11cout_outputB5cxx11, ptr noundef nonnull align 1 dereferenceable(2) @.str.28)
  %733 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %81)
          to label %734 unwind label %737

734:                                              ; preds = %732
  br i1 %733, label %735, label %741

735:                                              ; preds = %734
  br label %761

736:                                              ; preds = %731, %708
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #6
  br label %1168

737:                                              ; preds = %732
  %738 = landingpad { ptr, i32 }
          cleanup
  %739 = extractvalue { ptr, i32 } %738, 0
  store ptr %739, ptr %9, align 8
  %740 = extractvalue { ptr, i32 } %738, 1
  store i32 %740, ptr %10, align 4
  br label %785

741:                                              ; preds = %734
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82)
          to label %742 unwind label %747

742:                                              ; preds = %741
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #6
  %743 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %81)
          to label %744 unwind label %751

744:                                              ; preds = %742
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %83, i32 noundef 1, ptr noundef @.str.4, i32 noundef 106, ptr noundef %743)
          to label %745 unwind label %751

745:                                              ; preds = %744
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef nonnull align 8 dereferenceable(8) %82)
          to label %746 unwind label %755

746:                                              ; preds = %745
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #6
  br label %761

747:                                              ; preds = %741
  %748 = landingpad { ptr, i32 }
          cleanup
  %749 = extractvalue { ptr, i32 } %748, 0
  store ptr %749, ptr %9, align 8
  %750 = extractvalue { ptr, i32 } %748, 1
  store i32 %750, ptr %10, align 4
  br label %760

751:                                              ; preds = %744, %742
  %752 = landingpad { ptr, i32 }
          cleanup
  %753 = extractvalue { ptr, i32 } %752, 0
  store ptr %753, ptr %9, align 8
  %754 = extractvalue { ptr, i32 } %752, 1
  store i32 %754, ptr %10, align 4
  br label %759

755:                                              ; preds = %745
  %756 = landingpad { ptr, i32 }
          cleanup
  %757 = extractvalue { ptr, i32 } %756, 0
  store ptr %757, ptr %9, align 8
  %758 = extractvalue { ptr, i32 } %756, 1
  store i32 %758, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #6
  br label %759

759:                                              ; preds = %755, %751
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #6
  br label %760

760:                                              ; preds = %759, %747
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #6
  br label %785

761:                                              ; preds = %746, %735
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #6
  store i64 1, ptr @test_key_str1, align 8, !tbaa !9
  store i64 1, ptr @test_key_str2, align 8, !tbaa !9
  store i64 2, ptr @test_result, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %87) #6
  store i1 true, ptr %91, align 1
  store ptr %87, ptr %88, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %89)
          to label %762 unwind label %786

762:                                              ; preds = %761
  %763 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %87, i64 1
  store ptr %763, ptr %88, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %763, ptr noundef @.str.29, ptr noundef nonnull align 1 dereferenceable(1) %90)
          to label %764 unwind label %790

764:                                              ; preds = %762
  store i1 false, ptr %91, align 1
  %765 = getelementptr inbounds %"class.std::initializer_list", ptr %86, i32 0, i32 0
  store ptr %87, ptr %765, align 8, !tbaa !11
  %766 = getelementptr inbounds %"class.std::initializer_list", ptr %86, i32 0, i32 1
  store i64 2, ptr %766, align 8, !tbaa !13
  %767 = getelementptr inbounds { ptr, i64 }, ptr %86, i32 0, i32 0
  %768 = load ptr, ptr %767, align 8
  %769 = getelementptr inbounds { ptr, i64 }, ptr %86, i32 0, i32 1
  %770 = load i64, ptr %769, align 8
  %771 = invoke noundef zeroext i1 @_Z3runSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr %768, i64 %770)
          to label %772 unwind label %794

772:                                              ; preds = %764
  %773 = zext i1 %771 to i8
  store i8 %773, ptr %85, align 1, !tbaa !14
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNSt9enable_ifIXntsr3std14is_convertibleIS2_S0_EE5valueEvE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 1 dereferenceable(1) %85, ptr noundef null)
          to label %774 unwind label %794

774:                                              ; preds = %772
  %775 = getelementptr inbounds [2 x %"class.std::__cxx11::basic_string"], ptr %87, i32 0, i32 0
  %776 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %775, i64 2
  br label %777

777:                                              ; preds = %777, %774
  %778 = phi ptr [ %776, %774 ], [ %779, %777 ]
  %779 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %778, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %779) #6
  %780 = icmp eq ptr %779, %775
  br i1 %780, label %781, label %777

781:                                              ; preds = %777
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %87) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #6
  %782 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %84)
          to label %783 unwind label %817

783:                                              ; preds = %781
  br i1 %782, label %784, label %821

784:                                              ; preds = %783
  br label %846

785:                                              ; preds = %760, %737
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #6
  br label %1168

786:                                              ; preds = %761
  %787 = landingpad { ptr, i32 }
          cleanup
  %788 = extractvalue { ptr, i32 } %787, 0
  store ptr %788, ptr %9, align 8
  %789 = extractvalue { ptr, i32 } %787, 1
  store i32 %789, ptr %10, align 4
  br label %806

790:                                              ; preds = %762
  %791 = landingpad { ptr, i32 }
          cleanup
  %792 = extractvalue { ptr, i32 } %791, 0
  store ptr %792, ptr %9, align 8
  %793 = extractvalue { ptr, i32 } %791, 1
  store i32 %793, ptr %10, align 4
  br label %805

794:                                              ; preds = %772, %764
  %795 = landingpad { ptr, i32 }
          cleanup
  %796 = extractvalue { ptr, i32 } %795, 0
  store ptr %796, ptr %9, align 8
  %797 = extractvalue { ptr, i32 } %795, 1
  store i32 %797, ptr %10, align 4
  %798 = getelementptr inbounds [2 x %"class.std::__cxx11::basic_string"], ptr %87, i32 0, i32 0
  %799 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %798, i64 2
  br label %800

800:                                              ; preds = %800, %794
  %801 = phi ptr [ %799, %794 ], [ %802, %800 ]
  %802 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %801, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %802) #6
  %803 = icmp eq ptr %802, %798
  br i1 %803, label %804, label %800

804:                                              ; preds = %800
  br label %805

805:                                              ; preds = %804, %790
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #6
  br label %806

806:                                              ; preds = %805, %786
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #6
  %807 = load i1, ptr %91, align 1
  br i1 %807, label %808, label %816

808:                                              ; preds = %806
  %809 = load ptr, ptr %88, align 8
  %810 = icmp eq ptr %87, %809
  br i1 %810, label %815, label %811

811:                                              ; preds = %811, %808
  %812 = phi ptr [ %809, %808 ], [ %813, %811 ]
  %813 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %812, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %813) #6
  %814 = icmp eq ptr %813, %87
  br i1 %814, label %815, label %811

815:                                              ; preds = %811, %808
  br label %816

816:                                              ; preds = %815, %806
  call void @llvm.lifetime.end.p0(i64 64, ptr %87) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #6
  br label %851

817:                                              ; preds = %781
  %818 = landingpad { ptr, i32 }
          cleanup
  %819 = extractvalue { ptr, i32 } %818, 0
  store ptr %819, ptr %9, align 8
  %820 = extractvalue { ptr, i32 } %818, 1
  store i32 %820, ptr %10, align 4
  br label %850

821:                                              ; preds = %783
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %822 unwind label %827

822:                                              ; preds = %821
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %94) #6
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %94, ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef @.str.30, ptr noundef @.str.8, ptr noundef @.str.7)
          to label %823 unwind label %831

823:                                              ; preds = %822
  %824 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %94) #6
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %93, i32 noundef 1, ptr noundef @.str.4, i32 noundef 112, ptr noundef %824)
          to label %825 unwind label %835

825:                                              ; preds = %823
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %826 unwind label %839

826:                                              ; preds = %825
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #6
  br label %846

827:                                              ; preds = %821
  %828 = landingpad { ptr, i32 }
          cleanup
  %829 = extractvalue { ptr, i32 } %828, 0
  store ptr %829, ptr %9, align 8
  %830 = extractvalue { ptr, i32 } %828, 1
  store i32 %830, ptr %10, align 4
  br label %845

831:                                              ; preds = %822
  %832 = landingpad { ptr, i32 }
          cleanup
  %833 = extractvalue { ptr, i32 } %832, 0
  store ptr %833, ptr %9, align 8
  %834 = extractvalue { ptr, i32 } %832, 1
  store i32 %834, ptr %10, align 4
  br label %844

835:                                              ; preds = %823
  %836 = landingpad { ptr, i32 }
          cleanup
  %837 = extractvalue { ptr, i32 } %836, 0
  store ptr %837, ptr %9, align 8
  %838 = extractvalue { ptr, i32 } %836, 1
  store i32 %838, ptr %10, align 4
  br label %843

839:                                              ; preds = %825
  %840 = landingpad { ptr, i32 }
          cleanup
  %841 = extractvalue { ptr, i32 } %840, 0
  store ptr %841, ptr %9, align 8
  %842 = extractvalue { ptr, i32 } %840, 1
  store i32 %842, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #6
  br label %843

843:                                              ; preds = %839, %835
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #6
  br label %844

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

845:                                              ; preds = %844, %827
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #6
  br label %850

846:                                              ; preds = %826, %784
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %95) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #6
  store i64 4050765991979987505, ptr %96, align 8, !tbaa !9
  call void @_ZN7testing8internal8EqHelper7CompareImmTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %95, ptr noundef @.str.13, ptr noundef @.str.31, ptr noundef nonnull align 8 dereferenceable(8) @test_key_str1, ptr noundef nonnull align 8 dereferenceable(8) %96)
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #6
  %847 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %95)
          to label %848 unwind label %852

848:                                              ; preds = %846
  br i1 %847, label %849, label %856

849:                                              ; preds = %848
  br label %876

850:                                              ; preds = %845, %817
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #6
  br label %851

851:                                              ; preds = %850, %816
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #6
  br label %1168

852:                                              ; preds = %846
  %853 = landingpad { ptr, i32 }
          cleanup
  %854 = extractvalue { ptr, i32 } %853, 0
  store ptr %854, ptr %9, align 8
  %855 = extractvalue { ptr, i32 } %853, 1
  store i32 %855, ptr %10, align 4
  br label %880

856:                                              ; preds = %848
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %97)
          to label %857 unwind label %862

857:                                              ; preds = %856
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #6
  %858 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %95)
          to label %859 unwind label %866

859:                                              ; preds = %857
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %98, i32 noundef 1, ptr noundef @.str.4, i32 noundef 116, ptr noundef %858)
          to label %860 unwind label %866

860:                                              ; preds = %859
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull align 8 dereferenceable(8) %97)
          to label %861 unwind label %870

861:                                              ; preds = %860
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #6
  br label %876

862:                                              ; preds = %856
  %863 = landingpad { ptr, i32 }
          cleanup
  %864 = extractvalue { ptr, i32 } %863, 0
  store ptr %864, ptr %9, align 8
  %865 = extractvalue { ptr, i32 } %863, 1
  store i32 %865, ptr %10, align 4
  br label %875

866:                                              ; preds = %859, %857
  %867 = landingpad { ptr, i32 }
          cleanup
  %868 = extractvalue { ptr, i32 } %867, 0
  store ptr %868, ptr %9, align 8
  %869 = extractvalue { ptr, i32 } %867, 1
  store i32 %869, ptr %10, align 4
  br label %874

870:                                              ; preds = %860
  %871 = landingpad { ptr, i32 }
          cleanup
  %872 = extractvalue { ptr, i32 } %871, 0
  store ptr %872, ptr %9, align 8
  %873 = extractvalue { ptr, i32 } %871, 1
  store i32 %873, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #6
  br label %874

874:                                              ; preds = %870, %866
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #6
  br label %875

875:                                              ; preds = %874, %862
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #6
  br label %880

876:                                              ; preds = %861, %849
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %99) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #6
  store i64 3544952156018063160, ptr %100, align 8, !tbaa !9
  call void @_ZN7testing8internal8EqHelper7CompareImmTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %99, ptr noundef @.str.15, ptr noundef @.str.32, ptr noundef nonnull align 8 dereferenceable(8) @test_key_str2, ptr noundef nonnull align 8 dereferenceable(8) %100)
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #6
  %877 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %99)
          to label %878 unwind label %881

878:                                              ; preds = %876
  br i1 %877, label %879, label %885

879:                                              ; preds = %878
  br label %905

880:                                              ; preds = %875, %852
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #6
  br label %1168

881:                                              ; preds = %876
  %882 = landingpad { ptr, i32 }
          cleanup
  %883 = extractvalue { ptr, i32 } %882, 0
  store ptr %883, ptr %9, align 8
  %884 = extractvalue { ptr, i32 } %882, 1
  store i32 %884, ptr %10, align 4
  br label %909

885:                                              ; preds = %878
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %101)
          to label %886 unwind label %891

886:                                              ; preds = %885
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #6
  %887 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %99)
          to label %888 unwind label %895

888:                                              ; preds = %886
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %102, i32 noundef 1, ptr noundef @.str.4, i32 noundef 120, ptr noundef %887)
          to label %889 unwind label %895

889:                                              ; preds = %888
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef nonnull align 8 dereferenceable(8) %101)
          to label %890 unwind label %899

890:                                              ; preds = %889
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #6
  br label %905

891:                                              ; preds = %885
  %892 = landingpad { ptr, i32 }
          cleanup
  %893 = extractvalue { ptr, i32 } %892, 0
  store ptr %893, ptr %9, align 8
  %894 = extractvalue { ptr, i32 } %892, 1
  store i32 %894, ptr %10, align 4
  br label %904

895:                                              ; preds = %888, %886
  %896 = landingpad { ptr, i32 }
          cleanup
  %897 = extractvalue { ptr, i32 } %896, 0
  store ptr %897, ptr %9, align 8
  %898 = extractvalue { ptr, i32 } %896, 1
  store i32 %898, ptr %10, align 4
  br label %903

899:                                              ; preds = %889
  %900 = landingpad { ptr, i32 }
          cleanup
  %901 = extractvalue { ptr, i32 } %900, 0
  store ptr %901, ptr %9, align 8
  %902 = extractvalue { ptr, i32 } %900, 1
  store i32 %902, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #6
  br label %903

903:                                              ; preds = %899, %895
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #6
  br label %904

904:                                              ; preds = %903, %891
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #6
  br label %909

905:                                              ; preds = %890, %879
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %99) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %103) #6
  call void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSJ_RKSB_RKSC_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %103, ptr noundef @.str.9, ptr noundef @.str.33, ptr noundef nonnull align 8 dereferenceable(32) @_Z11cout_outputB5cxx11, ptr noundef nonnull align 1 dereferenceable(2) @.str.34)
  %906 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %103)
          to label %907 unwind label %910

907:                                              ; preds = %905
  br i1 %906, label %908, label %914

908:                                              ; preds = %907
  br label %934

909:                                              ; preds = %904, %881
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %99) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #6
  br label %1168

910:                                              ; preds = %905
  %911 = landingpad { ptr, i32 }
          cleanup
  %912 = extractvalue { ptr, i32 } %911, 0
  store ptr %912, ptr %9, align 8
  %913 = extractvalue { ptr, i32 } %911, 1
  store i32 %913, ptr %10, align 4
  br label %959

914:                                              ; preds = %907
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %104)
          to label %915 unwind label %920

915:                                              ; preds = %914
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #6
  %916 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %103)
          to label %917 unwind label %924

917:                                              ; preds = %915
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %105, i32 noundef 1, ptr noundef @.str.4, i32 noundef 121, ptr noundef %916)
          to label %918 unwind label %924

918:                                              ; preds = %917
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef nonnull align 8 dereferenceable(8) %104)
          to label %919 unwind label %928

919:                                              ; preds = %918
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #6
  br label %934

920:                                              ; preds = %914
  %921 = landingpad { ptr, i32 }
          cleanup
  %922 = extractvalue { ptr, i32 } %921, 0
  store ptr %922, ptr %9, align 8
  %923 = extractvalue { ptr, i32 } %921, 1
  store i32 %923, ptr %10, align 4
  br label %933

924:                                              ; preds = %917, %915
  %925 = landingpad { ptr, i32 }
          cleanup
  %926 = extractvalue { ptr, i32 } %925, 0
  store ptr %926, ptr %9, align 8
  %927 = extractvalue { ptr, i32 } %925, 1
  store i32 %927, ptr %10, align 4
  br label %932

928:                                              ; preds = %918
  %929 = landingpad { ptr, i32 }
          cleanup
  %930 = extractvalue { ptr, i32 } %929, 0
  store ptr %930, ptr %9, align 8
  %931 = extractvalue { ptr, i32 } %929, 1
  store i32 %931, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #6
  br label %932

932:                                              ; preds = %928, %924
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #6
  br label %933

933:                                              ; preds = %932, %920
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #6
  br label %959

934:                                              ; preds = %919, %908
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %103) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %106) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %109) #6
  store i1 true, ptr %113, align 1
  store ptr %109, ptr %110, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %111) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %111) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %111)
          to label %935 unwind label %960

935:                                              ; preds = %934
  %936 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %109, i64 1
  store ptr %936, ptr %110, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %112) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %112) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %936, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %112)
          to label %937 unwind label %964

937:                                              ; preds = %935
  store i1 false, ptr %113, align 1
  %938 = getelementptr inbounds %"class.std::initializer_list", ptr %108, i32 0, i32 0
  store ptr %109, ptr %938, align 8, !tbaa !11
  %939 = getelementptr inbounds %"class.std::initializer_list", ptr %108, i32 0, i32 1
  store i64 2, ptr %939, align 8, !tbaa !13
  %940 = getelementptr inbounds { ptr, i64 }, ptr %108, i32 0, i32 0
  %941 = load ptr, ptr %940, align 8
  %942 = getelementptr inbounds { ptr, i64 }, ptr %108, i32 0, i32 1
  %943 = load i64, ptr %942, align 8
  %944 = invoke noundef zeroext i1 @_Z3runSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr %941, i64 %943)
          to label %945 unwind label %968

945:                                              ; preds = %937
  %946 = xor i1 %944, true
  %947 = zext i1 %946 to i8
  store i8 %947, ptr %107, align 1, !tbaa !14
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNSt9enable_ifIXntsr3std14is_convertibleIS2_S0_EE5valueEvE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %106, ptr noundef nonnull align 1 dereferenceable(1) %107, ptr noundef null)
          to label %948 unwind label %968

948:                                              ; preds = %945
  %949 = getelementptr inbounds [2 x %"class.std::__cxx11::basic_string"], ptr %109, i32 0, i32 0
  %950 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %949, i64 2
  br label %951

951:                                              ; preds = %951, %948
  %952 = phi ptr [ %950, %948 ], [ %953, %951 ]
  %953 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %952, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %953) #6
  %954 = icmp eq ptr %953, %949
  br i1 %954, label %955, label %951

955:                                              ; preds = %951
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %112) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %112) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %111) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %109) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #6
  %956 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %106)
          to label %957 unwind label %991

957:                                              ; preds = %955
  br i1 %956, label %958, label %995

958:                                              ; preds = %957
  br label %1020

959:                                              ; preds = %933, %910
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %103) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #6
  br label %1168

960:                                              ; preds = %934
  %961 = landingpad { ptr, i32 }
          cleanup
  %962 = extractvalue { ptr, i32 } %961, 0
  store ptr %962, ptr %9, align 8
  %963 = extractvalue { ptr, i32 } %961, 1
  store i32 %963, ptr %10, align 4
  br label %980

964:                                              ; preds = %935
  %965 = landingpad { ptr, i32 }
          cleanup
  %966 = extractvalue { ptr, i32 } %965, 0
  store ptr %966, ptr %9, align 8
  %967 = extractvalue { ptr, i32 } %965, 1
  store i32 %967, ptr %10, align 4
  br label %979

968:                                              ; preds = %945, %937
  %969 = landingpad { ptr, i32 }
          cleanup
  %970 = extractvalue { ptr, i32 } %969, 0
  store ptr %970, ptr %9, align 8
  %971 = extractvalue { ptr, i32 } %969, 1
  store i32 %971, ptr %10, align 4
  %972 = getelementptr inbounds [2 x %"class.std::__cxx11::basic_string"], ptr %109, i32 0, i32 0
  %973 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %972, i64 2
  br label %974

974:                                              ; preds = %974, %968
  %975 = phi ptr [ %973, %968 ], [ %976, %974 ]
  %976 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %975, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %976) #6
  %977 = icmp eq ptr %976, %972
  br i1 %977, label %978, label %974

978:                                              ; preds = %974
  br label %979

979:                                              ; preds = %978, %964
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %112) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %112) #6
  br label %980

980:                                              ; preds = %979, %960
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %111) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #6
  %981 = load i1, ptr %113, align 1
  br i1 %981, label %982, label %990

982:                                              ; preds = %980
  %983 = load ptr, ptr %110, align 8
  %984 = icmp eq ptr %109, %983
  br i1 %984, label %989, label %985

985:                                              ; preds = %985, %982
  %986 = phi ptr [ %983, %982 ], [ %987, %985 ]
  %987 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %986, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %987) #6
  %988 = icmp eq ptr %987, %109
  br i1 %988, label %989, label %985

989:                                              ; preds = %985, %982
  br label %990

990:                                              ; preds = %989, %980
  call void @llvm.lifetime.end.p0(i64 64, ptr %109) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #6
  br label %1025

991:                                              ; preds = %955
  %992 = landingpad { ptr, i32 }
          cleanup
  %993 = extractvalue { ptr, i32 } %992, 0
  store ptr %993, ptr %9, align 8
  %994 = extractvalue { ptr, i32 } %992, 1
  store i32 %994, ptr %10, align 4
  br label %1024

995:                                              ; preds = %957
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %114)
          to label %996 unwind label %1001

996:                                              ; preds = %995
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %116) #6
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %116, ptr noundef nonnull align 8 dereferenceable(16) %106, ptr noundef @.str.36, ptr noundef @.str.7, ptr noundef @.str.8)
          to label %997 unwind label %1005

997:                                              ; preds = %996
  %998 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %116) #6
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %115, i32 noundef 1, ptr noundef @.str.4, i32 noundef 124, ptr noundef %998)
          to label %999 unwind label %1009

999:                                              ; preds = %997
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull align 8 dereferenceable(8) %114)
          to label %1000 unwind label %1013

1000:                                             ; preds = %999
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %116) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #6
  br label %1020

1001:                                             ; preds = %995
  %1002 = landingpad { ptr, i32 }
          cleanup
  %1003 = extractvalue { ptr, i32 } %1002, 0
  store ptr %1003, ptr %9, align 8
  %1004 = extractvalue { ptr, i32 } %1002, 1
  store i32 %1004, ptr %10, align 4
  br label %1019

1005:                                             ; preds = %996
  %1006 = landingpad { ptr, i32 }
          cleanup
  %1007 = extractvalue { ptr, i32 } %1006, 0
  store ptr %1007, ptr %9, align 8
  %1008 = extractvalue { ptr, i32 } %1006, 1
  store i32 %1008, ptr %10, align 4
  br label %1018

1009:                                             ; preds = %997
  %1010 = landingpad { ptr, i32 }
          cleanup
  %1011 = extractvalue { ptr, i32 } %1010, 0
  store ptr %1011, ptr %9, align 8
  %1012 = extractvalue { ptr, i32 } %1010, 1
  store i32 %1012, ptr %10, align 4
  br label %1017

1013:                                             ; preds = %999
  %1014 = landingpad { ptr, i32 }
          cleanup
  %1015 = extractvalue { ptr, i32 } %1014, 0
  store ptr %1015, ptr %9, align 8
  %1016 = extractvalue { ptr, i32 } %1014, 1
  store i32 %1016, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #6
  br label %1017

1017:                                             ; preds = %1013, %1009
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #6
  br label %1018

1018:                                             ; preds = %1017, %1005
  call void @llvm.lifetime.end.p0(i64 32, ptr %116) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #6
  br label %1019

1019:                                             ; preds = %1018, %1001
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #6
  br label %1024

1020:                                             ; preds = %1000, %958
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %117) #6
  call void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA1_cTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSJ_RKSB_RKSC_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %117, ptr noundef @.str.9, ptr noundef @.str.10, ptr noundef nonnull align 8 dereferenceable(32) @_Z11cout_outputB5cxx11, ptr noundef nonnull align 1 dereferenceable(1) @.str.11)
  %1021 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %117)
          to label %1022 unwind label %1026

1022:                                             ; preds = %1020
  br i1 %1021, label %1023, label %1030

1023:                                             ; preds = %1022
  br label %1050

1024:                                             ; preds = %1019, %991
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #6
  br label %1025

1025:                                             ; preds = %1024, %990
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #6
  br label %1168

1026:                                             ; preds = %1020
  %1027 = landingpad { ptr, i32 }
          cleanup
  %1028 = extractvalue { ptr, i32 } %1027, 0
  store ptr %1028, ptr %9, align 8
  %1029 = extractvalue { ptr, i32 } %1027, 1
  store i32 %1029, ptr %10, align 4
  br label %1075

1030:                                             ; preds = %1022
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %118)
          to label %1031 unwind label %1036

1031:                                             ; preds = %1030
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #6
  %1032 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %117)
          to label %1033 unwind label %1040

1033:                                             ; preds = %1031
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %119, i32 noundef 1, ptr noundef @.str.4, i32 noundef 125, ptr noundef %1032)
          to label %1034 unwind label %1040

1034:                                             ; preds = %1033
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull align 8 dereferenceable(8) %118)
          to label %1035 unwind label %1044

1035:                                             ; preds = %1034
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #6
  br label %1050

1036:                                             ; preds = %1030
  %1037 = landingpad { ptr, i32 }
          cleanup
  %1038 = extractvalue { ptr, i32 } %1037, 0
  store ptr %1038, ptr %9, align 8
  %1039 = extractvalue { ptr, i32 } %1037, 1
  store i32 %1039, ptr %10, align 4
  br label %1049

1040:                                             ; preds = %1033, %1031
  %1041 = landingpad { ptr, i32 }
          cleanup
  %1042 = extractvalue { ptr, i32 } %1041, 0
  store ptr %1042, ptr %9, align 8
  %1043 = extractvalue { ptr, i32 } %1041, 1
  store i32 %1043, ptr %10, align 4
  br label %1048

1044:                                             ; preds = %1034
  %1045 = landingpad { ptr, i32 }
          cleanup
  %1046 = extractvalue { ptr, i32 } %1045, 0
  store ptr %1046, ptr %9, align 8
  %1047 = extractvalue { ptr, i32 } %1045, 1
  store i32 %1047, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #6
  br label %1048

1048:                                             ; preds = %1044, %1040
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #6
  br label %1049

1049:                                             ; preds = %1048, %1036
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #6
  br label %1075

1050:                                             ; preds = %1035, %1023
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %117) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %117) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %120) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %121) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %123) #6
  store i1 true, ptr %127, align 1
  store ptr %123, ptr %124, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %125) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %125) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %123, ptr noundef @.str.37, ptr noundef nonnull align 1 dereferenceable(1) %125)
          to label %1051 unwind label %1076

1051:                                             ; preds = %1050
  %1052 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %123, i64 1
  store ptr %1052, ptr %124, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %126) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %1052, ptr noundef @.str.38, ptr noundef nonnull align 1 dereferenceable(1) %126)
          to label %1053 unwind label %1080

1053:                                             ; preds = %1051
  store i1 false, ptr %127, align 1
  %1054 = getelementptr inbounds %"class.std::initializer_list", ptr %122, i32 0, i32 0
  store ptr %123, ptr %1054, align 8, !tbaa !11
  %1055 = getelementptr inbounds %"class.std::initializer_list", ptr %122, i32 0, i32 1
  store i64 2, ptr %1055, align 8, !tbaa !13
  %1056 = getelementptr inbounds { ptr, i64 }, ptr %122, i32 0, i32 0
  %1057 = load ptr, ptr %1056, align 8
  %1058 = getelementptr inbounds { ptr, i64 }, ptr %122, i32 0, i32 1
  %1059 = load i64, ptr %1058, align 8
  %1060 = invoke noundef zeroext i1 @_Z3runSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr %1057, i64 %1059)
          to label %1061 unwind label %1084

1061:                                             ; preds = %1053
  %1062 = xor i1 %1060, true
  %1063 = zext i1 %1062 to i8
  store i8 %1063, ptr %121, align 1, !tbaa !14
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNSt9enable_ifIXntsr3std14is_convertibleIS2_S0_EE5valueEvE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %120, ptr noundef nonnull align 1 dereferenceable(1) %121, ptr noundef null)
          to label %1064 unwind label %1084

1064:                                             ; preds = %1061
  %1065 = getelementptr inbounds [2 x %"class.std::__cxx11::basic_string"], ptr %123, i32 0, i32 0
  %1066 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1065, i64 2
  br label %1067

1067:                                             ; preds = %1067, %1064
  %1068 = phi ptr [ %1066, %1064 ], [ %1069, %1067 ]
  %1069 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1068, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1069) #6
  %1070 = icmp eq ptr %1069, %1065
  br i1 %1070, label %1071, label %1067

1071:                                             ; preds = %1067
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %126) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %125) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %125) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %123) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #6
  %1072 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %120)
          to label %1073 unwind label %1107

1073:                                             ; preds = %1071
  br i1 %1072, label %1074, label %1111

1074:                                             ; preds = %1073
  br label %1136

1075:                                             ; preds = %1049, %1026
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %117) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %117) #6
  br label %1168

1076:                                             ; preds = %1050
  %1077 = landingpad { ptr, i32 }
          cleanup
  %1078 = extractvalue { ptr, i32 } %1077, 0
  store ptr %1078, ptr %9, align 8
  %1079 = extractvalue { ptr, i32 } %1077, 1
  store i32 %1079, ptr %10, align 4
  br label %1096

1080:                                             ; preds = %1051
  %1081 = landingpad { ptr, i32 }
          cleanup
  %1082 = extractvalue { ptr, i32 } %1081, 0
  store ptr %1082, ptr %9, align 8
  %1083 = extractvalue { ptr, i32 } %1081, 1
  store i32 %1083, ptr %10, align 4
  br label %1095

1084:                                             ; preds = %1061, %1053
  %1085 = landingpad { ptr, i32 }
          cleanup
  %1086 = extractvalue { ptr, i32 } %1085, 0
  store ptr %1086, ptr %9, align 8
  %1087 = extractvalue { ptr, i32 } %1085, 1
  store i32 %1087, ptr %10, align 4
  %1088 = getelementptr inbounds [2 x %"class.std::__cxx11::basic_string"], ptr %123, i32 0, i32 0
  %1089 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1088, i64 2
  br label %1090

1090:                                             ; preds = %1090, %1084
  %1091 = phi ptr [ %1089, %1084 ], [ %1092, %1090 ]
  %1092 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1091, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1092) #6
  %1093 = icmp eq ptr %1092, %1088
  br i1 %1093, label %1094, label %1090

1094:                                             ; preds = %1090
  br label %1095

1095:                                             ; preds = %1094, %1080
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %126) #6
  br label %1096

1096:                                             ; preds = %1095, %1076
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %125) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %125) #6
  %1097 = load i1, ptr %127, align 1
  br i1 %1097, label %1098, label %1106

1098:                                             ; preds = %1096
  %1099 = load ptr, ptr %124, align 8
  %1100 = icmp eq ptr %123, %1099
  br i1 %1100, label %1105, label %1101

1101:                                             ; preds = %1101, %1098
  %1102 = phi ptr [ %1099, %1098 ], [ %1103, %1101 ]
  %1103 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1102, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1103) #6
  %1104 = icmp eq ptr %1103, %123
  br i1 %1104, label %1105, label %1101

1105:                                             ; preds = %1101, %1098
  br label %1106

1106:                                             ; preds = %1105, %1096
  call void @llvm.lifetime.end.p0(i64 64, ptr %123) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #6
  br label %1141

1107:                                             ; preds = %1071
  %1108 = landingpad { ptr, i32 }
          cleanup
  %1109 = extractvalue { ptr, i32 } %1108, 0
  store ptr %1109, ptr %9, align 8
  %1110 = extractvalue { ptr, i32 } %1108, 1
  store i32 %1110, ptr %10, align 4
  br label %1140

1111:                                             ; preds = %1073
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %1112 unwind label %1117

1112:                                             ; preds = %1111
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %130) #6
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %130, ptr noundef nonnull align 8 dereferenceable(16) %120, ptr noundef @.str.39, ptr noundef @.str.7, ptr noundef @.str.8)
          to label %1113 unwind label %1121

1113:                                             ; preds = %1112
  %1114 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %130) #6
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %129, i32 noundef 1, ptr noundef @.str.4, i32 noundef 128, ptr noundef %1114)
          to label %1115 unwind label %1125

1115:                                             ; preds = %1113
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %1116 unwind label %1129

1116:                                             ; preds = %1115
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %130) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #6
  br label %1136

1117:                                             ; preds = %1111
  %1118 = landingpad { ptr, i32 }
          cleanup
  %1119 = extractvalue { ptr, i32 } %1118, 0
  store ptr %1119, ptr %9, align 8
  %1120 = extractvalue { ptr, i32 } %1118, 1
  store i32 %1120, ptr %10, align 4
  br label %1135

1121:                                             ; preds = %1112
  %1122 = landingpad { ptr, i32 }
          cleanup
  %1123 = extractvalue { ptr, i32 } %1122, 0
  store ptr %1123, ptr %9, align 8
  %1124 = extractvalue { ptr, i32 } %1122, 1
  store i32 %1124, ptr %10, align 4
  br label %1134

1125:                                             ; preds = %1113
  %1126 = landingpad { ptr, i32 }
          cleanup
  %1127 = extractvalue { ptr, i32 } %1126, 0
  store ptr %1127, ptr %9, align 8
  %1128 = extractvalue { ptr, i32 } %1126, 1
  store i32 %1128, ptr %10, align 4
  br label %1133

1129:                                             ; preds = %1115
  %1130 = landingpad { ptr, i32 }
          cleanup
  %1131 = extractvalue { ptr, i32 } %1130, 0
  store ptr %1131, ptr %9, align 8
  %1132 = extractvalue { ptr, i32 } %1130, 1
  store i32 %1132, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #6
  br label %1133

1133:                                             ; preds = %1129, %1125
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #6
  br label %1134

1134:                                             ; preds = %1133, %1121
  call void @llvm.lifetime.end.p0(i64 32, ptr %130) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #6
  br label %1135

1135:                                             ; preds = %1134, %1117
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #6
  br label %1140

1136:                                             ; preds = %1116, %1074
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %131) #6
  call void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA1_cTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSJ_RKSB_RKSC_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %131, ptr noundef @.str.9, ptr noundef @.str.10, ptr noundef nonnull align 8 dereferenceable(32) @_Z11cout_outputB5cxx11, ptr noundef nonnull align 1 dereferenceable(1) @.str.11)
  %1137 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %131)
          to label %1138 unwind label %1142

1138:                                             ; preds = %1136
  br i1 %1137, label %1139, label %1146

1139:                                             ; preds = %1138
  br label %1166

1140:                                             ; preds = %1135, %1107
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #6
  br label %1141

1141:                                             ; preds = %1140, %1106
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #6
  br label %1168

1142:                                             ; preds = %1136
  %1143 = landingpad { ptr, i32 }
          cleanup
  %1144 = extractvalue { ptr, i32 } %1143, 0
  store ptr %1144, ptr %9, align 8
  %1145 = extractvalue { ptr, i32 } %1143, 1
  store i32 %1145, ptr %10, align 4
  br label %1167

1146:                                             ; preds = %1138
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %132)
          to label %1147 unwind label %1152

1147:                                             ; preds = %1146
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #6
  %1148 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %131)
          to label %1149 unwind label %1156

1149:                                             ; preds = %1147
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %133, i32 noundef 1, ptr noundef @.str.4, i32 noundef 129, ptr noundef %1148)
          to label %1150 unwind label %1156

1150:                                             ; preds = %1149
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef nonnull align 8 dereferenceable(8) %132)
          to label %1151 unwind label %1160

1151:                                             ; preds = %1150
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %133) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #6
  br label %1166

1152:                                             ; preds = %1146
  %1153 = landingpad { ptr, i32 }
          cleanup
  %1154 = extractvalue { ptr, i32 } %1153, 0
  store ptr %1154, ptr %9, align 8
  %1155 = extractvalue { ptr, i32 } %1153, 1
  store i32 %1155, ptr %10, align 4
  br label %1165

1156:                                             ; preds = %1149, %1147
  %1157 = landingpad { ptr, i32 }
          cleanup
  %1158 = extractvalue { ptr, i32 } %1157, 0
  store ptr %1158, ptr %9, align 8
  %1159 = extractvalue { ptr, i32 } %1157, 1
  store i32 %1159, ptr %10, align 4
  br label %1164

1160:                                             ; preds = %1150
  %1161 = landingpad { ptr, i32 }
          cleanup
  %1162 = extractvalue { ptr, i32 } %1161, 0
  store ptr %1162, ptr %9, align 8
  %1163 = extractvalue { ptr, i32 } %1161, 1
  store i32 %1163, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %133) #6
  br label %1164

1164:                                             ; preds = %1160, %1156
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #6
  br label %1165

1165:                                             ; preds = %1164, %1152
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #6
  br label %1167

1166:                                             ; preds = %1151, %1139
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %131) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %131) #6
  ret void

1167:                                             ; preds = %1165, %1142
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %131) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %131) #6
  br label %1168

1168:                                             ; preds = %1167, %1141, %1075, %1025, %959, %909, %880, %851, %785, %736, %707, %678, %612, %563, %534, %505, %439, %390, %361, %332, %266, %217
  %1169 = load ptr, ptr %9, align 8
  %1170 = load i32, ptr %10, align 4
  %1171 = insertvalue { ptr, i32 } poison, ptr %1169, 0
  %1172 = insertvalue { ptr, i32 } %1171, i32 %1170, 1
  resume { ptr, i32 } %1172
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { 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 #1 = { 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 #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { "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 = { 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 #5 = { 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 #6 = { 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 = !{!"long", !7, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"_ZTSSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE", !6, i64 0, !10, i64 8}
!13 = !{!12, !10, i64 8}
!14 = !{!15, !15, i64 0}
!15 = !{!"bool", !7, i64 0}
!16 = !{!17, !17, i64 0}
!17 = !{!"int", !7, i64 0}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.testing::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.4" }
%"struct.std::_Head_base.4" = type { ptr }
%"class.std::allocator" = type { i8 }
%"class.testing::Message" = type { %"class.std::unique_ptr.5" }
%"class.std::unique_ptr.5" = type { %"struct.std::__uniq_ptr_data.6" }
%"struct.std::__uniq_ptr_data.6" = type { %"class.std::__uniq_ptr_impl.7" }
%"class.std::__uniq_ptr_impl.7" = type { %"class.std::tuple.8" }
%"class.std::tuple.8" = type { %"struct.std::_Tuple_impl.9" }
%"struct.std::_Tuple_impl.9" = type { %"struct.std::_Head_base.12" }
%"struct.std::_Head_base.12" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }

@test_key_str1 = external dso_local global i64, align 8
@test_key_str2 = external dso_local global i64, align 8
@test_result = external dso_local local_unnamed_addr global i64, align 8
@_Z11cout_outputB5cxx11 = external dso_local global %"class.std::__cxx11::basic_string", align 8
@.str.4 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [188 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [188 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [188 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [24 x i8], align 1

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z3runSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr, i64) local_unnamed_addr #1

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

declare i32 @__gxx_personality_v0(...)

; 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 void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 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 #1 align 2

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

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

110:                                              ; preds = %1
  %111 = invoke noundef zeroext i1 @_Z3runSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr nonnull %4, i64 1)
          to label %112 unwind label %.loopexit296.loopexit

112:                                              ; preds = %110
  %113 = xor i1 %111, true
  %114 = zext i1 %113 to i8
  store i8 %114, ptr %3, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNSt9enable_ifIXntsr3std14is_convertibleIS2_S0_EE5valueEvE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef null)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #6
  %115 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %2)
  br i1 %115, label %136, label %119

116:                                              ; preds = %1
  %117 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit296

.loopexit296.loopexit:                            ; preds = %110
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #6
  br label %.loopexit296

.loopexit296:                                     ; preds = %.loopexit296.loopexit, %116
  %.pn = phi { ptr, i32 } [ %117, %116 ], [ %118, %.loopexit296.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #6
  br label %138

119:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %120 unwind label %125

120:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #6
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.8)
          to label %121 unwind label %127

121:                                              ; preds = %120
  %122 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %7, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 74, ptr noundef %122)
          to label %123 unwind label %129

123:                                              ; preds = %121
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %124 unwind label %131

124:                                              ; preds = %123
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  br label %136

125:                                              ; preds = %119
  %126 = landingpad { ptr, i32 }
          cleanup
  br label %135

127:                                              ; preds = %120
  %128 = landingpad { ptr, i32 }
          cleanup
  br label %134

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

131:                                              ; preds = %123
  %132 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #6
  br label %133

133:                                              ; preds = %131, %129
  %.pn146 = phi { ptr, i32 } [ %132, %131 ], [ %130, %129 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  br label %134

134:                                              ; preds = %133, %127
  %.pn146.pn = phi { ptr, i32 } [ %.pn146, %133 ], [ %128, %127 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  br label %135

135:                                              ; preds = %134, %125
  %.pn146.pn.pn = phi { ptr, i32 } [ %.pn146.pn, %134 ], [ %126, %125 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #6
  br label %138

136:                                              ; preds = %112, %124
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #6
  call void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA1_cTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSJ_RKSB_RKSC_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %9, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.10, ptr noundef nonnull align 8 dereferenceable(32) @_Z11cout_outputB5cxx11, ptr noundef nonnull align 1 dereferenceable(1) @.str.11)
  %137 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  br i1 %137, label %153, label %139

138:                                              ; preds = %135, %.loopexit296
  %.pn146.pn.pn.pn = phi { ptr, i32 } [ %.pn146.pn.pn, %135 ], [ %.pn, %.loopexit296 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #6
  br label %578

139:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %140 unwind label %145

140:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  %141 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %142 unwind label %147

142:                                              ; preds = %140
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %11, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 75, ptr noundef %141)
          to label %143 unwind label %147

143:                                              ; preds = %142
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %144 unwind label %149

144:                                              ; preds = %143
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  br label %153

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

147:                                              ; preds = %142, %140
  %148 = landingpad { ptr, i32 }
          cleanup
  br label %151

149:                                              ; preds = %143
  %150 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #6
  br label %151

151:                                              ; preds = %149, %147
  %.pn151 = phi { ptr, i32 } [ %150, %149 ], [ %148, %147 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #6
  br label %152

152:                                              ; preds = %151, %145
  %.pn151.pn = phi { ptr, i32 } [ %.pn151, %151 ], [ %146, %145 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #6
  br label %578

153:                                              ; preds = %136, %144
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #6
  store i64 1, ptr @test_key_str1, align 8, !tbaa !5
  store i64 1, ptr @test_key_str2, align 8, !tbaa !5
  store i64 5, ptr @test_result, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %154 unwind label %.thread

154:                                              ; preds = %153
  %155 = getelementptr inbounds i8, ptr %14, i64 32
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %155, ptr noundef nonnull @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %156 unwind label %163

156:                                              ; preds = %154
  %157 = invoke noundef zeroext i1 @_Z3runSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr nonnull %14, i64 2)
          to label %158 unwind label %.loopexit295.loopexit

158:                                              ; preds = %156
  %159 = zext i1 %157 to i8
  store i8 %159, ptr %13, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNSt9enable_ifIXntsr3std14is_convertibleIS2_S0_EE5valueEvE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 1 dereferenceable(1) %13, ptr noundef null)
  %160 = getelementptr inbounds i8, ptr %14, i64 32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %160) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  %161 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
  br i1 %161, label %185, label %168

.thread:                                          ; preds = %153
  %162 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  br label %.loopexit294

163:                                              ; preds = %154
  %164 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit295

.loopexit295.loopexit:                            ; preds = %156
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = getelementptr inbounds i8, ptr %14, i64 32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  br label %.loopexit295

.loopexit295:                                     ; preds = %.loopexit295.loopexit, %163
  %167 = phi i1 [ false, %163 ], [ true, %.loopexit295.loopexit ]
  %.pn154 = phi { ptr, i32 } [ %164, %163 ], [ %165, %.loopexit295.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  br i1 %167, label %.loopexit294, label %.preheader293.preheader

.preheader293.preheader:                          ; preds = %.loopexit295
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  br label %.loopexit294

.loopexit294:                                     ; preds = %.preheader293.preheader, %.thread, %.loopexit295
  %.pn154.pn249 = phi { ptr, i32 } [ %162, %.thread ], [ %.pn154, %.loopexit295 ], [ %.pn154, %.preheader293.preheader ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  br label %187

168:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %169 unwind label %174

169:                                              ; preds = %168
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #6
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7)
          to label %170 unwind label %176

170:                                              ; preds = %169
  %171 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %18, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 81, ptr noundef %171)
          to label %172 unwind label %178

172:                                              ; preds = %170
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %173 unwind label %180

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

174:                                              ; preds = %168
  %175 = landingpad { ptr, i32 }
          cleanup
  br label %184

176:                                              ; preds = %169
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %183

178:                                              ; preds = %170
  %179 = landingpad { ptr, i32 }
          cleanup
  br label %182

180:                                              ; preds = %172
  %181 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #6
  br label %182

182:                                              ; preds = %180, %178
  %.pn157 = phi { ptr, i32 } [ %181, %180 ], [ %179, %178 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  br label %183

183:                                              ; preds = %182, %176
  %.pn157.pn = phi { ptr, i32 } [ %.pn157, %182 ], [ %177, %176 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #6
  br label %184

184:                                              ; preds = %183, %174
  %.pn157.pn.pn = phi { ptr, i32 } [ %.pn157.pn, %183 ], [ %175, %174 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #6
  br label %187

185:                                              ; preds = %158, %173
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  store i32 0, ptr %21, align 4, !tbaa !11
  call void @_ZN7testing8internal8EqHelper7CompareImiTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %20, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.14, ptr noundef nonnull align 8 dereferenceable(8) @test_key_str1, ptr noundef nonnull align 4 dereferenceable(4) %21)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  %186 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
  br i1 %186, label %202, label %188

187:                                              ; preds = %184, %.loopexit294
  %.pn157.pn.pn.pn = phi { ptr, i32 } [ %.pn157.pn.pn, %184 ], [ %.pn154.pn249, %.loopexit294 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #6
  br label %578

188:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %189 unwind label %194

189:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  %190 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %191 unwind label %196

191:                                              ; preds = %189
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %23, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 82, ptr noundef %190)
          to label %192 unwind label %196

192:                                              ; preds = %191
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %193 unwind label %198

193:                                              ; preds = %192
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  br label %202

194:                                              ; preds = %188
  %195 = landingpad { ptr, i32 }
          cleanup
  br label %201

196:                                              ; preds = %191, %189
  %197 = landingpad { ptr, i32 }
          cleanup
  br label %200

198:                                              ; preds = %192
  %199 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #6
  br label %200

200:                                              ; preds = %198, %196
  %.pn162 = phi { ptr, i32 } [ %199, %198 ], [ %197, %196 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #6
  br label %201

201:                                              ; preds = %200, %194
  %.pn162.pn = phi { ptr, i32 } [ %.pn162, %200 ], [ %195, %194 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #6
  br label %578

202:                                              ; preds = %185, %193
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #6
  store i32 0, ptr %25, align 4, !tbaa !11
  call void @_ZN7testing8internal8EqHelper7CompareImiTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %24, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14, ptr noundef nonnull align 8 dereferenceable(8) @test_key_str2, ptr noundef nonnull align 4 dereferenceable(4) %25)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #6
  %203 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %24)
  br i1 %203, label %218, label %204

204:                                              ; preds = %202
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %205 unwind label %210

205:                                              ; preds = %204
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  %206 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %207 unwind label %212

207:                                              ; preds = %205
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %27, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 83, ptr noundef %206)
          to label %208 unwind label %212

208:                                              ; preds = %207
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %209 unwind label %214

209:                                              ; preds = %208
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  br label %218

210:                                              ; preds = %204
  %211 = landingpad { ptr, i32 }
          cleanup
  br label %217

212:                                              ; preds = %207, %205
  %213 = landingpad { ptr, i32 }
          cleanup
  br label %216

214:                                              ; preds = %208
  %215 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #6
  br label %216

216:                                              ; preds = %214, %212
  %.pn165 = phi { ptr, i32 } [ %215, %214 ], [ %213, %212 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #6
  br label %217

217:                                              ; preds = %216, %210
  %.pn165.pn = phi { ptr, i32 } [ %.pn165, %216 ], [ %211, %210 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #6
  br label %578

218:                                              ; preds = %202, %209
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #6
  call void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSJ_RKSB_RKSC_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %28, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.16, ptr noundef nonnull align 8 dereferenceable(32) @_Z11cout_outputB5cxx11, ptr noundef nonnull align 1 dereferenceable(2) @.str.17)
  %219 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
  br i1 %219, label %234, label %220

220:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %221 unwind label %226

221:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  %222 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %223 unwind label %228

223:                                              ; preds = %221
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %30, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 84, ptr noundef %222)
          to label %224 unwind label %228

224:                                              ; preds = %223
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %225 unwind label %230

225:                                              ; preds = %224
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  br label %234

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

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

230:                                              ; preds = %224
  %231 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #6
  br label %232

232:                                              ; preds = %230, %228
  %.pn168 = phi { ptr, i32 } [ %231, %230 ], [ %229, %228 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #6
  br label %233

233:                                              ; preds = %232, %226
  %.pn168.pn = phi { ptr, i32 } [ %.pn168, %232 ], [ %227, %226 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #6
  br label %578

234:                                              ; preds = %218, %225
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #6
  store i64 1, ptr @test_key_str1, align 8, !tbaa !5
  store i64 1, ptr @test_key_str2, align 8, !tbaa !5
  store i64 4, ptr @test_result, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %235 unwind label %.thread250

235:                                              ; preds = %234
  %236 = getelementptr inbounds i8, ptr %33, i64 32
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %236, ptr noundef nonnull @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %237 unwind label %244

237:                                              ; preds = %235
  %238 = invoke noundef zeroext i1 @_Z3runSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr nonnull %33, i64 2)
          to label %239 unwind label %.loopexit292.loopexit

239:                                              ; preds = %237
  %240 = zext i1 %238 to i8
  store i8 %240, ptr %32, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNSt9enable_ifIXntsr3std14is_convertibleIS2_S0_EE5valueEvE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 1 dereferenceable(1) %32, ptr noundef null)
  %241 = getelementptr inbounds i8, ptr %33, i64 32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %241) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #6
  %242 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %31)
  br i1 %242, label %266, label %249

.thread250:                                       ; preds = %234
  %243 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #6
  br label %.loopexit291

244:                                              ; preds = %235
  %245 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit292

.loopexit292.loopexit:                            ; preds = %237
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = getelementptr inbounds i8, ptr %33, i64 32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %247) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #6
  br label %.loopexit292

.loopexit292:                                     ; preds = %.loopexit292.loopexit, %244
  %248 = phi i1 [ false, %244 ], [ true, %.loopexit292.loopexit ]
  %.pn171 = phi { ptr, i32 } [ %245, %244 ], [ %246, %.loopexit292.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #6
  br i1 %248, label %.loopexit291, label %.preheader290.preheader

.preheader290.preheader:                          ; preds = %.loopexit292
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #6
  br label %.loopexit291

.loopexit291:                                     ; preds = %.preheader290.preheader, %.thread250, %.loopexit292
  %.pn171.pn255 = phi { ptr, i32 } [ %243, %.thread250 ], [ %.pn171, %.loopexit292 ], [ %.pn171, %.preheader290.preheader ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #6
  br label %268

249:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %250 unwind label %255

250:                                              ; preds = %249
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #6
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7)
          to label %251 unwind label %257

251:                                              ; preds = %250
  %252 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %37, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 90, ptr noundef %252)
          to label %253 unwind label %259

253:                                              ; preds = %251
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %254 unwind label %261

254:                                              ; preds = %253
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  br label %266

255:                                              ; preds = %249
  %256 = landingpad { ptr, i32 }
          cleanup
  br label %265

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

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

261:                                              ; preds = %253
  %262 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #6
  br label %263

263:                                              ; preds = %261, %259
  %.pn174 = phi { ptr, i32 } [ %262, %261 ], [ %260, %259 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  br label %264

264:                                              ; preds = %263, %257
  %.pn174.pn = phi { ptr, i32 } [ %.pn174, %263 ], [ %258, %257 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #6
  br label %265

265:                                              ; preds = %264, %255
  %.pn174.pn.pn = phi { ptr, i32 } [ %.pn174.pn, %264 ], [ %256, %255 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #6
  br label %268

266:                                              ; preds = %239, %254
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #6
  store i64 1953654899, ptr %40, align 8, !tbaa !5
  call void @_ZN7testing8internal8EqHelper7CompareImmTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %39, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.20, ptr noundef nonnull align 8 dereferenceable(8) @test_key_str1, ptr noundef nonnull align 8 dereferenceable(8) %40)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #6
  %267 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
  br i1 %267, label %283, label %269

268:                                              ; preds = %265, %.loopexit291
  %.pn174.pn.pn.pn = phi { ptr, i32 } [ %.pn174.pn.pn, %265 ], [ %.pn171.pn255, %.loopexit291 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #6
  br label %578

269:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %270 unwind label %275

270:                                              ; preds = %269
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #6
  %271 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %272 unwind label %277

272:                                              ; preds = %270
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %42, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 92, ptr noundef %271)
          to label %273 unwind label %277

273:                                              ; preds = %272
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %274 unwind label %279

274:                                              ; preds = %273
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #6
  br label %283

275:                                              ; preds = %269
  %276 = landingpad { ptr, i32 }
          cleanup
  br label %282

277:                                              ; preds = %272, %270
  %278 = landingpad { ptr, i32 }
          cleanup
  br label %281

279:                                              ; preds = %273
  %280 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  br label %281

281:                                              ; preds = %279, %277
  %.pn179 = phi { ptr, i32 } [ %280, %279 ], [ %278, %277 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #6
  br label %282

282:                                              ; preds = %281, %275
  %.pn179.pn = phi { ptr, i32 } [ %.pn179, %281 ], [ %276, %275 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #6
  br label %578

283:                                              ; preds = %266, %274
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %44) #6
  store i32 0, ptr %44, align 4, !tbaa !11
  call void @_ZN7testing8internal8EqHelper7CompareImiTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %43, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14, ptr noundef nonnull align 8 dereferenceable(8) @test_key_str2, ptr noundef nonnull align 4 dereferenceable(4) %44)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #6
  %284 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %43)
  br i1 %284, label %299, label %285

285:                                              ; preds = %283
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %286 unwind label %291

286:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #6
  %287 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %43)
          to label %288 unwind label %293

288:                                              ; preds = %286
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %46, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 93, ptr noundef %287)
          to label %289 unwind label %293

289:                                              ; preds = %288
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %290 unwind label %295

290:                                              ; preds = %289
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #6
  br label %299

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

293:                                              ; preds = %288, %286
  %294 = landingpad { ptr, i32 }
          cleanup
  br label %297

295:                                              ; preds = %289
  %296 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #6
  br label %297

297:                                              ; preds = %295, %293
  %.pn182 = phi { ptr, i32 } [ %296, %295 ], [ %294, %293 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #6
  br label %298

298:                                              ; preds = %297, %291
  %.pn182.pn = phi { ptr, i32 } [ %.pn182, %297 ], [ %292, %291 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #6
  br label %578

299:                                              ; preds = %283, %290
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #6
  call void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSJ_RKSB_RKSC_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %47, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.21, ptr noundef nonnull align 8 dereferenceable(32) @_Z11cout_outputB5cxx11, ptr noundef nonnull align 1 dereferenceable(2) @.str.22)
  %300 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %47)
  br i1 %300, label %315, label %301

301:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %302 unwind label %307

302:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #6
  %303 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %47)
          to label %304 unwind label %309

304:                                              ; preds = %302
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %49, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 94, ptr noundef %303)
          to label %305 unwind label %309

305:                                              ; preds = %304
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %306 unwind label %311

306:                                              ; preds = %305
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #6
  br label %315

307:                                              ; preds = %301
  %308 = landingpad { ptr, i32 }
          cleanup
  br label %314

309:                                              ; preds = %304, %302
  %310 = landingpad { ptr, i32 }
          cleanup
  br label %313

311:                                              ; preds = %305
  %312 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #6
  br label %313

313:                                              ; preds = %311, %309
  %.pn185 = phi { ptr, i32 } [ %312, %311 ], [ %310, %309 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #6
  br label %314

314:                                              ; preds = %313, %307
  %.pn185.pn = phi { ptr, i32 } [ %.pn185, %313 ], [ %308, %307 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #6
  br label %578

315:                                              ; preds = %299, %306
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #6
  store i64 1, ptr @test_key_str1, align 8, !tbaa !5
  store i64 1, ptr @test_key_str2, align 8, !tbaa !5
  store i64 3, ptr @test_result, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %51) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %52) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %53) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %316 unwind label %.thread256

316:                                              ; preds = %315
  %317 = getelementptr inbounds i8, ptr %52, i64 32
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %54) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %317, ptr noundef nonnull @.str.23, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %318 unwind label %325

318:                                              ; preds = %316
  %319 = invoke noundef zeroext i1 @_Z3runSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr nonnull %52, i64 2)
          to label %320 unwind label %.loopexit289.loopexit

320:                                              ; preds = %318
  %321 = zext i1 %319 to i8
  store i8 %321, ptr %51, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNSt9enable_ifIXntsr3std14is_convertibleIS2_S0_EE5valueEvE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull align 1 dereferenceable(1) %51, ptr noundef null)
  %322 = getelementptr inbounds i8, ptr %52, i64 32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %322) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #6
  %323 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %50)
  br i1 %323, label %347, label %330

.thread256:                                       ; preds = %315
  %324 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #6
  br label %.loopexit288

325:                                              ; preds = %316
  %326 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit289

.loopexit289.loopexit:                            ; preds = %318
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = getelementptr inbounds i8, ptr %52, i64 32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %328) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #6
  br label %.loopexit289

.loopexit289:                                     ; preds = %.loopexit289.loopexit, %325
  %329 = phi i1 [ false, %325 ], [ true, %.loopexit289.loopexit ]
  %.pn188 = phi { ptr, i32 } [ %326, %325 ], [ %327, %.loopexit289.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #6
  br i1 %329, label %.loopexit288, label %.preheader287.preheader

.preheader287.preheader:                          ; preds = %.loopexit289
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #6
  br label %.loopexit288

.loopexit288:                                     ; preds = %.preheader287.preheader, %.thread256, %.loopexit289
  %.pn188.pn261 = phi { ptr, i32 } [ %324, %.thread256 ], [ %.pn188, %.loopexit289 ], [ %.pn188, %.preheader287.preheader ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #6
  br label %349

330:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %331 unwind label %336

331:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %57) #6
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7)
          to label %332 unwind label %338

332:                                              ; preds = %331
  %333 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %56, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 100, ptr noundef %333)
          to label %334 unwind label %340

334:                                              ; preds = %332
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %335 unwind label %342

335:                                              ; preds = %334
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #6
  br label %347

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

338:                                              ; preds = %331
  %339 = landingpad { ptr, i32 }
          cleanup
  br label %345

340:                                              ; preds = %332
  %341 = landingpad { ptr, i32 }
          cleanup
  br label %344

342:                                              ; preds = %334
  %343 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #6
  br label %344

344:                                              ; preds = %342, %340
  %.pn191 = phi { ptr, i32 } [ %343, %342 ], [ %341, %340 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  br label %345

345:                                              ; preds = %344, %338
  %.pn191.pn = phi { ptr, i32 } [ %.pn191, %344 ], [ %339, %338 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #6
  br label %346

346:                                              ; preds = %345, %336
  %.pn191.pn.pn = phi { ptr, i32 } [ %.pn191.pn, %345 ], [ %337, %336 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #6
  br label %349

347:                                              ; preds = %320, %335
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %58) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #6
  store i64 6998719600786304876, ptr %59, align 8, !tbaa !5
  call void @_ZN7testing8internal8EqHelper7CompareImmTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %58, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.25, ptr noundef nonnull align 8 dereferenceable(8) @test_key_str1, ptr noundef nonnull align 8 dereferenceable(8) %59)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #6
  %348 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  br i1 %348, label %364, label %350

349:                                              ; preds = %346, %.loopexit288
  %.pn191.pn.pn.pn = phi { ptr, i32 } [ %.pn191.pn.pn, %346 ], [ %.pn188.pn261, %.loopexit288 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #6
  br label %578

350:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %351 unwind label %356

351:                                              ; preds = %350
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #6
  %352 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
          to label %353 unwind label %358

353:                                              ; preds = %351
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %61, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 104, ptr noundef %352)
          to label %354 unwind label %358

354:                                              ; preds = %353
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %355 unwind label %360

355:                                              ; preds = %354
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #6
  br label %364

356:                                              ; preds = %350
  %357 = landingpad { ptr, i32 }
          cleanup
  br label %363

358:                                              ; preds = %353, %351
  %359 = landingpad { ptr, i32 }
          cleanup
  br label %362

360:                                              ; preds = %354
  %361 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #6
  br label %362

362:                                              ; preds = %360, %358
  %.pn196 = phi { ptr, i32 } [ %361, %360 ], [ %359, %358 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #6
  br label %363

363:                                              ; preds = %362, %356
  %.pn196.pn = phi { ptr, i32 } [ %.pn196, %362 ], [ %357, %356 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #6
  br label %578

364:                                              ; preds = %347, %355
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %62) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #6
  store i64 26482, ptr %63, align 8, !tbaa !5
  call void @_ZN7testing8internal8EqHelper7CompareImmTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %62, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.26, ptr noundef nonnull align 8 dereferenceable(8) @test_key_str2, ptr noundef nonnull align 8 dereferenceable(8) %63)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #6
  %365 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %62)
  br i1 %365, label %380, label %366

366:                                              ; preds = %364
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %367 unwind label %372

367:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #6
  %368 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %62)
          to label %369 unwind label %374

369:                                              ; preds = %367
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %65, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 105, ptr noundef %368)
          to label %370 unwind label %374

370:                                              ; preds = %369
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %371 unwind label %376

371:                                              ; preds = %370
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #6
  br label %380

372:                                              ; preds = %366
  %373 = landingpad { ptr, i32 }
          cleanup
  br label %379

374:                                              ; preds = %369, %367
  %375 = landingpad { ptr, i32 }
          cleanup
  br label %378

376:                                              ; preds = %370
  %377 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #6
  br label %378

378:                                              ; preds = %376, %374
  %.pn199 = phi { ptr, i32 } [ %377, %376 ], [ %375, %374 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #6
  br label %379

379:                                              ; preds = %378, %372
  %.pn199.pn = phi { ptr, i32 } [ %.pn199, %378 ], [ %373, %372 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %62) #6
  br label %578

380:                                              ; preds = %364, %371
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %62) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %66) #6
  call void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSJ_RKSB_RKSC_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %66, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.27, ptr noundef nonnull align 8 dereferenceable(32) @_Z11cout_outputB5cxx11, ptr noundef nonnull align 1 dereferenceable(2) @.str.28)
  %381 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %66)
  br i1 %381, label %396, label %382

382:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %383 unwind label %388

383:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #6
  %384 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %66)
          to label %385 unwind label %390

385:                                              ; preds = %383
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %68, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 106, ptr noundef %384)
          to label %386 unwind label %390

386:                                              ; preds = %385
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %387 unwind label %392

387:                                              ; preds = %386
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #6
  br label %396

388:                                              ; preds = %382
  %389 = landingpad { ptr, i32 }
          cleanup
  br label %395

390:                                              ; preds = %385, %383
  %391 = landingpad { ptr, i32 }
          cleanup
  br label %394

392:                                              ; preds = %386
  %393 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #6
  br label %394

394:                                              ; preds = %392, %390
  %.pn202 = phi { ptr, i32 } [ %393, %392 ], [ %391, %390 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #6
  br label %395

395:                                              ; preds = %394, %388
  %.pn202.pn = phi { ptr, i32 } [ %.pn202, %394 ], [ %389, %388 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #6
  br label %578

396:                                              ; preds = %380, %387
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #6
  store i64 1, ptr @test_key_str1, align 8, !tbaa !5
  store i64 1, ptr @test_key_str2, align 8, !tbaa !5
  store i64 2, ptr @test_result, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %69) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %70) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %71) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %72) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %72)
          to label %397 unwind label %.thread262

397:                                              ; preds = %396
  %398 = getelementptr inbounds i8, ptr %71, i64 32
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %73) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %398, ptr noundef nonnull @.str.29, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %399 unwind label %406

399:                                              ; preds = %397
  %400 = invoke noundef zeroext i1 @_Z3runSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr nonnull %71, i64 2)
          to label %401 unwind label %.loopexit286.loopexit

401:                                              ; preds = %399
  %402 = zext i1 %400 to i8
  store i8 %402, ptr %70, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNSt9enable_ifIXntsr3std14is_convertibleIS2_S0_EE5valueEvE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %69, ptr noundef nonnull align 1 dereferenceable(1) %70, ptr noundef null)
  %403 = getelementptr inbounds i8, ptr %71, i64 32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %403) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %73) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %71) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %70) #6
  %404 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %69)
  br i1 %404, label %428, label %411

.thread262:                                       ; preds = %396
  %405 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #6
  br label %.loopexit285

406:                                              ; preds = %397
  %407 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit286

.loopexit286.loopexit:                            ; preds = %399
  %408 = landingpad { ptr, i32 }
          cleanup
  %409 = getelementptr inbounds i8, ptr %71, i64 32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %409) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #6
  br label %.loopexit286

.loopexit286:                                     ; preds = %.loopexit286.loopexit, %406
  %410 = phi i1 [ false, %406 ], [ true, %.loopexit286.loopexit ]
  %.pn205 = phi { ptr, i32 } [ %407, %406 ], [ %408, %.loopexit286.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %73) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #6
  br i1 %410, label %.loopexit285, label %.preheader284.preheader

.preheader284.preheader:                          ; preds = %.loopexit286
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #6
  br label %.loopexit285

.loopexit285:                                     ; preds = %.preheader284.preheader, %.thread262, %.loopexit286
  %.pn205.pn267 = phi { ptr, i32 } [ %405, %.thread262 ], [ %.pn205, %.loopexit286 ], [ %.pn205, %.preheader284.preheader ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %71) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %70) #6
  br label %430

411:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74)
          to label %412 unwind label %417

412:                                              ; preds = %411
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %76) #6
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %76, ptr noundef nonnull align 8 dereferenceable(16) %69, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7)
          to label %413 unwind label %419

413:                                              ; preds = %412
  %414 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %76) #6
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %75, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 112, ptr noundef %414)
          to label %415 unwind label %421

415:                                              ; preds = %413
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %74)
          to label %416 unwind label %423

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

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

419:                                              ; preds = %412
  %420 = landingpad { ptr, i32 }
          cleanup
  br label %426

421:                                              ; preds = %413
  %422 = landingpad { ptr, i32 }
          cleanup
  br label %425

423:                                              ; preds = %415
  %424 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #6
  br label %425

425:                                              ; preds = %423, %421
  %.pn208 = phi { ptr, i32 } [ %424, %423 ], [ %422, %421 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #6
  br label %426

426:                                              ; preds = %425, %419
  %.pn208.pn = phi { ptr, i32 } [ %.pn208, %425 ], [ %420, %419 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #6
  br label %427

427:                                              ; preds = %426, %417
  %.pn208.pn.pn = phi { ptr, i32 } [ %.pn208.pn, %426 ], [ %418, %417 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #6
  br label %430

428:                                              ; preds = %401, %416
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %77) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %78) #6
  store i64 4050765991979987505, ptr %78, align 8, !tbaa !5
  call void @_ZN7testing8internal8EqHelper7CompareImmTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %77, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.31, ptr noundef nonnull align 8 dereferenceable(8) @test_key_str1, ptr noundef nonnull align 8 dereferenceable(8) %78)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #6
  %429 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %77)
  br i1 %429, label %445, label %431

430:                                              ; preds = %427, %.loopexit285
  %.pn208.pn.pn.pn = phi { ptr, i32 } [ %.pn208.pn.pn, %427 ], [ %.pn205.pn267, %.loopexit285 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #6
  br label %578

431:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %79) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %432 unwind label %437

432:                                              ; preds = %431
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %80) #6
  %433 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %77)
          to label %434 unwind label %439

434:                                              ; preds = %432
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %80, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 116, ptr noundef %433)
          to label %435 unwind label %439

435:                                              ; preds = %434
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %436 unwind label %441

436:                                              ; preds = %435
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #6
  br label %445

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

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

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

443:                                              ; preds = %441, %439
  %.pn213 = phi { ptr, i32 } [ %442, %441 ], [ %440, %439 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #6
  br label %444

444:                                              ; preds = %443, %437
  %.pn213.pn = phi { ptr, i32 } [ %.pn213, %443 ], [ %438, %437 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #6
  br label %578

445:                                              ; preds = %428, %436
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %81) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #6
  store i64 3544952156018063160, ptr %82, align 8, !tbaa !5
  call void @_ZN7testing8internal8EqHelper7CompareImmTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %81, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.32, ptr noundef nonnull align 8 dereferenceable(8) @test_key_str2, ptr noundef nonnull align 8 dereferenceable(8) %82)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #6
  %446 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %81)
  br i1 %446, label %461, label %447

447:                                              ; preds = %445
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %83) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %83)
          to label %448 unwind label %453

448:                                              ; preds = %447
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %84) #6
  %449 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %81)
          to label %450 unwind label %455

450:                                              ; preds = %448
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %84, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 120, ptr noundef %449)
          to label %451 unwind label %455

451:                                              ; preds = %450
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(8) %83)
          to label %452 unwind label %457

452:                                              ; preds = %451
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #6
  br label %461

453:                                              ; preds = %447
  %454 = landingpad { ptr, i32 }
          cleanup
  br label %460

455:                                              ; preds = %450, %448
  %456 = landingpad { ptr, i32 }
          cleanup
  br label %459

457:                                              ; preds = %451
  %458 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #6
  br label %459

459:                                              ; preds = %457, %455
  %.pn216 = phi { ptr, i32 } [ %458, %457 ], [ %456, %455 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #6
  br label %460

460:                                              ; preds = %459, %453
  %.pn216.pn = phi { ptr, i32 } [ %.pn216, %459 ], [ %454, %453 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #6
  br label %578

461:                                              ; preds = %445, %452
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %85) #6
  call void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSJ_RKSB_RKSC_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %85, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.33, ptr noundef nonnull align 8 dereferenceable(32) @_Z11cout_outputB5cxx11, ptr noundef nonnull align 1 dereferenceable(2) @.str.34)
  %462 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %85)
  br i1 %462, label %477, label %463

463:                                              ; preds = %461
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %86) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %86)
          to label %464 unwind label %469

464:                                              ; preds = %463
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %87) #6
  %465 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %85)
          to label %466 unwind label %471

466:                                              ; preds = %464
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %87, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 121, ptr noundef %465)
          to label %467 unwind label %471

467:                                              ; preds = %466
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %86)
          to label %468 unwind label %473

468:                                              ; preds = %467
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %87) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #6
  br label %477

469:                                              ; preds = %463
  %470 = landingpad { ptr, i32 }
          cleanup
  br label %476

471:                                              ; preds = %466, %464
  %472 = landingpad { ptr, i32 }
          cleanup
  br label %475

473:                                              ; preds = %467
  %474 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #6
  br label %475

475:                                              ; preds = %473, %471
  %.pn219 = phi { ptr, i32 } [ %474, %473 ], [ %472, %471 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %87) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #6
  br label %476

476:                                              ; preds = %475, %469
  %.pn219.pn = phi { ptr, i32 } [ %.pn219, %475 ], [ %470, %469 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #6
  br label %578

477:                                              ; preds = %461, %468
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %88) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %89) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %90) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %91) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %91)
          to label %478 unwind label %.thread268

478:                                              ; preds = %477
  %479 = getelementptr inbounds i8, ptr %90, i64 32
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %92) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %479, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %92)
          to label %480 unwind label %488

480:                                              ; preds = %478
  %481 = invoke noundef zeroext i1 @_Z3runSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr nonnull %90, i64 2)
          to label %482 unwind label %.loopexit283.loopexit

482:                                              ; preds = %480
  %483 = xor i1 %481, true
  %484 = zext i1 %483 to i8
  store i8 %484, ptr %89, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNSt9enable_ifIXntsr3std14is_convertibleIS2_S0_EE5valueEvE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %88, ptr noundef nonnull align 1 dereferenceable(1) %89, ptr noundef null)
  %485 = getelementptr inbounds i8, ptr %90, i64 32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %485) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %92) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %91) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %90) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %89) #6
  %486 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %88)
  br i1 %486, label %510, label %493

.thread268:                                       ; preds = %477
  %487 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %91) #6
  br label %.loopexit282

488:                                              ; preds = %478
  %489 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit283

.loopexit283.loopexit:                            ; preds = %480
  %490 = landingpad { ptr, i32 }
          cleanup
  %491 = getelementptr inbounds i8, ptr %90, i64 32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %491) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #6
  br label %.loopexit283

.loopexit283:                                     ; preds = %.loopexit283.loopexit, %488
  %492 = phi i1 [ false, %488 ], [ true, %.loopexit283.loopexit ]
  %.pn222 = phi { ptr, i32 } [ %489, %488 ], [ %490, %.loopexit283.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %92) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %91) #6
  br i1 %492, label %.loopexit282, label %.preheader281.preheader

.preheader281.preheader:                          ; preds = %.loopexit283
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #6
  br label %.loopexit282

.loopexit282:                                     ; preds = %.preheader281.preheader, %.thread268, %.loopexit283
  %.pn222.pn273 = phi { ptr, i32 } [ %487, %.thread268 ], [ %.pn222, %.loopexit283 ], [ %.pn222, %.preheader281.preheader ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %90) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %89) #6
  br label %512

493:                                              ; preds = %482
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %93) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %494 unwind label %499

494:                                              ; preds = %493
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %94) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %95) #6
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %95, ptr noundef nonnull align 8 dereferenceable(16) %88, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.8)
          to label %495 unwind label %501

495:                                              ; preds = %494
  %496 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %95) #6
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %94, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 124, ptr noundef %496)
          to label %497 unwind label %503

497:                                              ; preds = %495
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %498 unwind label %505

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

499:                                              ; preds = %493
  %500 = landingpad { ptr, i32 }
          cleanup
  br label %509

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

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

505:                                              ; preds = %497
  %506 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #6
  br label %507

507:                                              ; preds = %505, %503
  %.pn225 = phi { ptr, i32 } [ %506, %505 ], [ %504, %503 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #6
  br label %508

508:                                              ; preds = %507, %501
  %.pn225.pn = phi { ptr, i32 } [ %.pn225, %507 ], [ %502, %501 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #6
  br label %509

509:                                              ; preds = %508, %499
  %.pn225.pn.pn = phi { ptr, i32 } [ %.pn225.pn, %508 ], [ %500, %499 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #6
  br label %512

510:                                              ; preds = %482, %498
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %88) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %96) #6
  call void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA1_cTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSJ_RKSB_RKSC_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %96, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.10, ptr noundef nonnull align 8 dereferenceable(32) @_Z11cout_outputB5cxx11, ptr noundef nonnull align 1 dereferenceable(1) @.str.11)
  %511 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %96)
  br i1 %511, label %527, label %513

512:                                              ; preds = %509, %.loopexit282
  %.pn225.pn.pn.pn = phi { ptr, i32 } [ %.pn225.pn.pn, %509 ], [ %.pn222.pn273, %.loopexit282 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %88) #6
  br label %578

513:                                              ; preds = %510
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %97) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %97)
          to label %514 unwind label %519

514:                                              ; preds = %513
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %98) #6
  %515 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %96)
          to label %516 unwind label %521

516:                                              ; preds = %514
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %98, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 125, ptr noundef %515)
          to label %517 unwind label %521

517:                                              ; preds = %516
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull align 8 dereferenceable(8) %97)
          to label %518 unwind label %523

518:                                              ; preds = %517
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #6
  br label %527

519:                                              ; preds = %513
  %520 = landingpad { ptr, i32 }
          cleanup
  br label %526

521:                                              ; preds = %516, %514
  %522 = landingpad { ptr, i32 }
          cleanup
  br label %525

523:                                              ; preds = %517
  %524 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #6
  br label %525

525:                                              ; preds = %523, %521
  %.pn230 = phi { ptr, i32 } [ %524, %523 ], [ %522, %521 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #6
  br label %526

526:                                              ; preds = %525, %519
  %.pn230.pn = phi { ptr, i32 } [ %.pn230, %525 ], [ %520, %519 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #6
  br label %578

527:                                              ; preds = %510, %518
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %99) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %100) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %101) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %102) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %101, ptr noundef nonnull @.str.37, ptr noundef nonnull align 1 dereferenceable(1) %102)
          to label %528 unwind label %.thread274

528:                                              ; preds = %527
  %529 = getelementptr inbounds i8, ptr %101, i64 32
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %103) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %529, ptr noundef nonnull @.str.38, ptr noundef nonnull align 1 dereferenceable(1) %103)
          to label %530 unwind label %538

530:                                              ; preds = %528
  %531 = invoke noundef zeroext i1 @_Z3runSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr nonnull %101, i64 2)
          to label %532 unwind label %.loopexit280.loopexit

532:                                              ; preds = %530
  %533 = xor i1 %531, true
  %534 = zext i1 %533 to i8
  store i8 %534, ptr %100, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNSt9enable_ifIXntsr3std14is_convertibleIS2_S0_EE5valueEvE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %99, ptr noundef nonnull align 1 dereferenceable(1) %100, ptr noundef null)
  %535 = getelementptr inbounds i8, ptr %101, i64 32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %535) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %103) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %102) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %101) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %100) #6
  %536 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %99)
  br i1 %536, label %560, label %543

.thread274:                                       ; preds = %527
  %537 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %102) #6
  br label %.loopexit

538:                                              ; preds = %528
  %539 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit280

.loopexit280.loopexit:                            ; preds = %530
  %540 = landingpad { ptr, i32 }
          cleanup
  %541 = getelementptr inbounds i8, ptr %101, i64 32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %541) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #6
  br label %.loopexit280

.loopexit280:                                     ; preds = %.loopexit280.loopexit, %538
  %.pn233 = phi { ptr, i32 } [ %539, %538 ], [ %540, %.loopexit280.loopexit ]
  %542 = phi i1 [ false, %538 ], [ true, %.loopexit280.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %103) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %102) #6
  br i1 %542, label %.loopexit, label %.preheader.preheader

.preheader.preheader:                             ; preds = %.loopexit280
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #6
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader.preheader, %.thread274, %.loopexit280
  %.pn233.pn279 = phi { ptr, i32 } [ %537, %.thread274 ], [ %.pn233, %.loopexit280 ], [ %.pn233, %.preheader.preheader ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %101) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %100) #6
  br label %562

543:                                              ; preds = %532
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %104) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %104)
          to label %544 unwind label %549

544:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %105) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %106) #6
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %106, ptr noundef nonnull align 8 dereferenceable(16) %99, ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.8)
          to label %545 unwind label %551

545:                                              ; preds = %544
  %546 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %106) #6
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %105, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 128, ptr noundef %546)
          to label %547 unwind label %553

547:                                              ; preds = %545
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef nonnull align 8 dereferenceable(8) %104)
          to label %548 unwind label %555

548:                                              ; preds = %547
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %106) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %104) #6
  br label %560

549:                                              ; preds = %543
  %550 = landingpad { ptr, i32 }
          cleanup
  br label %559

551:                                              ; preds = %544
  %552 = landingpad { ptr, i32 }
          cleanup
  br label %558

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

555:                                              ; preds = %547
  %556 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #6
  br label %557

557:                                              ; preds = %555, %553
  %.pn236 = phi { ptr, i32 } [ %556, %555 ], [ %554, %553 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #6
  br label %558

558:                                              ; preds = %557, %551
  %.pn236.pn = phi { ptr, i32 } [ %.pn236, %557 ], [ %552, %551 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %106) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #6
  br label %559

559:                                              ; preds = %558, %549
  %.pn236.pn.pn = phi { ptr, i32 } [ %.pn236.pn, %558 ], [ %550, %549 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %104) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %99) #6
  br label %562

560:                                              ; preds = %532, %548
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %99) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %99) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %107) #6
  call void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA1_cTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSJ_RKSB_RKSC_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %107, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.10, ptr noundef nonnull align 8 dereferenceable(32) @_Z11cout_outputB5cxx11, ptr noundef nonnull align 1 dereferenceable(1) @.str.11)
  %561 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %107)
  br i1 %561, label %577, label %563

562:                                              ; preds = %559, %.loopexit
  %.pn236.pn.pn.pn = phi { ptr, i32 } [ %.pn236.pn.pn, %559 ], [ %.pn233.pn279, %.loopexit ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %99) #6
  br label %578

563:                                              ; preds = %560
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %108) #6
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %108)
          to label %564 unwind label %569

564:                                              ; preds = %563
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %109) #6
  %565 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %107)
          to label %566 unwind label %571

566:                                              ; preds = %564
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %109, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 129, ptr noundef %565)
          to label %567 unwind label %571

567:                                              ; preds = %566
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull align 8 dereferenceable(8) %108)
          to label %568 unwind label %573

568:                                              ; preds = %567
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %109) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #6
  br label %577

569:                                              ; preds = %563
  %570 = landingpad { ptr, i32 }
          cleanup
  br label %576

571:                                              ; preds = %566, %564
  %572 = landingpad { ptr, i32 }
          cleanup
  br label %575

573:                                              ; preds = %567
  %574 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #6
  br label %575

575:                                              ; preds = %573, %571
  %.pn241 = phi { ptr, i32 } [ %574, %573 ], [ %572, %571 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %109) #6
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #6
  br label %576

576:                                              ; preds = %575, %569
  %.pn241.pn = phi { ptr, i32 } [ %.pn241, %575 ], [ %570, %569 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #6
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %107) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %107) #6
  br label %578

577:                                              ; preds = %560, %568
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %107) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %107) #6
  ret void

578:                                              ; preds = %576, %562, %526, %512, %476, %460, %444, %430, %395, %379, %363, %349, %314, %298, %282, %268, %233, %217, %201, %187, %152, %138
  %.pn241.pn.pn = phi { ptr, i32 } [ %.pn241.pn, %576 ], [ %.pn236.pn.pn.pn, %562 ], [ %.pn230.pn, %526 ], [ %.pn225.pn.pn.pn, %512 ], [ %.pn219.pn, %476 ], [ %.pn216.pn, %460 ], [ %.pn213.pn, %444 ], [ %.pn208.pn.pn.pn, %430 ], [ %.pn202.pn, %395 ], [ %.pn199.pn, %379 ], [ %.pn196.pn, %363 ], [ %.pn191.pn.pn.pn, %349 ], [ %.pn185.pn, %314 ], [ %.pn182.pn, %298 ], [ %.pn179.pn, %282 ], [ %.pn174.pn.pn.pn, %268 ], [ %.pn168.pn, %233 ], [ %.pn165.pn, %217 ], [ %.pn162.pn, %201 ], [ %.pn157.pn.pn.pn, %187 ], [ %.pn151.pn, %152 ], [ %.pn146.pn.pn.pn, %138 ]
  resume { ptr, i32 } %.pn241.pn.pn
}

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA1_cTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSJ_RKSB_RKSC_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSJ_RKSB_RKSC_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelper7CompareImmTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

attributes #0 = { 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 #1 = { 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 #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { "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 = { 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 #5 = { 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 #6 = { 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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopSimplifyPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass