; LLVM IR from dtecta/motion-toolkit :: test/moto/NumericalTests.ll (ZN21Numerical_Traits_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.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.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.testing::Message" = type { %"class.std::unique_ptr.2" }
%"class.std::unique_ptr.2" = type { %"struct.std::__uniq_ptr_data.3" }
%"struct.std::__uniq_ptr_data.3" = type { %"class.std::__uniq_ptr_impl.4" }
%"class.std::__uniq_ptr_impl.4" = type { %"class.std::tuple.5" }
%"class.std::tuple.5" = type { %"struct.std::_Tuple_impl.6" }
%"struct.std::_Tuple_impl.6" = type { %"struct.std::_Head_base.9" }
%"struct.std::_Head_base.9" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }
%"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.mt::ErrorTracer" = type { float, float }

@.str.3 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [49 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN21Numerical_Traits_Test8TestBodyEv(ptr noundef nonnull align 8 dereferenceable(16) %0) unnamed_addr #2 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 ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.testing::Message", align 8
  %8 = alloca %"class.testing::internal::AssertHelper", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.testing::AssertionResult", align 8
  %11 = alloca i8, align 1
  %12 = alloca %"class.testing::Message", align 8
  %13 = alloca %"class.testing::internal::AssertHelper", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.testing::AssertionResult", align 8
  %16 = alloca i8, align 1
  %17 = alloca %"class.testing::Message", align 8
  %18 = alloca %"class.testing::internal::AssertHelper", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.testing::AssertionResult", align 8
  %21 = alloca i8, align 1
  %22 = alloca %"class.testing::Message", align 8
  %23 = alloca %"class.testing::internal::AssertHelper", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.testing::AssertionResult", align 8
  %26 = alloca i8, align 1
  %27 = alloca %"class.testing::Message", align 8
  %28 = alloca %"class.testing::internal::AssertHelper", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.testing::AssertionResult", align 8
  %31 = alloca i8, align 1
  %32 = alloca %"class.testing::Message", align 8
  %33 = alloca %"class.testing::internal::AssertHelper", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.testing::AssertionResult", align 8
  %36 = alloca i8, align 1
  %37 = alloca %"class.testing::Message", align 8
  %38 = alloca %"class.testing::internal::AssertHelper", align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.testing::AssertionResult", align 8
  %41 = alloca i8, align 1
  %42 = alloca %"class.testing::Message", align 8
  %43 = alloca %"class.testing::internal::AssertHelper", align 8
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.testing::AssertionResult", align 8
  %46 = alloca i8, align 1
  %47 = alloca %"class.testing::Message", align 8
  %48 = alloca %"class.testing::internal::AssertHelper", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.testing::AssertionResult", align 8
  %51 = alloca i8, align 1
  %52 = alloca %"class.testing::Message", align 8
  %53 = alloca %"class.testing::internal::AssertHelper", align 8
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.testing::AssertionResult", align 8
  %56 = alloca i8, align 1
  %57 = alloca %"class.testing::Message", align 8
  %58 = alloca %"class.testing::internal::AssertHelper", align 8
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.testing::AssertionResult", align 8
  %61 = alloca i8, align 1
  %62 = alloca %"class.testing::Message", align 8
  %63 = alloca %"class.testing::internal::AssertHelper", align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.testing::AssertionResult", align 8
  %66 = alloca i8, align 1
  %67 = alloca %"class.testing::Message", align 8
  %68 = alloca %"class.testing::internal::AssertHelper", align 8
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.testing::AssertionResult", align 8
  %71 = alloca i8, align 1
  %72 = alloca %"class.testing::Message", align 8
  %73 = alloca %"class.testing::internal::AssertHelper", align 8
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca %"class.testing::AssertionResult", align 8
  %76 = alloca i8, align 1
  %77 = alloca %"class.mt::ErrorTracer", align 4
  %78 = alloca %"class.testing::Message", align 8
  %79 = alloca %"class.testing::internal::AssertHelper", align 8
  %80 = alloca %"class.std::__cxx11::basic_string", align 8
  %81 = alloca %"class.testing::AssertionResult", align 8
  %82 = alloca i8, align 1
  %83 = alloca %"class.mt::ErrorTracer", align 4
  %84 = alloca %"class.testing::Message", align 8
  %85 = alloca %"class.testing::internal::AssertHelper", align 8
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca %"class.testing::AssertionResult", align 8
  %88 = alloca i8, align 1
  %89 = alloca %"class.mt::ErrorTracer", align 4
  %90 = alloca %"class.testing::Message", align 8
  %91 = alloca %"class.testing::internal::AssertHelper", align 8
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca %"class.testing::AssertionResult", align 8
  %94 = alloca i8, align 1
  %95 = alloca %"class.mt::ErrorTracer", align 4
  %96 = alloca %"class.testing::Message", align 8
  %97 = alloca %"class.testing::internal::AssertHelper", align 8
  %98 = alloca %"class.std::__cxx11::basic_string", align 8
  %99 = alloca %"class.testing::AssertionResult", align 8
  %100 = alloca i8, align 1
  %101 = alloca %"class.mt::ErrorTracer", align 4
  %102 = alloca %"class.testing::Message", align 8
  %103 = alloca %"class.testing::internal::AssertHelper", align 8
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca %"class.testing::AssertionResult", align 8
  %106 = alloca i8, align 1
  %107 = alloca %"class.mt::ErrorTracer", align 4
  %108 = alloca %"class.testing::Message", align 8
  %109 = alloca %"class.testing::internal::AssertHelper", align 8
  %110 = alloca %"class.std::__cxx11::basic_string", align 8
  %111 = alloca %"class.testing::AssertionResult", align 8
  %112 = alloca i8, align 1
  %113 = alloca %"class.mt::ErrorTracer", align 4
  %114 = alloca %"class.testing::Message", align 8
  %115 = alloca %"class.testing::internal::AssertHelper", align 8
  %116 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %117 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %3) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %4) #7
  %118 = call noundef float @_ZNSt14numeric_limitsIfE9quiet_NaNEv() #7
  %119 = call noundef zeroext i1 @_ZSt5isnanf(float noundef %118)
  %120 = zext i1 %119 to i8
  store i8 %120, ptr %4, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 1 dereferenceable(1) %4, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr %4) #7
  %121 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %122 unwind label %124

122:                                              ; preds = %1
  br i1 %121, label %123, label %128

123:                                              ; preds = %122
  br label %153

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

128:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %129 unwind label %134

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

130:                                              ; preds = %129
  %131 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef 1, ptr noundef @.str.3, i32 noundef 21, ptr noundef %131)
          to label %132 unwind label %142

132:                                              ; preds = %130
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %133 unwind label %146

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

134:                                              ; preds = %128
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %5, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %6, align 4
  br label %152

138:                                              ; preds = %129
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %5, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %6, align 4
  br label %151

142:                                              ; preds = %130
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %5, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %6, align 4
  br label %150

146:                                              ; preds = %132
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %5, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  br label %150

150:                                              ; preds = %146, %142
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %151

151:                                              ; preds = %150, %138
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #7
  br label %152

152:                                              ; preds = %151, %134
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  br label %161

153:                                              ; preds = %133, %123
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #7
  %154 = call noundef float @_ZNSt14numeric_limitsIfE8infinityEv() #7
  %155 = call noundef zeroext i1 @_ZSt5isnanf(float noundef %154)
  %156 = xor i1 %155, true
  %157 = zext i1 %156 to i8
  store i8 %157, ptr %11, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 1 dereferenceable(1) %11, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #7
  %158 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %159 unwind label %162

159:                                              ; preds = %153
  br i1 %158, label %160, label %166

160:                                              ; preds = %159
  br label %191

161:                                              ; preds = %152, %124
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #7
  br label %914

162:                                              ; preds = %153
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %5, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %6, align 4
  br label %199

166:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %167 unwind label %172

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

168:                                              ; preds = %167
  %169 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %13, i32 noundef 1, ptr noundef @.str.3, i32 noundef 22, ptr noundef %169)
          to label %170 unwind label %180

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

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

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

176:                                              ; preds = %167
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %5, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %6, align 4
  br label %189

180:                                              ; preds = %168
  %181 = landingpad { ptr, i32 }
          cleanup
  %182 = extractvalue { ptr, i32 } %181, 0
  store ptr %182, ptr %5, align 8
  %183 = extractvalue { ptr, i32 } %181, 1
  store i32 %183, ptr %6, align 4
  br label %188

184:                                              ; preds = %170
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %5, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  br label %188

188:                                              ; preds = %184, %180
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  br label %189

189:                                              ; preds = %188, %176
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  br label %190

190:                                              ; preds = %189, %172
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  br label %199

191:                                              ; preds = %171, %160
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #7
  %192 = call noundef float @_ZNSt14numeric_limitsIfE9quiet_NaNEv() #7
  %193 = call noundef zeroext i1 @_ZSt5isinff(float noundef %192)
  %194 = xor i1 %193, true
  %195 = zext i1 %194 to i8
  store i8 %195, ptr %16, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 1 dereferenceable(1) %16, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  %196 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %197 unwind label %200

197:                                              ; preds = %191
  br i1 %196, label %198, label %204

198:                                              ; preds = %197
  br label %229

199:                                              ; preds = %190, %162
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #7
  br label %914

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

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

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

206:                                              ; preds = %205
  %207 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %18, i32 noundef 1, ptr noundef @.str.3, i32 noundef 24, ptr noundef %207)
          to label %208 unwind label %218

208:                                              ; preds = %206
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %209 unwind label %222

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

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

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

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

222:                                              ; preds = %208
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %5, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #7
  br label %226

226:                                              ; preds = %222, %218
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %227

227:                                              ; preds = %226, %214
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  br label %228

228:                                              ; preds = %227, %210
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  br label %236

229:                                              ; preds = %209, %198
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #7
  %230 = call noundef float @_ZNSt14numeric_limitsIfE8infinityEv() #7
  %231 = call noundef zeroext i1 @_ZSt5isinff(float noundef %230)
  %232 = zext i1 %231 to i8
  store i8 %232, ptr %21, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 1 dereferenceable(1) %21, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #7
  %233 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %234 unwind label %237

234:                                              ; preds = %229
  br i1 %233, label %235, label %241

235:                                              ; preds = %234
  br label %266

236:                                              ; preds = %228, %200
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #7
  br label %914

237:                                              ; preds = %229
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %5, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %6, align 4
  br label %274

241:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %242 unwind label %247

242:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef @.str.9, ptr noundef @.str.5, ptr noundef @.str.6)
          to label %243 unwind label %251

243:                                              ; preds = %242
  %244 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %23, i32 noundef 1, ptr noundef @.str.3, i32 noundef 25, ptr noundef %244)
          to label %245 unwind label %255

245:                                              ; preds = %243
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %246 unwind label %259

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

247:                                              ; preds = %241
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %5, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %6, align 4
  br label %265

251:                                              ; preds = %242
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %5, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %6, align 4
  br label %264

255:                                              ; preds = %243
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %5, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %6, align 4
  br label %263

259:                                              ; preds = %245
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %5, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  br label %263

263:                                              ; preds = %259, %255
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  br label %264

264:                                              ; preds = %263, %251
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  br label %265

265:                                              ; preds = %264, %247
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %274

266:                                              ; preds = %246, %235
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #7
  %267 = call noundef float @_ZNSt14numeric_limitsIfE9quiet_NaNEv() #7
  %268 = call noundef zeroext i1 @_ZSt8isfinitef(float noundef %267)
  %269 = xor i1 %268, true
  %270 = zext i1 %269 to i8
  store i8 %270, ptr %26, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 1 dereferenceable(1) %26, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #7
  %271 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %25)
          to label %272 unwind label %275

272:                                              ; preds = %266
  br i1 %271, label %273, label %279

273:                                              ; preds = %272
  br label %304

274:                                              ; preds = %265, %237
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #7
  br label %914

275:                                              ; preds = %266
  %276 = landingpad { ptr, i32 }
          cleanup
  %277 = extractvalue { ptr, i32 } %276, 0
  store ptr %277, ptr %5, align 8
  %278 = extractvalue { ptr, i32 } %276, 1
  store i32 %278, ptr %6, align 4
  br label %312

279:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %280 unwind label %285

280:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef @.str.10, ptr noundef @.str.6, ptr noundef @.str.5)
          to label %281 unwind label %289

281:                                              ; preds = %280
  %282 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %28, i32 noundef 1, ptr noundef @.str.3, i32 noundef 27, ptr noundef %282)
          to label %283 unwind label %293

283:                                              ; preds = %281
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %284 unwind label %297

284:                                              ; preds = %283
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %304

285:                                              ; preds = %279
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %5, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %6, align 4
  br label %303

289:                                              ; preds = %280
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %5, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %6, align 4
  br label %302

293:                                              ; preds = %281
  %294 = landingpad { ptr, i32 }
          cleanup
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %5, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %6, align 4
  br label %301

297:                                              ; preds = %283
  %298 = landingpad { ptr, i32 }
          cleanup
  %299 = extractvalue { ptr, i32 } %298, 0
  store ptr %299, ptr %5, align 8
  %300 = extractvalue { ptr, i32 } %298, 1
  store i32 %300, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  br label %301

301:                                              ; preds = %297, %293
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  br label %302

302:                                              ; preds = %301, %289
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  br label %303

303:                                              ; preds = %302, %285
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %312

304:                                              ; preds = %284, %273
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #7
  %305 = call noundef float @_ZNSt14numeric_limitsIfE8infinityEv() #7
  %306 = call noundef zeroext i1 @_ZSt8isfinitef(float noundef %305)
  %307 = xor i1 %306, true
  %308 = zext i1 %307 to i8
  store i8 %308, ptr %31, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 1 dereferenceable(1) %31, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #7
  %309 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %310 unwind label %313

310:                                              ; preds = %304
  br i1 %309, label %311, label %317

311:                                              ; preds = %310
  br label %342

312:                                              ; preds = %303, %275
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #7
  br label %914

313:                                              ; preds = %304
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %5, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %6, align 4
  br label %349

317:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32)
          to label %318 unwind label %323

318:                                              ; preds = %317
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef @.str.11, ptr noundef @.str.6, ptr noundef @.str.5)
          to label %319 unwind label %327

319:                                              ; preds = %318
  %320 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %33, i32 noundef 1, ptr noundef @.str.3, i32 noundef 28, ptr noundef %320)
          to label %321 unwind label %331

321:                                              ; preds = %319
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %32)
          to label %322 unwind label %335

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

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

327:                                              ; preds = %318
  %328 = landingpad { ptr, i32 }
          cleanup
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %5, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %6, align 4
  br label %340

331:                                              ; preds = %319
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %5, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %6, align 4
  br label %339

335:                                              ; preds = %321
  %336 = landingpad { ptr, i32 }
          cleanup
  %337 = extractvalue { ptr, i32 } %336, 0
  store ptr %337, ptr %5, align 8
  %338 = extractvalue { ptr, i32 } %336, 1
  store i32 %338, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #7
  br label %339

339:                                              ; preds = %335, %331
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  br label %340

340:                                              ; preds = %339, %327
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  br label %341

341:                                              ; preds = %340, %323
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  br label %349

342:                                              ; preds = %322, %311
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #7
  %343 = call noundef float @_ZNSt14numeric_limitsIfE3maxEv() #7
  %344 = call noundef zeroext i1 @_ZSt8isfinitef(float noundef %343)
  %345 = zext i1 %344 to i8
  store i8 %345, ptr %36, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 1 dereferenceable(1) %36, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #7
  %346 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %35)
          to label %347 unwind label %350

347:                                              ; preds = %342
  br i1 %346, label %348, label %354

348:                                              ; preds = %347
  br label %379

349:                                              ; preds = %341, %313
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #7
  br label %914

350:                                              ; preds = %342
  %351 = landingpad { ptr, i32 }
          cleanup
  %352 = extractvalue { ptr, i32 } %351, 0
  store ptr %352, ptr %5, align 8
  %353 = extractvalue { ptr, i32 } %351, 1
  store i32 %353, ptr %6, align 4
  br label %386

354:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %355 unwind label %360

355:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %39, ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef @.str.12, ptr noundef @.str.5, ptr noundef @.str.6)
          to label %356 unwind label %364

356:                                              ; preds = %355
  %357 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %38, i32 noundef 1, ptr noundef @.str.3, i32 noundef 29, ptr noundef %357)
          to label %358 unwind label %368

358:                                              ; preds = %356
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %359 unwind label %372

359:                                              ; preds = %358
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  br label %379

360:                                              ; preds = %354
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %5, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %6, align 4
  br label %378

364:                                              ; preds = %355
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %5, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %6, align 4
  br label %377

368:                                              ; preds = %356
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %5, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %6, align 4
  br label %376

372:                                              ; preds = %358
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %5, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #7
  br label %376

376:                                              ; preds = %372, %368
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  br label %377

377:                                              ; preds = %376, %364
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  br label %378

378:                                              ; preds = %377, %360
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  br label %386

379:                                              ; preds = %359, %348
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #7
  %380 = call noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #7
  %381 = call noundef zeroext i1 @_ZSt5isnand(double noundef %380)
  %382 = zext i1 %381 to i8
  store i8 %382, ptr %41, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef nonnull align 1 dereferenceable(1) %41, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #7
  %383 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %40)
          to label %384 unwind label %387

384:                                              ; preds = %379
  br i1 %383, label %385, label %391

385:                                              ; preds = %384
  br label %416

386:                                              ; preds = %378, %350
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #7
  br label %914

387:                                              ; preds = %379
  %388 = landingpad { ptr, i32 }
          cleanup
  %389 = extractvalue { ptr, i32 } %388, 0
  store ptr %389, ptr %5, align 8
  %390 = extractvalue { ptr, i32 } %388, 1
  store i32 %390, ptr %6, align 4
  br label %424

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

392:                                              ; preds = %391
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %44, ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef @.str.13, ptr noundef @.str.5, ptr noundef @.str.6)
          to label %393 unwind label %401

393:                                              ; preds = %392
  %394 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %43, i32 noundef 1, ptr noundef @.str.3, i32 noundef 31, ptr noundef %394)
          to label %395 unwind label %405

395:                                              ; preds = %393
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %396 unwind label %409

396:                                              ; preds = %395
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  br label %416

397:                                              ; preds = %391
  %398 = landingpad { ptr, i32 }
          cleanup
  %399 = extractvalue { ptr, i32 } %398, 0
  store ptr %399, ptr %5, align 8
  %400 = extractvalue { ptr, i32 } %398, 1
  store i32 %400, ptr %6, align 4
  br label %415

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

405:                                              ; preds = %393
  %406 = landingpad { ptr, i32 }
          cleanup
  %407 = extractvalue { ptr, i32 } %406, 0
  store ptr %407, ptr %5, align 8
  %408 = extractvalue { ptr, i32 } %406, 1
  store i32 %408, ptr %6, align 4
  br label %413

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

413:                                              ; preds = %409, %405
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  br label %414

414:                                              ; preds = %413, %401
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #7
  br label %415

415:                                              ; preds = %414, %397
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  br label %424

416:                                              ; preds = %396, %385
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #7
  %417 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %418 = call noundef zeroext i1 @_ZSt5isnand(double noundef %417)
  %419 = xor i1 %418, true
  %420 = zext i1 %419 to i8
  store i8 %420, ptr %46, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #7
  %421 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %45)
          to label %422 unwind label %425

422:                                              ; preds = %416
  br i1 %421, label %423, label %429

423:                                              ; preds = %422
  br label %454

424:                                              ; preds = %415, %387
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #7
  br label %914

425:                                              ; preds = %416
  %426 = landingpad { ptr, i32 }
          cleanup
  %427 = extractvalue { ptr, i32 } %426, 0
  store ptr %427, ptr %5, align 8
  %428 = extractvalue { ptr, i32 } %426, 1
  store i32 %428, ptr %6, align 4
  br label %462

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

430:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %49, ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef @.str.14, ptr noundef @.str.6, ptr noundef @.str.5)
          to label %431 unwind label %439

431:                                              ; preds = %430
  %432 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %48, i32 noundef 1, ptr noundef @.str.3, i32 noundef 32, ptr noundef %432)
          to label %433 unwind label %443

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

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

435:                                              ; preds = %429
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %5, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %6, align 4
  br label %453

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

443:                                              ; preds = %431
  %444 = landingpad { ptr, i32 }
          cleanup
  %445 = extractvalue { ptr, i32 } %444, 0
  store ptr %445, ptr %5, align 8
  %446 = extractvalue { ptr, i32 } %444, 1
  store i32 %446, ptr %6, align 4
  br label %451

447:                                              ; preds = %433
  %448 = landingpad { ptr, i32 }
          cleanup
  %449 = extractvalue { ptr, i32 } %448, 0
  store ptr %449, ptr %5, align 8
  %450 = extractvalue { ptr, i32 } %448, 1
  store i32 %450, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #7
  br label %451

451:                                              ; preds = %447, %443
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  br label %452

452:                                              ; preds = %451, %439
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #7
  br label %453

453:                                              ; preds = %452, %435
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br label %462

454:                                              ; preds = %434, %423
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #7
  %455 = call noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #7
  %456 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %455)
  %457 = xor i1 %456, true
  %458 = zext i1 %457 to i8
  store i8 %458, ptr %51, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull align 1 dereferenceable(1) %51, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  %459 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %50)
          to label %460 unwind label %463

460:                                              ; preds = %454
  br i1 %459, label %461, label %467

461:                                              ; preds = %460
  br label %492

462:                                              ; preds = %453, %425
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #7
  br label %914

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

467:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52)
          to label %468 unwind label %473

468:                                              ; preds = %467
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %54, ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef @.str.15, ptr noundef @.str.6, ptr noundef @.str.5)
          to label %469 unwind label %477

469:                                              ; preds = %468
  %470 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %53, i32 noundef 1, ptr noundef @.str.3, i32 noundef 34, ptr noundef %470)
          to label %471 unwind label %481

471:                                              ; preds = %469
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %52)
          to label %472 unwind label %485

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

473:                                              ; preds = %467
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %5, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %6, align 4
  br label %491

477:                                              ; preds = %468
  %478 = landingpad { ptr, i32 }
          cleanup
  %479 = extractvalue { ptr, i32 } %478, 0
  store ptr %479, ptr %5, align 8
  %480 = extractvalue { ptr, i32 } %478, 1
  store i32 %480, ptr %6, align 4
  br label %490

481:                                              ; preds = %469
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %5, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %6, align 4
  br label %489

485:                                              ; preds = %471
  %486 = landingpad { ptr, i32 }
          cleanup
  %487 = extractvalue { ptr, i32 } %486, 0
  store ptr %487, ptr %5, align 8
  %488 = extractvalue { ptr, i32 } %486, 1
  store i32 %488, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #7
  br label %489

489:                                              ; preds = %485, %481
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  br label %490

490:                                              ; preds = %489, %477
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #7
  br label %491

491:                                              ; preds = %490, %473
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %499

492:                                              ; preds = %472, %461
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #7
  %493 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %494 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %493)
  %495 = zext i1 %494 to i8
  store i8 %495, ptr %56, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %55, ptr noundef nonnull align 1 dereferenceable(1) %56, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #7
  %496 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %55)
          to label %497 unwind label %500

497:                                              ; preds = %492
  br i1 %496, label %498, label %504

498:                                              ; preds = %497
  br label %529

499:                                              ; preds = %491, %463
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #7
  br label %914

500:                                              ; preds = %492
  %501 = landingpad { ptr, i32 }
          cleanup
  %502 = extractvalue { ptr, i32 } %501, 0
  store ptr %502, ptr %5, align 8
  %503 = extractvalue { ptr, i32 } %501, 1
  store i32 %503, ptr %6, align 4
  br label %537

504:                                              ; preds = %497
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %505 unwind label %510

505:                                              ; preds = %504
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %59, ptr noundef nonnull align 8 dereferenceable(16) %55, ptr noundef @.str.16, ptr noundef @.str.5, ptr noundef @.str.6)
          to label %506 unwind label %514

506:                                              ; preds = %505
  %507 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %58, i32 noundef 1, ptr noundef @.str.3, i32 noundef 35, ptr noundef %507)
          to label %508 unwind label %518

508:                                              ; preds = %506
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %509 unwind label %522

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

510:                                              ; preds = %504
  %511 = landingpad { ptr, i32 }
          cleanup
  %512 = extractvalue { ptr, i32 } %511, 0
  store ptr %512, ptr %5, align 8
  %513 = extractvalue { ptr, i32 } %511, 1
  store i32 %513, ptr %6, align 4
  br label %528

514:                                              ; preds = %505
  %515 = landingpad { ptr, i32 }
          cleanup
  %516 = extractvalue { ptr, i32 } %515, 0
  store ptr %516, ptr %5, align 8
  %517 = extractvalue { ptr, i32 } %515, 1
  store i32 %517, ptr %6, align 4
  br label %527

518:                                              ; preds = %506
  %519 = landingpad { ptr, i32 }
          cleanup
  %520 = extractvalue { ptr, i32 } %519, 0
  store ptr %520, ptr %5, align 8
  %521 = extractvalue { ptr, i32 } %519, 1
  store i32 %521, ptr %6, align 4
  br label %526

522:                                              ; preds = %508
  %523 = landingpad { ptr, i32 }
          cleanup
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %5, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #7
  br label %526

526:                                              ; preds = %522, %518
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  br label %527

527:                                              ; preds = %526, %514
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #7
  br label %528

528:                                              ; preds = %527, %510
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  br label %537

529:                                              ; preds = %509, %498
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #7
  %530 = call noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #7
  %531 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %530)
  %532 = xor i1 %531, true
  %533 = zext i1 %532 to i8
  store i8 %533, ptr %61, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %60, ptr noundef nonnull align 1 dereferenceable(1) %61, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #7
  %534 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %60)
          to label %535 unwind label %538

535:                                              ; preds = %529
  br i1 %534, label %536, label %542

536:                                              ; preds = %535
  br label %567

537:                                              ; preds = %528, %500
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #7
  br label %914

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

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

543:                                              ; preds = %542
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %64) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %64, ptr noundef nonnull align 8 dereferenceable(16) %60, ptr noundef @.str.17, ptr noundef @.str.6, ptr noundef @.str.5)
          to label %544 unwind label %552

544:                                              ; preds = %543
  %545 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %63, i32 noundef 1, ptr noundef @.str.3, i32 noundef 37, ptr noundef %545)
          to label %546 unwind label %556

546:                                              ; preds = %544
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %62)
          to label %547 unwind label %560

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

548:                                              ; preds = %542
  %549 = landingpad { ptr, i32 }
          cleanup
  %550 = extractvalue { ptr, i32 } %549, 0
  store ptr %550, ptr %5, align 8
  %551 = extractvalue { ptr, i32 } %549, 1
  store i32 %551, ptr %6, align 4
  br label %566

552:                                              ; preds = %543
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %5, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %6, align 4
  br label %565

556:                                              ; preds = %544
  %557 = landingpad { ptr, i32 }
          cleanup
  %558 = extractvalue { ptr, i32 } %557, 0
  store ptr %558, ptr %5, align 8
  %559 = extractvalue { ptr, i32 } %557, 1
  store i32 %559, ptr %6, align 4
  br label %564

560:                                              ; preds = %546
  %561 = landingpad { ptr, i32 }
          cleanup
  %562 = extractvalue { ptr, i32 } %561, 0
  store ptr %562, ptr %5, align 8
  %563 = extractvalue { ptr, i32 } %561, 1
  store i32 %563, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #7
  br label %564

564:                                              ; preds = %560, %556
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  br label %565

565:                                              ; preds = %564, %552
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #7
  br label %566

566:                                              ; preds = %565, %548
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  br label %575

567:                                              ; preds = %547, %536
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #7
  %568 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %569 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %568)
  %570 = xor i1 %569, true
  %571 = zext i1 %570 to i8
  store i8 %571, ptr %66, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef nonnull align 1 dereferenceable(1) %66, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #7
  %572 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %65)
          to label %573 unwind label %576

573:                                              ; preds = %567
  br i1 %572, label %574, label %580

574:                                              ; preds = %573
  br label %605

575:                                              ; preds = %566, %538
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #7
  br label %914

576:                                              ; preds = %567
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %5, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %6, align 4
  br label %612

580:                                              ; preds = %573
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %581 unwind label %586

581:                                              ; preds = %580
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %69, ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef @.str.18, ptr noundef @.str.6, ptr noundef @.str.5)
          to label %582 unwind label %590

582:                                              ; preds = %581
  %583 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %69) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %68, i32 noundef 1, ptr noundef @.str.3, i32 noundef 38, ptr noundef %583)
          to label %584 unwind label %594

584:                                              ; preds = %582
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %585 unwind label %598

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

586:                                              ; preds = %580
  %587 = landingpad { ptr, i32 }
          cleanup
  %588 = extractvalue { ptr, i32 } %587, 0
  store ptr %588, ptr %5, align 8
  %589 = extractvalue { ptr, i32 } %587, 1
  store i32 %589, ptr %6, align 4
  br label %604

590:                                              ; preds = %581
  %591 = landingpad { ptr, i32 }
          cleanup
  %592 = extractvalue { ptr, i32 } %591, 0
  store ptr %592, ptr %5, align 8
  %593 = extractvalue { ptr, i32 } %591, 1
  store i32 %593, ptr %6, align 4
  br label %603

594:                                              ; preds = %582
  %595 = landingpad { ptr, i32 }
          cleanup
  %596 = extractvalue { ptr, i32 } %595, 0
  store ptr %596, ptr %5, align 8
  %597 = extractvalue { ptr, i32 } %595, 1
  store i32 %597, ptr %6, align 4
  br label %602

598:                                              ; preds = %584
  %599 = landingpad { ptr, i32 }
          cleanup
  %600 = extractvalue { ptr, i32 } %599, 0
  store ptr %600, ptr %5, align 8
  %601 = extractvalue { ptr, i32 } %599, 1
  store i32 %601, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #7
  br label %602

602:                                              ; preds = %598, %594
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #7
  br label %603

603:                                              ; preds = %602, %590
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #7
  br label %604

604:                                              ; preds = %603, %586
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  br label %612

605:                                              ; preds = %585, %574
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #7
  %606 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #7
  %607 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %606)
  %608 = zext i1 %607 to i8
  store i8 %608, ptr %71, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %70, ptr noundef nonnull align 1 dereferenceable(1) %71, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #7
  %609 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %70)
          to label %610 unwind label %613

610:                                              ; preds = %605
  br i1 %609, label %611, label %617

611:                                              ; preds = %610
  br label %642

612:                                              ; preds = %604, %576
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #7
  br label %914

613:                                              ; preds = %605
  %614 = landingpad { ptr, i32 }
          cleanup
  %615 = extractvalue { ptr, i32 } %614, 0
  store ptr %615, ptr %5, align 8
  %616 = extractvalue { ptr, i32 } %614, 1
  store i32 %616, ptr %6, align 4
  br label %650

617:                                              ; preds = %610
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %618 unwind label %623

618:                                              ; preds = %617
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %74) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %74, ptr noundef nonnull align 8 dereferenceable(16) %70, ptr noundef @.str.19, ptr noundef @.str.5, ptr noundef @.str.6)
          to label %619 unwind label %627

619:                                              ; preds = %618
  %620 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %74) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %73, i32 noundef 1, ptr noundef @.str.3, i32 noundef 39, ptr noundef %620)
          to label %621 unwind label %631

621:                                              ; preds = %619
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %622 unwind label %635

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

623:                                              ; preds = %617
  %624 = landingpad { ptr, i32 }
          cleanup
  %625 = extractvalue { ptr, i32 } %624, 0
  store ptr %625, ptr %5, align 8
  %626 = extractvalue { ptr, i32 } %624, 1
  store i32 %626, ptr %6, align 4
  br label %641

627:                                              ; preds = %618
  %628 = landingpad { ptr, i32 }
          cleanup
  %629 = extractvalue { ptr, i32 } %628, 0
  store ptr %629, ptr %5, align 8
  %630 = extractvalue { ptr, i32 } %628, 1
  store i32 %630, ptr %6, align 4
  br label %640

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

635:                                              ; preds = %621
  %636 = landingpad { ptr, i32 }
          cleanup
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %5, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  br label %639

639:                                              ; preds = %635, %631
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #7
  br label %640

640:                                              ; preds = %639, %627
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #7
  br label %641

641:                                              ; preds = %640, %623
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  br label %650

642:                                              ; preds = %622, %611
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %75) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #7
  %643 = call <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE9quiet_NaNEv()
  store <2 x float> %643, ptr %77, align 4
  %644 = call noundef float @_ZNK2mt11ErrorTracerIfEcvfEv(ptr noundef nonnull align 4 dereferenceable(8) %77)
  %645 = call noundef zeroext i1 @_ZSt5isnanf(float noundef %644)
  %646 = zext i1 %645 to i8
  store i8 %646, ptr %76, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef nonnull align 1 dereferenceable(1) %76, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #7
  %647 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %75)
          to label %648 unwind label %651

648:                                              ; preds = %642
  br i1 %647, label %649, label %655

649:                                              ; preds = %648
  br label %680

650:                                              ; preds = %641, %613
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #7
  br label %914

651:                                              ; preds = %642
  %652 = landingpad { ptr, i32 }
          cleanup
  %653 = extractvalue { ptr, i32 } %652, 0
  store ptr %653, ptr %5, align 8
  %654 = extractvalue { ptr, i32 } %652, 1
  store i32 %654, ptr %6, align 4
  br label %689

655:                                              ; preds = %648
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %78)
          to label %656 unwind label %661

656:                                              ; preds = %655
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %80) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %80, ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef @.str.20, ptr noundef @.str.5, ptr noundef @.str.6)
          to label %657 unwind label %665

657:                                              ; preds = %656
  %658 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %80) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %79, i32 noundef 1, ptr noundef @.str.3, i32 noundef 41, ptr noundef %658)
          to label %659 unwind label %669

659:                                              ; preds = %657
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %78)
          to label %660 unwind label %673

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

661:                                              ; preds = %655
  %662 = landingpad { ptr, i32 }
          cleanup
  %663 = extractvalue { ptr, i32 } %662, 0
  store ptr %663, ptr %5, align 8
  %664 = extractvalue { ptr, i32 } %662, 1
  store i32 %664, ptr %6, align 4
  br label %679

665:                                              ; preds = %656
  %666 = landingpad { ptr, i32 }
          cleanup
  %667 = extractvalue { ptr, i32 } %666, 0
  store ptr %667, ptr %5, align 8
  %668 = extractvalue { ptr, i32 } %666, 1
  store i32 %668, ptr %6, align 4
  br label %678

669:                                              ; preds = %657
  %670 = landingpad { ptr, i32 }
          cleanup
  %671 = extractvalue { ptr, i32 } %670, 0
  store ptr %671, ptr %5, align 8
  %672 = extractvalue { ptr, i32 } %670, 1
  store i32 %672, ptr %6, align 4
  br label %677

673:                                              ; preds = %659
  %674 = landingpad { ptr, i32 }
          cleanup
  %675 = extractvalue { ptr, i32 } %674, 0
  store ptr %675, ptr %5, align 8
  %676 = extractvalue { ptr, i32 } %674, 1
  store i32 %676, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #7
  br label %677

677:                                              ; preds = %673, %669
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #7
  br label %678

678:                                              ; preds = %677, %665
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #7
  br label %679

679:                                              ; preds = %678, %661
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #7
  br label %689

680:                                              ; preds = %660, %649
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %81) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #7
  %681 = call <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE8infinityEv()
  store <2 x float> %681, ptr %83, align 4
  %682 = call noundef float @_ZNK2mt11ErrorTracerIfEcvfEv(ptr noundef nonnull align 4 dereferenceable(8) %83)
  %683 = call noundef zeroext i1 @_ZSt5isnanf(float noundef %682)
  %684 = xor i1 %683, true
  %685 = zext i1 %684 to i8
  store i8 %685, ptr %82, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %81, ptr noundef nonnull align 1 dereferenceable(1) %82, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #7
  %686 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %81)
          to label %687 unwind label %690

687:                                              ; preds = %680
  br i1 %686, label %688, label %694

688:                                              ; preds = %687
  br label %719

689:                                              ; preds = %679, %651
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #7
  br label %914

690:                                              ; preds = %680
  %691 = landingpad { ptr, i32 }
          cleanup
  %692 = extractvalue { ptr, i32 } %691, 0
  store ptr %692, ptr %5, align 8
  %693 = extractvalue { ptr, i32 } %691, 1
  store i32 %693, ptr %6, align 4
  br label %728

694:                                              ; preds = %687
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84)
          to label %695 unwind label %700

695:                                              ; preds = %694
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %86) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %86, ptr noundef nonnull align 8 dereferenceable(16) %81, ptr noundef @.str.21, ptr noundef @.str.6, ptr noundef @.str.5)
          to label %696 unwind label %704

696:                                              ; preds = %695
  %697 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %86) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %85, i32 noundef 1, ptr noundef @.str.3, i32 noundef 42, ptr noundef %697)
          to label %698 unwind label %708

698:                                              ; preds = %696
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %84)
          to label %699 unwind label %712

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

700:                                              ; preds = %694
  %701 = landingpad { ptr, i32 }
          cleanup
  %702 = extractvalue { ptr, i32 } %701, 0
  store ptr %702, ptr %5, align 8
  %703 = extractvalue { ptr, i32 } %701, 1
  store i32 %703, ptr %6, align 4
  br label %718

704:                                              ; preds = %695
  %705 = landingpad { ptr, i32 }
          cleanup
  %706 = extractvalue { ptr, i32 } %705, 0
  store ptr %706, ptr %5, align 8
  %707 = extractvalue { ptr, i32 } %705, 1
  store i32 %707, ptr %6, align 4
  br label %717

708:                                              ; preds = %696
  %709 = landingpad { ptr, i32 }
          cleanup
  %710 = extractvalue { ptr, i32 } %709, 0
  store ptr %710, ptr %5, align 8
  %711 = extractvalue { ptr, i32 } %709, 1
  store i32 %711, ptr %6, align 4
  br label %716

712:                                              ; preds = %698
  %713 = landingpad { ptr, i32 }
          cleanup
  %714 = extractvalue { ptr, i32 } %713, 0
  store ptr %714, ptr %5, align 8
  %715 = extractvalue { ptr, i32 } %713, 1
  store i32 %715, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #7
  br label %716

716:                                              ; preds = %712, %708
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #7
  br label %717

717:                                              ; preds = %716, %704
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #7
  br label %718

718:                                              ; preds = %717, %700
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #7
  br label %728

719:                                              ; preds = %699, %688
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %87) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #7
  %720 = call <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE9quiet_NaNEv()
  store <2 x float> %720, ptr %89, align 4
  %721 = call noundef float @_ZNK2mt11ErrorTracerIfEcvfEv(ptr noundef nonnull align 4 dereferenceable(8) %89)
  %722 = call noundef zeroext i1 @_ZSt5isinff(float noundef %721)
  %723 = xor i1 %722, true
  %724 = zext i1 %723 to i8
  store i8 %724, ptr %88, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %87, ptr noundef nonnull align 1 dereferenceable(1) %88, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #7
  %725 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %87)
          to label %726 unwind label %729

726:                                              ; preds = %719
  br i1 %725, label %727, label %733

727:                                              ; preds = %726
  br label %758

728:                                              ; preds = %718, %690
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #7
  br label %914

729:                                              ; preds = %719
  %730 = landingpad { ptr, i32 }
          cleanup
  %731 = extractvalue { ptr, i32 } %730, 0
  store ptr %731, ptr %5, align 8
  %732 = extractvalue { ptr, i32 } %730, 1
  store i32 %732, ptr %6, align 4
  br label %766

733:                                              ; preds = %726
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %90)
          to label %734 unwind label %739

734:                                              ; preds = %733
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %92) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %92, ptr noundef nonnull align 8 dereferenceable(16) %87, ptr noundef @.str.22, ptr noundef @.str.6, ptr noundef @.str.5)
          to label %735 unwind label %743

735:                                              ; preds = %734
  %736 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %92) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %91, i32 noundef 1, ptr noundef @.str.3, i32 noundef 44, ptr noundef %736)
          to label %737 unwind label %747

737:                                              ; preds = %735
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(8) %90)
          to label %738 unwind label %751

738:                                              ; preds = %737
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #7
  br label %758

739:                                              ; preds = %733
  %740 = landingpad { ptr, i32 }
          cleanup
  %741 = extractvalue { ptr, i32 } %740, 0
  store ptr %741, ptr %5, align 8
  %742 = extractvalue { ptr, i32 } %740, 1
  store i32 %742, ptr %6, align 4
  br label %757

743:                                              ; preds = %734
  %744 = landingpad { ptr, i32 }
          cleanup
  %745 = extractvalue { ptr, i32 } %744, 0
  store ptr %745, ptr %5, align 8
  %746 = extractvalue { ptr, i32 } %744, 1
  store i32 %746, ptr %6, align 4
  br label %756

747:                                              ; preds = %735
  %748 = landingpad { ptr, i32 }
          cleanup
  %749 = extractvalue { ptr, i32 } %748, 0
  store ptr %749, ptr %5, align 8
  %750 = extractvalue { ptr, i32 } %748, 1
  store i32 %750, ptr %6, align 4
  br label %755

751:                                              ; preds = %737
  %752 = landingpad { ptr, i32 }
          cleanup
  %753 = extractvalue { ptr, i32 } %752, 0
  store ptr %753, ptr %5, align 8
  %754 = extractvalue { ptr, i32 } %752, 1
  store i32 %754, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #7
  br label %755

755:                                              ; preds = %751, %747
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #7
  br label %756

756:                                              ; preds = %755, %743
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #7
  br label %757

757:                                              ; preds = %756, %739
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #7
  br label %766

758:                                              ; preds = %738, %727
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %87) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %93) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #7
  %759 = call <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE8infinityEv()
  store <2 x float> %759, ptr %95, align 4
  %760 = call noundef float @_ZNK2mt11ErrorTracerIfEcvfEv(ptr noundef nonnull align 4 dereferenceable(8) %95)
  %761 = call noundef zeroext i1 @_ZSt5isinff(float noundef %760)
  %762 = zext i1 %761 to i8
  store i8 %762, ptr %94, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %93, ptr noundef nonnull align 1 dereferenceable(1) %94, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #7
  %763 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %93)
          to label %764 unwind label %767

764:                                              ; preds = %758
  br i1 %763, label %765, label %771

765:                                              ; preds = %764
  br label %796

766:                                              ; preds = %757, %729
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %87) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #7
  br label %914

767:                                              ; preds = %758
  %768 = landingpad { ptr, i32 }
          cleanup
  %769 = extractvalue { ptr, i32 } %768, 0
  store ptr %769, ptr %5, align 8
  %770 = extractvalue { ptr, i32 } %768, 1
  store i32 %770, ptr %6, align 4
  br label %805

771:                                              ; preds = %764
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %96)
          to label %772 unwind label %777

772:                                              ; preds = %771
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %98) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %98, ptr noundef nonnull align 8 dereferenceable(16) %93, ptr noundef @.str.23, ptr noundef @.str.5, ptr noundef @.str.6)
          to label %773 unwind label %781

773:                                              ; preds = %772
  %774 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %98) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %97, i32 noundef 1, ptr noundef @.str.3, i32 noundef 45, ptr noundef %774)
          to label %775 unwind label %785

775:                                              ; preds = %773
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(8) %96)
          to label %776 unwind label %789

776:                                              ; preds = %775
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %98) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #7
  br label %796

777:                                              ; preds = %771
  %778 = landingpad { ptr, i32 }
          cleanup
  %779 = extractvalue { ptr, i32 } %778, 0
  store ptr %779, ptr %5, align 8
  %780 = extractvalue { ptr, i32 } %778, 1
  store i32 %780, ptr %6, align 4
  br label %795

781:                                              ; preds = %772
  %782 = landingpad { ptr, i32 }
          cleanup
  %783 = extractvalue { ptr, i32 } %782, 0
  store ptr %783, ptr %5, align 8
  %784 = extractvalue { ptr, i32 } %782, 1
  store i32 %784, ptr %6, align 4
  br label %794

785:                                              ; preds = %773
  %786 = landingpad { ptr, i32 }
          cleanup
  %787 = extractvalue { ptr, i32 } %786, 0
  store ptr %787, ptr %5, align 8
  %788 = extractvalue { ptr, i32 } %786, 1
  store i32 %788, ptr %6, align 4
  br label %793

789:                                              ; preds = %775
  %790 = landingpad { ptr, i32 }
          cleanup
  %791 = extractvalue { ptr, i32 } %790, 0
  store ptr %791, ptr %5, align 8
  %792 = extractvalue { ptr, i32 } %790, 1
  store i32 %792, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #7
  br label %793

793:                                              ; preds = %789, %785
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #7
  br label %794

794:                                              ; preds = %793, %781
  call void @llvm.lifetime.end.p0(i64 32, ptr %98) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #7
  br label %795

795:                                              ; preds = %794, %777
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #7
  br label %805

796:                                              ; preds = %776, %765
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %99) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #7
  %797 = call <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE9quiet_NaNEv()
  store <2 x float> %797, ptr %101, align 4
  %798 = call noundef float @_ZNK2mt11ErrorTracerIfEcvfEv(ptr noundef nonnull align 4 dereferenceable(8) %101)
  %799 = call noundef zeroext i1 @_ZSt8isfinitef(float noundef %798)
  %800 = xor i1 %799, true
  %801 = zext i1 %800 to i8
  store i8 %801, ptr %100, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %99, ptr noundef nonnull align 1 dereferenceable(1) %100, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #7
  %802 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %99)
          to label %803 unwind label %806

803:                                              ; preds = %796
  br i1 %802, label %804, label %810

804:                                              ; preds = %803
  br label %835

805:                                              ; preds = %795, %767
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #7
  br label %914

806:                                              ; preds = %796
  %807 = landingpad { ptr, i32 }
          cleanup
  %808 = extractvalue { ptr, i32 } %807, 0
  store ptr %808, ptr %5, align 8
  %809 = extractvalue { ptr, i32 } %807, 1
  store i32 %809, ptr %6, align 4
  br label %844

810:                                              ; preds = %803
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %811 unwind label %816

811:                                              ; preds = %810
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %104) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %104, ptr noundef nonnull align 8 dereferenceable(16) %99, ptr noundef @.str.24, ptr noundef @.str.6, ptr noundef @.str.5)
          to label %812 unwind label %820

812:                                              ; preds = %811
  %813 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %104) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %103, i32 noundef 1, ptr noundef @.str.3, i32 noundef 47, ptr noundef %813)
          to label %814 unwind label %824

814:                                              ; preds = %812
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %103, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %815 unwind label %828

815:                                              ; preds = %814
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %103) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #7
  br label %835

816:                                              ; preds = %810
  %817 = landingpad { ptr, i32 }
          cleanup
  %818 = extractvalue { ptr, i32 } %817, 0
  store ptr %818, ptr %5, align 8
  %819 = extractvalue { ptr, i32 } %817, 1
  store i32 %819, ptr %6, align 4
  br label %834

820:                                              ; preds = %811
  %821 = landingpad { ptr, i32 }
          cleanup
  %822 = extractvalue { ptr, i32 } %821, 0
  store ptr %822, ptr %5, align 8
  %823 = extractvalue { ptr, i32 } %821, 1
  store i32 %823, ptr %6, align 4
  br label %833

824:                                              ; preds = %812
  %825 = landingpad { ptr, i32 }
          cleanup
  %826 = extractvalue { ptr, i32 } %825, 0
  store ptr %826, ptr %5, align 8
  %827 = extractvalue { ptr, i32 } %825, 1
  store i32 %827, ptr %6, align 4
  br label %832

828:                                              ; preds = %814
  %829 = landingpad { ptr, i32 }
          cleanup
  %830 = extractvalue { ptr, i32 } %829, 0
  store ptr %830, ptr %5, align 8
  %831 = extractvalue { ptr, i32 } %829, 1
  store i32 %831, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %103) #7
  br label %832

832:                                              ; preds = %828, %824
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #7
  br label %833

833:                                              ; preds = %832, %820
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #7
  br label %834

834:                                              ; preds = %833, %816
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #7
  br label %844

835:                                              ; preds = %815, %804
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %99) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %105) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %106) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #7
  %836 = call <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE8infinityEv()
  store <2 x float> %836, ptr %107, align 4
  %837 = call noundef float @_ZNK2mt11ErrorTracerIfEcvfEv(ptr noundef nonnull align 4 dereferenceable(8) %107)
  %838 = call noundef zeroext i1 @_ZSt8isfinitef(float noundef %837)
  %839 = xor i1 %838, true
  %840 = zext i1 %839 to i8
  store i8 %840, ptr %106, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %105, ptr noundef nonnull align 1 dereferenceable(1) %106, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #7
  %841 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %105)
          to label %842 unwind label %845

842:                                              ; preds = %835
  br i1 %841, label %843, label %849

843:                                              ; preds = %842
  br label %874

844:                                              ; preds = %834, %806
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %99) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #7
  br label %914

845:                                              ; preds = %835
  %846 = landingpad { ptr, i32 }
          cleanup
  %847 = extractvalue { ptr, i32 } %846, 0
  store ptr %847, ptr %5, align 8
  %848 = extractvalue { ptr, i32 } %846, 1
  store i32 %848, ptr %6, align 4
  br label %882

849:                                              ; preds = %842
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %108)
          to label %850 unwind label %855

850:                                              ; preds = %849
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %110) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %110, ptr noundef nonnull align 8 dereferenceable(16) %105, ptr noundef @.str.25, ptr noundef @.str.6, ptr noundef @.str.5)
          to label %851 unwind label %859

851:                                              ; preds = %850
  %852 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %110) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %109, i32 noundef 1, ptr noundef @.str.3, i32 noundef 48, ptr noundef %852)
          to label %853 unwind label %863

853:                                              ; preds = %851
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull align 8 dereferenceable(8) %108)
          to label %854 unwind label %867

854:                                              ; preds = %853
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %110) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #7
  br label %874

855:                                              ; preds = %849
  %856 = landingpad { ptr, i32 }
          cleanup
  %857 = extractvalue { ptr, i32 } %856, 0
  store ptr %857, ptr %5, align 8
  %858 = extractvalue { ptr, i32 } %856, 1
  store i32 %858, ptr %6, align 4
  br label %873

859:                                              ; preds = %850
  %860 = landingpad { ptr, i32 }
          cleanup
  %861 = extractvalue { ptr, i32 } %860, 0
  store ptr %861, ptr %5, align 8
  %862 = extractvalue { ptr, i32 } %860, 1
  store i32 %862, ptr %6, align 4
  br label %872

863:                                              ; preds = %851
  %864 = landingpad { ptr, i32 }
          cleanup
  %865 = extractvalue { ptr, i32 } %864, 0
  store ptr %865, ptr %5, align 8
  %866 = extractvalue { ptr, i32 } %864, 1
  store i32 %866, ptr %6, align 4
  br label %871

867:                                              ; preds = %853
  %868 = landingpad { ptr, i32 }
          cleanup
  %869 = extractvalue { ptr, i32 } %868, 0
  store ptr %869, ptr %5, align 8
  %870 = extractvalue { ptr, i32 } %868, 1
  store i32 %870, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #7
  br label %871

871:                                              ; preds = %867, %863
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #7
  br label %872

872:                                              ; preds = %871, %859
  call void @llvm.lifetime.end.p0(i64 32, ptr %110) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #7
  br label %873

873:                                              ; preds = %872, %855
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #7
  br label %882

874:                                              ; preds = %854, %843
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %105) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %105) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %111) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %112) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #7
  %875 = call <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE3maxEv()
  store <2 x float> %875, ptr %113, align 4
  %876 = call noundef float @_ZNK2mt11ErrorTracerIfEcvfEv(ptr noundef nonnull align 4 dereferenceable(8) %113)
  %877 = call noundef zeroext i1 @_ZSt8isfinitef(float noundef %876)
  %878 = zext i1 %877 to i8
  store i8 %878, ptr %112, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %111, ptr noundef nonnull align 1 dereferenceable(1) %112, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %112) #7
  %879 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %111)
          to label %880 unwind label %883

880:                                              ; preds = %874
  br i1 %879, label %881, label %887

881:                                              ; preds = %880
  br label %912

882:                                              ; preds = %873, %845
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %105) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %105) #7
  br label %914

883:                                              ; preds = %874
  %884 = landingpad { ptr, i32 }
          cleanup
  %885 = extractvalue { ptr, i32 } %884, 0
  store ptr %885, ptr %5, align 8
  %886 = extractvalue { ptr, i32 } %884, 1
  store i32 %886, ptr %6, align 4
  br label %913

887:                                              ; preds = %880
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %114)
          to label %888 unwind label %893

888:                                              ; preds = %887
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %116) #7
  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) %111, ptr noundef @.str.26, ptr noundef @.str.5, ptr noundef @.str.6)
          to label %889 unwind label %897

889:                                              ; preds = %888
  %890 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %116) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %115, i32 noundef 1, ptr noundef @.str.3, i32 noundef 49, ptr noundef %890)
          to label %891 unwind label %901

891:                                              ; preds = %889
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull align 8 dereferenceable(8) %114)
          to label %892 unwind label %905

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

893:                                              ; preds = %887
  %894 = landingpad { ptr, i32 }
          cleanup
  %895 = extractvalue { ptr, i32 } %894, 0
  store ptr %895, ptr %5, align 8
  %896 = extractvalue { ptr, i32 } %894, 1
  store i32 %896, ptr %6, align 4
  br label %911

897:                                              ; preds = %888
  %898 = landingpad { ptr, i32 }
          cleanup
  %899 = extractvalue { ptr, i32 } %898, 0
  store ptr %899, ptr %5, align 8
  %900 = extractvalue { ptr, i32 } %898, 1
  store i32 %900, ptr %6, align 4
  br label %910

901:                                              ; preds = %889
  %902 = landingpad { ptr, i32 }
          cleanup
  %903 = extractvalue { ptr, i32 } %902, 0
  store ptr %903, ptr %5, align 8
  %904 = extractvalue { ptr, i32 } %902, 1
  store i32 %904, ptr %6, align 4
  br label %909

905:                                              ; preds = %891
  %906 = landingpad { ptr, i32 }
          cleanup
  %907 = extractvalue { ptr, i32 } %906, 0
  store ptr %907, ptr %5, align 8
  %908 = extractvalue { ptr, i32 } %906, 1
  store i32 %908, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #7
  br label %909

909:                                              ; preds = %905, %901
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #7
  br label %910

910:                                              ; preds = %909, %897
  call void @llvm.lifetime.end.p0(i64 32, ptr %116) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #7
  br label %911

911:                                              ; preds = %910, %893
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #7
  br label %913

912:                                              ; preds = %892, %881
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %111) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %111) #7
  ret void

913:                                              ; preds = %911, %883
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %111) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %111) #7
  br label %914

914:                                              ; preds = %913, %882, %844, %805, %766, %728, %689, %650, %612, %575, %537, %499, %462, %424, %386, %349, %312, %274, %236, %199, %161
  %915 = load ptr, ptr %5, align 8
  %916 = load i32, ptr %6, align 4
  %917 = insertvalue { ptr, i32 } poison, ptr %915, 0
  %918 = insertvalue { ptr, i32 } %917, i32 %916, 1
  resume { ptr, i32 } %918
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isnanf(float noundef) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNSt14numeric_limitsIfE9quiet_NaNEv() #1 align 2

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

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

declare void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #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)) #1 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 nounwind uwtable
declare dso_local noundef float @_ZNSt14numeric_limitsIfE8infinityEv() #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isinff(float noundef) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt8isfinitef(float noundef) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNSt14numeric_limitsIfE3maxEv() #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isnand(double noundef) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isinfd(double noundef) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt8isfinited(double noundef) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE3maxEv() #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE9quiet_NaNEv() #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK2mt11ErrorTracerIfEcvfEv(ptr noundef nonnull align 4 dereferenceable(8)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE8infinityEv() #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE3maxEv() #2 align 2

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

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

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


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

%"class.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.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.testing::Message" = type { %"class.std::unique_ptr.2" }
%"class.std::unique_ptr.2" = type { %"struct.std::__uniq_ptr_data.3" }
%"struct.std::__uniq_ptr_data.3" = type { %"class.std::__uniq_ptr_impl.4" }
%"class.std::__uniq_ptr_impl.4" = type { %"class.std::tuple.5" }
%"class.std::tuple.5" = type { %"struct.std::_Tuple_impl.6" }
%"struct.std::_Tuple_impl.6" = type { %"struct.std::_Head_base.9" }
%"struct.std::_Head_base.9" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }
%"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.mt::ErrorTracer" = type { float, float }

@.str.3 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [49 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

118:                                              ; preds = %1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %119 unwind label %124

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

120:                                              ; preds = %119
  %121 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %5, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 21, ptr noundef %121)
          to label %122 unwind label %128

122:                                              ; preds = %120
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %123 unwind label %130

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

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

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

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

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

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

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

134:                                              ; preds = %133, %124
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %133 ], [ %125, %124 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  br label %595

135:                                              ; preds = %1, %123
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #7
  %136 = call noundef float @_ZNSt14numeric_limitsIfE8infinityEv() #7
  %137 = call noundef zeroext i1 @_ZSt5isnanf(float noundef %136)
  %138 = xor i1 %137, true
  %139 = zext i1 %138 to i8
  store i8 %139, ptr %8, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 1 dereferenceable(1) %8, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  %140 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  br i1 %140, label %158, label %141

141:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %142 unwind label %147

142:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.5)
          to label %143 unwind label %149

143:                                              ; preds = %142
  %144 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %10, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 22, ptr noundef %144)
          to label %145 unwind label %151

145:                                              ; preds = %143
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %146 unwind label %153

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

147:                                              ; preds = %141
  %148 = landingpad { ptr, i32 }
          cleanup
  br label %157

149:                                              ; preds = %142
  %150 = landingpad { ptr, i32 }
          cleanup
  br label %156

151:                                              ; preds = %143
  %152 = landingpad { ptr, i32 }
          cleanup
  br label %155

153:                                              ; preds = %145
  %154 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  br label %155

155:                                              ; preds = %153, %151
  %.pn76 = phi { ptr, i32 } [ %154, %153 ], [ %152, %151 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %156

156:                                              ; preds = %155, %149
  %.pn76.pn = phi { ptr, i32 } [ %.pn76, %155 ], [ %150, %149 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  br label %157

157:                                              ; preds = %156, %147
  %.pn76.pn.pn = phi { ptr, i32 } [ %.pn76.pn, %156 ], [ %148, %147 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  br label %595

158:                                              ; preds = %135, %146
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #7
  %159 = call noundef float @_ZNSt14numeric_limitsIfE9quiet_NaNEv() #7
  %160 = call noundef zeroext i1 @_ZSt5isinff(float noundef %159)
  %161 = xor i1 %160, true
  %162 = zext i1 %161 to i8
  store i8 %162, ptr %13, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 1 dereferenceable(1) %13, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #7
  %163 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
  br i1 %163, label %181, label %164

164:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %165 unwind label %170

165:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.5)
          to label %166 unwind label %172

166:                                              ; preds = %165
  %167 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %15, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 24, ptr noundef %167)
          to label %168 unwind label %174

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

169:                                              ; preds = %168
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  br label %181

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

172:                                              ; preds = %165
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %179

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

176:                                              ; preds = %168
  %177 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  br label %178

178:                                              ; preds = %176, %174
  %.pn80 = phi { ptr, i32 } [ %177, %176 ], [ %175, %174 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  br label %179

179:                                              ; preds = %178, %172
  %.pn80.pn = phi { ptr, i32 } [ %.pn80, %178 ], [ %173, %172 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  br label %180

180:                                              ; preds = %179, %170
  %.pn80.pn.pn = phi { ptr, i32 } [ %.pn80.pn, %179 ], [ %171, %170 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  br label %595

181:                                              ; preds = %158, %169
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #7
  %182 = call noundef float @_ZNSt14numeric_limitsIfE8infinityEv() #7
  %183 = call noundef zeroext i1 @_ZSt5isinff(float noundef %182)
  %184 = zext i1 %183 to i8
  store i8 %184, ptr %18, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 1 dereferenceable(1) %18, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #7
  %185 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
  br i1 %185, label %203, label %186

186:                                              ; preds = %181
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %187 unwind label %192

187:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6)
          to label %188 unwind label %194

188:                                              ; preds = %187
  %189 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %20, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 25, ptr noundef %189)
          to label %190 unwind label %196

190:                                              ; preds = %188
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %191 unwind label %198

191:                                              ; preds = %190
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  br label %203

192:                                              ; preds = %186
  %193 = landingpad { ptr, i32 }
          cleanup
  br label %202

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

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

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

200:                                              ; preds = %198, %196
  %.pn84 = phi { ptr, i32 } [ %199, %198 ], [ %197, %196 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  br label %201

201:                                              ; preds = %200, %194
  %.pn84.pn = phi { ptr, i32 } [ %.pn84, %200 ], [ %195, %194 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  br label %202

202:                                              ; preds = %201, %192
  %.pn84.pn.pn = phi { ptr, i32 } [ %.pn84.pn, %201 ], [ %193, %192 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #7
  br label %595

203:                                              ; preds = %181, %191
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #7
  %204 = call noundef float @_ZNSt14numeric_limitsIfE9quiet_NaNEv() #7
  %205 = call noundef zeroext i1 @_ZSt8isfinitef(float noundef %204)
  %206 = xor i1 %205, true
  %207 = zext i1 %206 to i8
  store i8 %207, ptr %23, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 1 dereferenceable(1) %23, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  %208 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %22)
  br i1 %208, label %226, label %209

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

210:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.5)
          to label %211 unwind label %217

211:                                              ; preds = %210
  %212 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %25, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 27, ptr noundef %212)
          to label %213 unwind label %219

213:                                              ; preds = %211
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %214 unwind label %221

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

215:                                              ; preds = %209
  %216 = landingpad { ptr, i32 }
          cleanup
  br label %225

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

219:                                              ; preds = %211
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %223

221:                                              ; preds = %213
  %222 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  br label %223

223:                                              ; preds = %221, %219
  %.pn88 = phi { ptr, i32 } [ %222, %221 ], [ %220, %219 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  br label %224

224:                                              ; preds = %223, %217
  %.pn88.pn = phi { ptr, i32 } [ %.pn88, %223 ], [ %218, %217 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  br label %225

225:                                              ; preds = %224, %215
  %.pn88.pn.pn = phi { ptr, i32 } [ %.pn88.pn, %224 ], [ %216, %215 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #7
  br label %595

226:                                              ; preds = %203, %214
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #7
  %227 = call noundef float @_ZNSt14numeric_limitsIfE8infinityEv() #7
  %228 = call noundef zeroext i1 @_ZSt8isfinitef(float noundef %227)
  %229 = xor i1 %228, true
  %230 = zext i1 %229 to i8
  store i8 %230, ptr %28, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 1 dereferenceable(1) %28, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #7
  %231 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %27)
  br i1 %231, label %249, label %232

232:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %233 unwind label %238

233:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.5)
          to label %234 unwind label %240

234:                                              ; preds = %233
  %235 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %30, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 28, ptr noundef %235)
          to label %236 unwind label %242

236:                                              ; preds = %234
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %237 unwind label %244

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

238:                                              ; preds = %232
  %239 = landingpad { ptr, i32 }
          cleanup
  br label %248

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

242:                                              ; preds = %234
  %243 = landingpad { ptr, i32 }
          cleanup
  br label %246

244:                                              ; preds = %236
  %245 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  br label %246

246:                                              ; preds = %244, %242
  %.pn92 = phi { ptr, i32 } [ %245, %244 ], [ %243, %242 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  br label %247

247:                                              ; preds = %246, %240
  %.pn92.pn = phi { ptr, i32 } [ %.pn92, %246 ], [ %241, %240 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #7
  br label %248

248:                                              ; preds = %247, %238
  %.pn92.pn.pn = phi { ptr, i32 } [ %.pn92.pn, %247 ], [ %239, %238 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #7
  br label %595

249:                                              ; preds = %226, %237
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #7
  %250 = call noundef float @_ZNSt14numeric_limitsIfE3maxEv() #7
  %251 = call noundef zeroext i1 @_ZSt8isfinitef(float noundef %250)
  %252 = zext i1 %251 to i8
  store i8 %252, ptr %33, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 1 dereferenceable(1) %33, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #7
  %253 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %32)
  br i1 %253, label %271, label %254

254:                                              ; preds = %249
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %255 unwind label %260

255:                                              ; preds = %254
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6)
          to label %256 unwind label %262

256:                                              ; preds = %255
  %257 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %35, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 29, ptr noundef %257)
          to label %258 unwind label %264

258:                                              ; preds = %256
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %259 unwind label %266

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

260:                                              ; preds = %254
  %261 = landingpad { ptr, i32 }
          cleanup
  br label %270

262:                                              ; preds = %255
  %263 = landingpad { ptr, i32 }
          cleanup
  br label %269

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

266:                                              ; preds = %258
  %267 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  br label %268

268:                                              ; preds = %266, %264
  %.pn96 = phi { ptr, i32 } [ %267, %266 ], [ %265, %264 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  br label %269

269:                                              ; preds = %268, %262
  %.pn96.pn = phi { ptr, i32 } [ %.pn96, %268 ], [ %263, %262 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  br label %270

270:                                              ; preds = %269, %260
  %.pn96.pn.pn = phi { ptr, i32 } [ %.pn96.pn, %269 ], [ %261, %260 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #7
  br label %595

271:                                              ; preds = %249, %259
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #7
  %272 = call noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #7
  %273 = call noundef zeroext i1 @_ZSt5isnand(double noundef %272)
  %274 = zext i1 %273 to i8
  store i8 %274, ptr %38, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull align 1 dereferenceable(1) %38, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #7
  %275 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
  br i1 %275, label %293, label %276

276:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %277 unwind label %282

277:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6)
          to label %278 unwind label %284

278:                                              ; preds = %277
  %279 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %40, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 31, ptr noundef %279)
          to label %280 unwind label %286

280:                                              ; preds = %278
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %281 unwind label %288

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

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

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

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

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

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

291:                                              ; preds = %290, %284
  %.pn100.pn = phi { ptr, i32 } [ %.pn100, %290 ], [ %285, %284 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  br label %292

292:                                              ; preds = %291, %282
  %.pn100.pn.pn = phi { ptr, i32 } [ %.pn100.pn, %291 ], [ %283, %282 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #7
  br label %595

293:                                              ; preds = %271, %281
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %43) #7
  %294 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %295 = call noundef zeroext i1 @_ZSt5isnand(double noundef %294)
  %296 = xor i1 %295, true
  %297 = zext i1 %296 to i8
  store i8 %297, ptr %43, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 1 dereferenceable(1) %43, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #7
  %298 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %42)
  br i1 %298, label %316, label %299

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

300:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.5)
          to label %301 unwind label %307

301:                                              ; preds = %300
  %302 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %45, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 32, ptr noundef %302)
          to label %303 unwind label %309

303:                                              ; preds = %301
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %304 unwind label %311

304:                                              ; preds = %303
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #7
  br label %316

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

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

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

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

313:                                              ; preds = %311, %309
  %.pn104 = phi { ptr, i32 } [ %312, %311 ], [ %310, %309 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  br label %314

314:                                              ; preds = %313, %307
  %.pn104.pn = phi { ptr, i32 } [ %.pn104, %313 ], [ %308, %307 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #7
  br label %315

315:                                              ; preds = %314, %305
  %.pn104.pn.pn = phi { ptr, i32 } [ %.pn104.pn, %314 ], [ %306, %305 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #7
  br label %595

316:                                              ; preds = %293, %304
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %48) #7
  %317 = call noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #7
  %318 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %317)
  %319 = xor i1 %318, true
  %320 = zext i1 %319 to i8
  store i8 %320, ptr %48, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull align 1 dereferenceable(1) %48, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #7
  %321 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %47)
  br i1 %321, label %339, label %322

322:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %323 unwind label %328

323:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %51) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %51, ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.5)
          to label %324 unwind label %330

324:                                              ; preds = %323
  %325 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %50, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 34, ptr noundef %325)
          to label %326 unwind label %332

326:                                              ; preds = %324
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %327 unwind label %334

327:                                              ; preds = %326
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #7
  br label %339

328:                                              ; preds = %322
  %329 = landingpad { ptr, i32 }
          cleanup
  br label %338

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

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

334:                                              ; preds = %326
  %335 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  br label %336

336:                                              ; preds = %334, %332
  %.pn108 = phi { ptr, i32 } [ %335, %334 ], [ %333, %332 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  br label %337

337:                                              ; preds = %336, %330
  %.pn108.pn = phi { ptr, i32 } [ %.pn108, %336 ], [ %331, %330 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  br label %338

338:                                              ; preds = %337, %328
  %.pn108.pn.pn = phi { ptr, i32 } [ %.pn108.pn, %337 ], [ %329, %328 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #7
  br label %595

339:                                              ; preds = %316, %327
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %52) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %53) #7
  %340 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %341 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %340)
  %342 = zext i1 %341 to i8
  store i8 %342, ptr %53, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %52, ptr noundef nonnull align 1 dereferenceable(1) %53, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #7
  %343 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %52)
  br i1 %343, label %361, label %344

344:                                              ; preds = %339
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %345 unwind label %350

345:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %56) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %56, ptr noundef nonnull align 8 dereferenceable(16) %52, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6)
          to label %346 unwind label %352

346:                                              ; preds = %345
  %347 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %55, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 35, ptr noundef %347)
          to label %348 unwind label %354

348:                                              ; preds = %346
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %349 unwind label %356

349:                                              ; preds = %348
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #7
  br label %361

350:                                              ; preds = %344
  %351 = landingpad { ptr, i32 }
          cleanup
  br label %360

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

354:                                              ; preds = %346
  %355 = landingpad { ptr, i32 }
          cleanup
  br label %358

356:                                              ; preds = %348
  %357 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #7
  br label %358

358:                                              ; preds = %356, %354
  %.pn112 = phi { ptr, i32 } [ %357, %356 ], [ %355, %354 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  br label %359

359:                                              ; preds = %358, %352
  %.pn112.pn = phi { ptr, i32 } [ %.pn112, %358 ], [ %353, %352 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #7
  br label %360

360:                                              ; preds = %359, %350
  %.pn112.pn.pn = phi { ptr, i32 } [ %.pn112.pn, %359 ], [ %351, %350 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #7
  br label %595

361:                                              ; preds = %339, %349
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %57) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %58) #7
  %362 = call noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #7
  %363 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %362)
  %364 = xor i1 %363, true
  %365 = zext i1 %364 to i8
  store i8 %365, ptr %58, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %57, ptr noundef nonnull align 1 dereferenceable(1) %58, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #7
  %366 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %57)
  br i1 %366, label %384, label %367

367:                                              ; preds = %361
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %368 unwind label %373

368:                                              ; preds = %367
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %61) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef nonnull align 8 dereferenceable(16) %57, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.5)
          to label %369 unwind label %375

369:                                              ; preds = %368
  %370 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %60, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 37, ptr noundef %370)
          to label %371 unwind label %377

371:                                              ; preds = %369
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %372 unwind label %379

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

373:                                              ; preds = %367
  %374 = landingpad { ptr, i32 }
          cleanup
  br label %383

375:                                              ; preds = %368
  %376 = landingpad { ptr, i32 }
          cleanup
  br label %382

377:                                              ; preds = %369
  %378 = landingpad { ptr, i32 }
          cleanup
  br label %381

379:                                              ; preds = %371
  %380 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #7
  br label %381

381:                                              ; preds = %379, %377
  %.pn116 = phi { ptr, i32 } [ %380, %379 ], [ %378, %377 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  br label %382

382:                                              ; preds = %381, %375
  %.pn116.pn = phi { ptr, i32 } [ %.pn116, %381 ], [ %376, %375 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #7
  br label %383

383:                                              ; preds = %382, %373
  %.pn116.pn.pn = phi { ptr, i32 } [ %.pn116.pn, %382 ], [ %374, %373 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #7
  br label %595

384:                                              ; preds = %361, %372
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %62) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %63) #7
  %385 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %386 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %385)
  %387 = xor i1 %386, true
  %388 = zext i1 %387 to i8
  store i8 %388, ptr %63, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %62, ptr noundef nonnull align 1 dereferenceable(1) %63, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #7
  %389 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %62)
  br i1 %389, label %407, label %390

390:                                              ; preds = %384
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %391 unwind label %396

391:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %66) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %66, ptr noundef nonnull align 8 dereferenceable(16) %62, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.5)
          to label %392 unwind label %398

392:                                              ; preds = %391
  %393 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %66) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %65, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 38, ptr noundef %393)
          to label %394 unwind label %400

394:                                              ; preds = %392
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %395 unwind label %402

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

396:                                              ; preds = %390
  %397 = landingpad { ptr, i32 }
          cleanup
  br label %406

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

400:                                              ; preds = %392
  %401 = landingpad { ptr, i32 }
          cleanup
  br label %404

402:                                              ; preds = %394
  %403 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #7
  br label %404

404:                                              ; preds = %402, %400
  %.pn120 = phi { ptr, i32 } [ %403, %402 ], [ %401, %400 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #7
  br label %405

405:                                              ; preds = %404, %398
  %.pn120.pn = phi { ptr, i32 } [ %.pn120, %404 ], [ %399, %398 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #7
  br label %406

406:                                              ; preds = %405, %396
  %.pn120.pn.pn = phi { ptr, i32 } [ %.pn120.pn, %405 ], [ %397, %396 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %62) #7
  br label %595

407:                                              ; preds = %384, %395
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %62) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %67) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %68) #7
  %408 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #7
  %409 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %408)
  %410 = zext i1 %409 to i8
  store i8 %410, ptr %68, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef nonnull align 1 dereferenceable(1) %68, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %68) #7
  %411 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %67)
  br i1 %411, label %429, label %412

412:                                              ; preds = %407
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %69)
          to label %413 unwind label %418

413:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %70) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %71) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %71, ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6)
          to label %414 unwind label %420

414:                                              ; preds = %413
  %415 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %71) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %70, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 39, ptr noundef %415)
          to label %416 unwind label %422

416:                                              ; preds = %414
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull align 8 dereferenceable(8) %69)
          to label %417 unwind label %424

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

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

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

422:                                              ; preds = %414
  %423 = landingpad { ptr, i32 }
          cleanup
  br label %426

424:                                              ; preds = %416
  %425 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #7
  br label %426

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

427:                                              ; preds = %426, %420
  %.pn124.pn = phi { ptr, i32 } [ %.pn124, %426 ], [ %421, %420 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #7
  br label %428

428:                                              ; preds = %427, %418
  %.pn124.pn.pn = phi { ptr, i32 } [ %.pn124.pn, %427 ], [ %419, %418 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #7
  br label %595

429:                                              ; preds = %407, %417
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %72) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %73) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #7
  %430 = call <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE9quiet_NaNEv()
  store <2 x float> %430, ptr %74, align 8
  %431 = call noundef float @_ZNK2mt11ErrorTracerIfEcvfEv(ptr noundef nonnull align 4 dereferenceable(8) %74)
  %432 = call noundef zeroext i1 @_ZSt5isnanf(float noundef %431)
  %433 = zext i1 %432 to i8
  store i8 %433, ptr %73, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 1 dereferenceable(1) %73, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %73) #7
  %434 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %72)
  br i1 %434, label %452, label %435

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

436:                                              ; preds = %435
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %77) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %77, ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6)
          to label %437 unwind label %443

437:                                              ; preds = %436
  %438 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %77) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %76, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 41, ptr noundef %438)
          to label %439 unwind label %445

439:                                              ; preds = %437
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %75)
          to label %440 unwind label %447

440:                                              ; preds = %439
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %77) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #7
  br label %452

441:                                              ; preds = %435
  %442 = landingpad { ptr, i32 }
          cleanup
  br label %451

443:                                              ; preds = %436
  %444 = landingpad { ptr, i32 }
          cleanup
  br label %450

445:                                              ; preds = %437
  %446 = landingpad { ptr, i32 }
          cleanup
  br label %449

447:                                              ; preds = %439
  %448 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #7
  br label %449

449:                                              ; preds = %447, %445
  %.pn128 = phi { ptr, i32 } [ %448, %447 ], [ %446, %445 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #7
  br label %450

450:                                              ; preds = %449, %443
  %.pn128.pn = phi { ptr, i32 } [ %.pn128, %449 ], [ %444, %443 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %77) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #7
  br label %451

451:                                              ; preds = %450, %441
  %.pn128.pn.pn = phi { ptr, i32 } [ %.pn128.pn, %450 ], [ %442, %441 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #7
  br label %595

452:                                              ; preds = %429, %440
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %78) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %79) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %80) #7
  %453 = call <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE8infinityEv()
  store <2 x float> %453, ptr %80, align 8
  %454 = call noundef float @_ZNK2mt11ErrorTracerIfEcvfEv(ptr noundef nonnull align 4 dereferenceable(8) %80)
  %455 = call noundef zeroext i1 @_ZSt5isnanf(float noundef %454)
  %456 = xor i1 %455, true
  %457 = zext i1 %456 to i8
  store i8 %457, ptr %79, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull align 1 dereferenceable(1) %79, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %79) #7
  %458 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %78)
  br i1 %458, label %476, label %459

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

460:                                              ; preds = %459
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %83) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %83, ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.5)
          to label %461 unwind label %467

461:                                              ; preds = %460
  %462 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %83) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %82, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 42, ptr noundef %462)
          to label %463 unwind label %469

463:                                              ; preds = %461
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull align 8 dereferenceable(8) %81)
          to label %464 unwind label %471

464:                                              ; preds = %463
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #7
  br label %476

465:                                              ; preds = %459
  %466 = landingpad { ptr, i32 }
          cleanup
  br label %475

467:                                              ; preds = %460
  %468 = landingpad { ptr, i32 }
          cleanup
  br label %474

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

471:                                              ; preds = %463
  %472 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #7
  br label %473

473:                                              ; preds = %471, %469
  %.pn132 = phi { ptr, i32 } [ %472, %471 ], [ %470, %469 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #7
  br label %474

474:                                              ; preds = %473, %467
  %.pn132.pn = phi { ptr, i32 } [ %.pn132, %473 ], [ %468, %467 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #7
  br label %475

475:                                              ; preds = %474, %465
  %.pn132.pn.pn = phi { ptr, i32 } [ %.pn132.pn, %474 ], [ %466, %465 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %78) #7
  br label %595

476:                                              ; preds = %452, %464
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %78) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %84) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %85) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %86) #7
  %477 = call <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE9quiet_NaNEv()
  store <2 x float> %477, ptr %86, align 8
  %478 = call noundef float @_ZNK2mt11ErrorTracerIfEcvfEv(ptr noundef nonnull align 4 dereferenceable(8) %86)
  %479 = call noundef zeroext i1 @_ZSt5isinff(float noundef %478)
  %480 = xor i1 %479, true
  %481 = zext i1 %480 to i8
  store i8 %481, ptr %85, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 1 dereferenceable(1) %85, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %85) #7
  %482 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %84)
  br i1 %482, label %500, label %483

483:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %87) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %87)
          to label %484 unwind label %489

484:                                              ; preds = %483
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %88) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %89) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %89, ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.5)
          to label %485 unwind label %491

485:                                              ; preds = %484
  %486 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %88, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 44, ptr noundef %486)
          to label %487 unwind label %493

487:                                              ; preds = %485
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %88, ptr noundef nonnull align 8 dereferenceable(8) %87)
          to label %488 unwind label %495

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

489:                                              ; preds = %483
  %490 = landingpad { ptr, i32 }
          cleanup
  br label %499

491:                                              ; preds = %484
  %492 = landingpad { ptr, i32 }
          cleanup
  br label %498

493:                                              ; preds = %485
  %494 = landingpad { ptr, i32 }
          cleanup
  br label %497

495:                                              ; preds = %487
  %496 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #7
  br label %497

497:                                              ; preds = %495, %493
  %.pn136 = phi { ptr, i32 } [ %496, %495 ], [ %494, %493 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  br label %498

498:                                              ; preds = %497, %491
  %.pn136.pn = phi { ptr, i32 } [ %.pn136, %497 ], [ %492, %491 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %89) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #7
  br label %499

499:                                              ; preds = %498, %489
  %.pn136.pn.pn = phi { ptr, i32 } [ %.pn136.pn, %498 ], [ %490, %489 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %87) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %84) #7
  br label %595

500:                                              ; preds = %476, %488
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %84) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %90) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %91) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %92) #7
  %501 = call <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE8infinityEv()
  store <2 x float> %501, ptr %92, align 8
  %502 = call noundef float @_ZNK2mt11ErrorTracerIfEcvfEv(ptr noundef nonnull align 4 dereferenceable(8) %92)
  %503 = call noundef zeroext i1 @_ZSt5isinff(float noundef %502)
  %504 = zext i1 %503 to i8
  store i8 %504, ptr %91, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %90, ptr noundef nonnull align 1 dereferenceable(1) %91, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %91) #7
  %505 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %90)
  br i1 %505, label %523, label %506

506:                                              ; preds = %500
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %93) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %507 unwind label %512

507:                                              ; preds = %506
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %94) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %95) #7
  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) %90, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6)
          to label %508 unwind label %514

508:                                              ; preds = %507
  %509 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %95) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %94, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 45, ptr noundef %509)
          to label %510 unwind label %516

510:                                              ; preds = %508
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %511 unwind label %518

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

512:                                              ; preds = %506
  %513 = landingpad { ptr, i32 }
          cleanup
  br label %522

514:                                              ; preds = %507
  %515 = landingpad { ptr, i32 }
          cleanup
  br label %521

516:                                              ; preds = %508
  %517 = landingpad { ptr, i32 }
          cleanup
  br label %520

518:                                              ; preds = %510
  %519 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #7
  br label %520

520:                                              ; preds = %518, %516
  %.pn140 = phi { ptr, i32 } [ %519, %518 ], [ %517, %516 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #7
  br label %521

521:                                              ; preds = %520, %514
  %.pn140.pn = phi { ptr, i32 } [ %.pn140, %520 ], [ %515, %514 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #7
  br label %522

522:                                              ; preds = %521, %512
  %.pn140.pn.pn = phi { ptr, i32 } [ %.pn140.pn, %521 ], [ %513, %512 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %90) #7
  br label %595

523:                                              ; preds = %500, %511
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %90) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %96) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %97) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %98) #7
  %524 = call <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE9quiet_NaNEv()
  store <2 x float> %524, ptr %98, align 8
  %525 = call noundef float @_ZNK2mt11ErrorTracerIfEcvfEv(ptr noundef nonnull align 4 dereferenceable(8) %98)
  %526 = call noundef zeroext i1 @_ZSt8isfinitef(float noundef %525)
  %527 = xor i1 %526, true
  %528 = zext i1 %527 to i8
  store i8 %528, ptr %97, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %96, ptr noundef nonnull align 1 dereferenceable(1) %97, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #7
  %529 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %96)
  br i1 %529, label %547, label %530

530:                                              ; preds = %523
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %99) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %99)
          to label %531 unwind label %536

531:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %100) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %101) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %101, ptr noundef nonnull align 8 dereferenceable(16) %96, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.5)
          to label %532 unwind label %538

532:                                              ; preds = %531
  %533 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %101) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %100, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 47, ptr noundef %533)
          to label %534 unwind label %540

534:                                              ; preds = %532
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull align 8 dereferenceable(8) %99)
          to label %535 unwind label %542

535:                                              ; preds = %534
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %100) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %99) #7
  br label %547

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

538:                                              ; preds = %531
  %539 = landingpad { ptr, i32 }
          cleanup
  br label %545

540:                                              ; preds = %532
  %541 = landingpad { ptr, i32 }
          cleanup
  br label %544

542:                                              ; preds = %534
  %543 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #7
  br label %544

544:                                              ; preds = %542, %540
  %.pn144 = phi { ptr, i32 } [ %543, %542 ], [ %541, %540 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #7
  br label %545

545:                                              ; preds = %544, %538
  %.pn144.pn = phi { ptr, i32 } [ %.pn144, %544 ], [ %539, %538 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %100) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #7
  br label %546

546:                                              ; preds = %545, %536
  %.pn144.pn.pn = phi { ptr, i32 } [ %.pn144.pn, %545 ], [ %537, %536 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %99) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #7
  br label %595

547:                                              ; preds = %523, %535
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %102) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %103) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %104) #7
  %548 = call <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE8infinityEv()
  store <2 x float> %548, ptr %104, align 8
  %549 = call noundef float @_ZNK2mt11ErrorTracerIfEcvfEv(ptr noundef nonnull align 4 dereferenceable(8) %104)
  %550 = call noundef zeroext i1 @_ZSt8isfinitef(float noundef %549)
  %551 = xor i1 %550, true
  %552 = zext i1 %551 to i8
  store i8 %552, ptr %103, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %102, ptr noundef nonnull align 1 dereferenceable(1) %103, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %104) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %103) #7
  %553 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %102)
  br i1 %553, label %571, label %554

554:                                              ; preds = %547
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %105) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %105)
          to label %555 unwind label %560

555:                                              ; preds = %554
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %106) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %107) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %107, ptr noundef nonnull align 8 dereferenceable(16) %102, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.5)
          to label %556 unwind label %562

556:                                              ; preds = %555
  %557 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %107) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %106, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 48, ptr noundef %557)
          to label %558 unwind label %564

558:                                              ; preds = %556
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %105)
          to label %559 unwind label %566

559:                                              ; preds = %558
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %107) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #7
  br label %571

560:                                              ; preds = %554
  %561 = landingpad { ptr, i32 }
          cleanup
  br label %570

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

564:                                              ; preds = %556
  %565 = landingpad { ptr, i32 }
          cleanup
  br label %568

566:                                              ; preds = %558
  %567 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #7
  br label %568

568:                                              ; preds = %566, %564
  %.pn148 = phi { ptr, i32 } [ %567, %566 ], [ %565, %564 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #7
  br label %569

569:                                              ; preds = %568, %562
  %.pn148.pn = phi { ptr, i32 } [ %.pn148, %568 ], [ %563, %562 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %107) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #7
  br label %570

570:                                              ; preds = %569, %560
  %.pn148.pn.pn = phi { ptr, i32 } [ %.pn148.pn, %569 ], [ %561, %560 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %102) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %102) #7
  br label %595

571:                                              ; preds = %547, %559
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %102) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %102) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %108) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %109) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %110) #7
  %572 = call <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE3maxEv()
  store <2 x float> %572, ptr %110, align 8
  %573 = call noundef float @_ZNK2mt11ErrorTracerIfEcvfEv(ptr noundef nonnull align 4 dereferenceable(8) %110)
  %574 = call noundef zeroext i1 @_ZSt8isfinitef(float noundef %573)
  %575 = zext i1 %574 to i8
  store i8 %575, ptr %109, align 1, !tbaa !5
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr3std14is_convertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %108, ptr noundef nonnull align 1 dereferenceable(1) %109, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %110) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %109) #7
  %576 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %108)
  br i1 %576, label %594, label %577

577:                                              ; preds = %571
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %111) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %111)
          to label %578 unwind label %583

578:                                              ; preds = %577
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %112) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %113) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %113, ptr noundef nonnull align 8 dereferenceable(16) %108, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6)
          to label %579 unwind label %585

579:                                              ; preds = %578
  %580 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %113) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %112, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 49, ptr noundef %580)
          to label %581 unwind label %587

581:                                              ; preds = %579
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull align 8 dereferenceable(8) %111)
          to label %582 unwind label %589

582:                                              ; preds = %581
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %112) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %113) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %112) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %111) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %111) #7
  br label %594

583:                                              ; preds = %577
  %584 = landingpad { ptr, i32 }
          cleanup
  br label %593

585:                                              ; preds = %578
  %586 = landingpad { ptr, i32 }
          cleanup
  br label %592

587:                                              ; preds = %579
  %588 = landingpad { ptr, i32 }
          cleanup
  br label %591

589:                                              ; preds = %581
  %590 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %112) #7
  br label %591

591:                                              ; preds = %589, %587
  %.pn152 = phi { ptr, i32 } [ %590, %589 ], [ %588, %587 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #7
  br label %592

592:                                              ; preds = %591, %585
  %.pn152.pn = phi { ptr, i32 } [ %.pn152, %591 ], [ %586, %585 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %113) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %112) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %111) #7
  br label %593

593:                                              ; preds = %592, %583
  %.pn152.pn.pn = phi { ptr, i32 } [ %.pn152.pn, %592 ], [ %584, %583 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %111) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %108) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %108) #7
  br label %595

594:                                              ; preds = %571, %582
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %108) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %108) #7
  ret void

595:                                              ; preds = %593, %570, %546, %522, %499, %475, %451, %428, %406, %383, %360, %338, %315, %292, %270, %248, %225, %202, %180, %157, %134
  %.pn152.pn.pn.pn = phi { ptr, i32 } [ %.pn152.pn.pn, %593 ], [ %.pn148.pn.pn, %570 ], [ %.pn144.pn.pn, %546 ], [ %.pn140.pn.pn, %522 ], [ %.pn136.pn.pn, %499 ], [ %.pn132.pn.pn, %475 ], [ %.pn128.pn.pn, %451 ], [ %.pn124.pn.pn, %428 ], [ %.pn120.pn.pn, %406 ], [ %.pn116.pn.pn, %383 ], [ %.pn112.pn.pn, %360 ], [ %.pn108.pn.pn, %338 ], [ %.pn104.pn.pn, %315 ], [ %.pn100.pn.pn, %292 ], [ %.pn96.pn.pn, %270 ], [ %.pn92.pn.pn, %248 ], [ %.pn88.pn.pn, %225 ], [ %.pn84.pn.pn, %202 ], [ %.pn80.pn.pn, %180 ], [ %.pn76.pn.pn, %157 ], [ %.pn.pn.pn, %134 ]
  resume { ptr, i32 } %.pn152.pn.pn.pn
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isnanf(float noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNSt14numeric_limitsIfE9quiet_NaNEv() local_unnamed_addr #1 align 2

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

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

declare void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #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 #1 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 nounwind uwtable
declare dso_local noundef float @_ZNSt14numeric_limitsIfE8infinityEv() local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isinff(float noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt8isfinitef(float noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNSt14numeric_limitsIfE3maxEv() local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isnand(double noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE8infinityEv() local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isinfd(double noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt8isfinited(double noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE3maxEv() local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE9quiet_NaNEv() local_unnamed_addr #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK2mt11ErrorTracerIfEcvfEv(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE8infinityEv() local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNSt14numeric_limitsIN2mt11ErrorTracerIfEEE3maxEv() local_unnamed_addr #2 align 2

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

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

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


; Effective O3 passes: GlobalOptPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass