; LLVM IR from gem5/gem5 :: src/base/cprintf.test.ll (ZN26CPrintf_FloatingPoint_Test8TestBodyEv)

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.testing::AssertionResult" = type { i8, %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::allocator" = type { i8 }
%"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 }

@.str.3 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [8 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

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

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(128)) #2 align 2

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) #3

; Function Attrs: nounwind
declare i32 @snprintf(ptr noundef, i64 noundef, ptr noundef, ...) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #2 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 #5

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

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

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

; 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 #6 align 2

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #7

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN26CPrintf_FloatingPoint_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 double, align 8
  %4 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"class.testing::AssertionResult", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator", align 1
  %14 = alloca %"class.testing::Message", align 8
  %15 = alloca %"class.testing::internal::AssertHelper", align 8
  %16 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %17 = alloca i32, align 4
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca ptr, align 8
  %20 = alloca %"class.testing::AssertionResult", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator", align 1
  %24 = alloca %"class.testing::Message", align 8
  %25 = alloca %"class.testing::internal::AssertHelper", align 8
  %26 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %27 = alloca i32, align 4
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca ptr, align 8
  %30 = alloca %"class.testing::AssertionResult", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator", align 1
  %34 = alloca %"class.testing::Message", align 8
  %35 = alloca %"class.testing::internal::AssertHelper", align 8
  %36 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %37 = alloca i32, align 4
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca ptr, align 8
  %40 = alloca %"class.testing::AssertionResult", align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator", align 1
  %44 = alloca %"class.testing::Message", align 8
  %45 = alloca %"class.testing::internal::AssertHelper", align 8
  %46 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %47 = alloca i32, align 4
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca ptr, align 8
  %50 = alloca %"class.testing::AssertionResult", align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator", align 1
  %54 = alloca %"class.testing::Message", align 8
  %55 = alloca %"class.testing::internal::AssertHelper", align 8
  %56 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %57 = alloca i32, align 4
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca ptr, align 8
  %60 = alloca %"class.testing::AssertionResult", align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::allocator", align 1
  %64 = alloca %"class.testing::Message", align 8
  %65 = alloca %"class.testing::internal::AssertHelper", align 8
  %66 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %67 = alloca i32, align 4
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca ptr, align 8
  %70 = alloca %"class.testing::AssertionResult", align 8
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::allocator", align 1
  %74 = alloca %"class.testing::Message", align 8
  %75 = alloca %"class.testing::internal::AssertHelper", align 8
  %76 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %77 = alloca i32, align 4
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca ptr, align 8
  %80 = alloca %"class.testing::AssertionResult", align 8
  %81 = alloca %"class.std::__cxx11::basic_string", align 8
  %82 = alloca %"class.std::__cxx11::basic_string", align 8
  %83 = alloca %"class.std::allocator", align 1
  %84 = alloca %"class.testing::Message", align 8
  %85 = alloca %"class.testing::internal::AssertHelper", align 8
  %86 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %87 = alloca i32, align 4
  %88 = alloca %"class.std::__cxx11::basic_string", align 8
  %89 = alloca ptr, align 8
  %90 = alloca %"class.testing::AssertionResult", align 8
  %91 = alloca %"class.std::__cxx11::basic_string", align 8
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca %"class.std::allocator", align 1
  %94 = alloca %"class.testing::Message", align 8
  %95 = alloca %"class.testing::internal::AssertHelper", align 8
  %96 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %97 = alloca i32, align 4
  %98 = alloca %"class.std::__cxx11::basic_string", align 8
  %99 = alloca ptr, align 8
  %100 = alloca %"class.testing::AssertionResult", align 8
  %101 = alloca %"class.std::__cxx11::basic_string", align 8
  %102 = alloca %"class.std::__cxx11::basic_string", align 8
  %103 = alloca %"class.std::allocator", align 1
  %104 = alloca %"class.testing::Message", align 8
  %105 = alloca %"class.testing::internal::AssertHelper", align 8
  %106 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %107 = alloca i32, align 4
  %108 = alloca %"class.std::__cxx11::basic_string", align 8
  %109 = alloca ptr, align 8
  %110 = alloca %"class.testing::AssertionResult", align 8
  %111 = alloca %"class.std::__cxx11::basic_string", align 8
  %112 = alloca %"class.std::__cxx11::basic_string", align 8
  %113 = alloca %"class.std::allocator", align 1
  %114 = alloca %"class.testing::Message", align 8
  %115 = alloca %"class.testing::internal::AssertHelper", align 8
  %116 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %117 = alloca i32, align 4
  %118 = alloca %"class.std::__cxx11::basic_string", align 8
  %119 = alloca ptr, align 8
  %120 = alloca %"class.testing::AssertionResult", align 8
  %121 = alloca %"class.std::__cxx11::basic_string", align 8
  %122 = alloca %"class.std::__cxx11::basic_string", align 8
  %123 = alloca %"class.std::allocator", align 1
  %124 = alloca %"class.testing::Message", align 8
  %125 = alloca %"class.testing::internal::AssertHelper", align 8
  %126 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %127 = alloca i32, align 4
  %128 = alloca %"class.std::__cxx11::basic_string", align 8
  %129 = alloca ptr, align 8
  %130 = alloca %"class.testing::AssertionResult", align 8
  %131 = alloca %"class.std::__cxx11::basic_string", align 8
  %132 = alloca %"class.std::__cxx11::basic_string", align 8
  %133 = alloca %"class.std::allocator", align 1
  %134 = alloca %"class.testing::Message", align 8
  %135 = alloca %"class.testing::internal::AssertHelper", align 8
  %136 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %137 = alloca i32, align 4
  %138 = alloca %"class.std::__cxx11::basic_string", align 8
  %139 = alloca ptr, align 8
  %140 = alloca %"class.testing::AssertionResult", align 8
  %141 = alloca %"class.std::__cxx11::basic_string", align 8
  %142 = alloca %"class.std::__cxx11::basic_string", align 8
  %143 = alloca %"class.std::allocator", align 1
  %144 = alloca %"class.testing::Message", align 8
  %145 = alloca %"class.testing::internal::AssertHelper", align 8
  %146 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %147 = alloca i32, align 4
  %148 = alloca %"class.std::__cxx11::basic_string", align 8
  %149 = alloca ptr, align 8
  %150 = alloca %"class.testing::AssertionResult", align 8
  %151 = alloca %"class.std::__cxx11::basic_string", align 8
  %152 = alloca %"class.std::__cxx11::basic_string", align 8
  %153 = alloca %"class.std::allocator", align 1
  %154 = alloca %"class.testing::Message", align 8
  %155 = alloca %"class.testing::internal::AssertHelper", align 8
  %156 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %157 = alloca i32, align 4
  %158 = alloca %"class.std::__cxx11::basic_string", align 8
  %159 = alloca ptr, align 8
  %160 = alloca %"class.testing::AssertionResult", align 8
  %161 = alloca %"class.std::__cxx11::basic_string", align 8
  %162 = alloca %"class.std::__cxx11::basic_string", align 8
  %163 = alloca %"class.std::allocator", align 1
  %164 = alloca %"class.testing::Message", align 8
  %165 = alloca %"class.testing::internal::AssertHelper", align 8
  %166 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %167 = alloca i32, align 4
  %168 = alloca %"class.std::__cxx11::basic_string", align 8
  %169 = alloca ptr, align 8
  %170 = alloca %"class.testing::AssertionResult", align 8
  %171 = alloca %"class.std::__cxx11::basic_string", align 8
  %172 = alloca %"class.std::__cxx11::basic_string", align 8
  %173 = alloca %"class.std::allocator", align 1
  %174 = alloca %"class.testing::Message", align 8
  %175 = alloca %"class.testing::internal::AssertHelper", align 8
  %176 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %177 = alloca i32, align 4
  %178 = alloca %"class.std::__cxx11::basic_string", align 8
  %179 = alloca ptr, align 8
  %180 = alloca %"class.testing::AssertionResult", align 8
  %181 = alloca %"class.std::__cxx11::basic_string", align 8
  %182 = alloca %"class.std::__cxx11::basic_string", align 8
  %183 = alloca %"class.std::allocator", align 1
  %184 = alloca %"class.testing::Message", align 8
  %185 = alloca %"class.testing::internal::AssertHelper", align 8
  %186 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %187 = alloca i32, align 4
  %188 = alloca %"class.std::__cxx11::basic_string", align 8
  %189 = alloca ptr, align 8
  %190 = alloca %"class.testing::AssertionResult", align 8
  %191 = alloca %"class.std::__cxx11::basic_string", align 8
  %192 = alloca %"class.std::__cxx11::basic_string", align 8
  %193 = alloca %"class.std::allocator", align 1
  %194 = alloca %"class.testing::Message", align 8
  %195 = alloca %"class.testing::internal::AssertHelper", align 8
  %196 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %197 = alloca i32, align 4
  %198 = alloca %"class.std::__cxx11::basic_string", align 8
  %199 = alloca ptr, align 8
  %200 = alloca %"class.testing::AssertionResult", align 8
  %201 = alloca %"class.std::__cxx11::basic_string", align 8
  %202 = alloca %"class.std::__cxx11::basic_string", align 8
  %203 = alloca %"class.std::allocator", align 1
  %204 = alloca %"class.testing::Message", align 8
  %205 = alloca %"class.testing::internal::AssertHelper", align 8
  %206 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %207 = alloca i32, align 4
  %208 = alloca %"class.std::__cxx11::basic_string", align 8
  %209 = alloca ptr, align 8
  %210 = alloca %"class.testing::AssertionResult", align 8
  %211 = alloca %"class.std::__cxx11::basic_string", align 8
  %212 = alloca %"class.std::__cxx11::basic_string", align 8
  %213 = alloca %"class.std::allocator", align 1
  %214 = alloca %"class.testing::Message", align 8
  %215 = alloca %"class.testing::internal::AssertHelper", align 8
  %216 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %217 = alloca i32, align 4
  %218 = alloca %"class.std::__cxx11::basic_string", align 8
  %219 = alloca ptr, align 8
  %220 = alloca %"class.testing::AssertionResult", align 8
  %221 = alloca %"class.std::__cxx11::basic_string", align 8
  %222 = alloca %"class.std::__cxx11::basic_string", align 8
  %223 = alloca %"class.std::allocator", align 1
  %224 = alloca %"class.testing::Message", align 8
  %225 = alloca %"class.testing::internal::AssertHelper", align 8
  %226 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %227 = alloca i32, align 4
  %228 = alloca %"class.std::__cxx11::basic_string", align 8
  %229 = alloca ptr, align 8
  %230 = alloca %"class.testing::AssertionResult", align 8
  %231 = alloca %"class.std::__cxx11::basic_string", align 8
  %232 = alloca %"class.std::__cxx11::basic_string", align 8
  %233 = alloca %"class.std::allocator", align 1
  %234 = alloca %"class.testing::Message", align 8
  %235 = alloca %"class.testing::internal::AssertHelper", align 8
  %236 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %237 = alloca i32, align 4
  %238 = alloca %"class.std::__cxx11::basic_string", align 8
  %239 = alloca ptr, align 8
  %240 = alloca %"class.testing::AssertionResult", align 8
  %241 = alloca %"class.std::__cxx11::basic_string", align 8
  %242 = alloca %"class.std::__cxx11::basic_string", align 8
  %243 = alloca %"class.std::allocator", align 1
  %244 = alloca %"class.testing::Message", align 8
  %245 = alloca %"class.testing::internal::AssertHelper", align 8
  %246 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %247 = alloca i32, align 4
  %248 = alloca %"class.std::__cxx11::basic_string", align 8
  %249 = alloca ptr, align 8
  %250 = alloca %"class.testing::AssertionResult", align 8
  %251 = alloca %"class.std::__cxx11::basic_string", align 8
  %252 = alloca %"class.std::__cxx11::basic_string", align 8
  %253 = alloca %"class.std::allocator", align 1
  %254 = alloca %"class.testing::Message", align 8
  %255 = alloca %"class.testing::internal::AssertHelper", align 8
  %256 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %257 = alloca i32, align 4
  %258 = alloca %"class.std::__cxx11::basic_string", align 8
  %259 = alloca ptr, align 8
  %260 = alloca %"class.testing::AssertionResult", align 8
  %261 = alloca %"class.std::__cxx11::basic_string", align 8
  %262 = alloca %"class.std::__cxx11::basic_string", align 8
  %263 = alloca %"class.std::allocator", align 1
  %264 = alloca %"class.testing::Message", align 8
  %265 = alloca %"class.testing::internal::AssertHelper", align 8
  %266 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %267 = alloca i32, align 4
  %268 = alloca %"class.std::__cxx11::basic_string", align 8
  %269 = alloca ptr, align 8
  %270 = alloca %"class.testing::AssertionResult", align 8
  %271 = alloca %"class.std::__cxx11::basic_string", align 8
  %272 = alloca %"class.std::__cxx11::basic_string", align 8
  %273 = alloca %"class.std::allocator", align 1
  %274 = alloca %"class.testing::Message", align 8
  %275 = alloca %"class.testing::internal::AssertHelper", align 8
  %276 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %277 = alloca i32, align 4
  %278 = alloca %"class.std::__cxx11::basic_string", align 8
  %279 = alloca ptr, align 8
  %280 = alloca %"class.testing::AssertionResult", align 8
  %281 = alloca %"class.std::__cxx11::basic_string", align 8
  %282 = alloca %"class.std::__cxx11::basic_string", align 8
  %283 = alloca %"class.std::allocator", align 1
  %284 = alloca %"class.testing::Message", align 8
  %285 = alloca %"class.testing::internal::AssertHelper", align 8
  %286 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %287 = alloca i32, align 4
  %288 = alloca %"class.std::__cxx11::basic_string", align 8
  %289 = alloca ptr, align 8
  %290 = alloca %"class.testing::AssertionResult", align 8
  %291 = alloca %"class.std::__cxx11::basic_string", align 8
  %292 = alloca %"class.std::__cxx11::basic_string", align 8
  %293 = alloca %"class.std::allocator", align 1
  %294 = alloca %"class.testing::Message", align 8
  %295 = alloca %"class.testing::internal::AssertHelper", align 8
  %296 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %297 = alloca i32, align 4
  %298 = alloca %"class.std::__cxx11::basic_string", align 8
  %299 = alloca ptr, align 8
  %300 = alloca %"class.testing::AssertionResult", align 8
  %301 = alloca %"class.std::__cxx11::basic_string", align 8
  %302 = alloca %"class.std::__cxx11::basic_string", align 8
  %303 = alloca %"class.std::allocator", align 1
  %304 = alloca %"class.testing::Message", align 8
  %305 = alloca %"class.testing::internal::AssertHelper", align 8
  %306 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %307 = alloca i32, align 4
  %308 = alloca %"class.std::__cxx11::basic_string", align 8
  %309 = alloca ptr, align 8
  %310 = alloca %"class.testing::AssertionResult", align 8
  %311 = alloca %"class.std::__cxx11::basic_string", align 8
  %312 = alloca %"class.std::__cxx11::basic_string", align 8
  %313 = alloca %"class.std::allocator", align 1
  %314 = alloca %"class.testing::Message", align 8
  %315 = alloca %"class.testing::internal::AssertHelper", align 8
  %316 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %317 = alloca i32, align 4
  %318 = alloca %"class.std::__cxx11::basic_string", align 8
  %319 = alloca ptr, align 8
  %320 = alloca %"class.testing::AssertionResult", align 8
  %321 = alloca %"class.std::__cxx11::basic_string", align 8
  %322 = alloca %"class.std::__cxx11::basic_string", align 8
  %323 = alloca %"class.std::allocator", align 1
  %324 = alloca %"class.testing::Message", align 8
  %325 = alloca %"class.testing::internal::AssertHelper", align 8
  %326 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %327 = alloca i32, align 4
  %328 = alloca %"class.std::__cxx11::basic_string", align 8
  %329 = alloca ptr, align 8
  %330 = alloca %"class.testing::AssertionResult", align 8
  %331 = alloca %"class.std::__cxx11::basic_string", align 8
  %332 = alloca %"class.std::__cxx11::basic_string", align 8
  %333 = alloca %"class.std::allocator", align 1
  %334 = alloca %"class.testing::Message", align 8
  %335 = alloca %"class.testing::internal::AssertHelper", align 8
  %336 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %337 = alloca i32, align 4
  %338 = alloca %"class.std::__cxx11::basic_string", align 8
  %339 = alloca ptr, align 8
  %340 = alloca %"class.testing::AssertionResult", align 8
  %341 = alloca %"class.std::__cxx11::basic_string", align 8
  %342 = alloca %"class.std::__cxx11::basic_string", align 8
  %343 = alloca %"class.std::allocator", align 1
  %344 = alloca %"class.testing::Message", align 8
  %345 = alloca %"class.testing::internal::AssertHelper", align 8
  %346 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %347 = alloca i32, align 4
  %348 = alloca %"class.std::__cxx11::basic_string", align 8
  %349 = alloca ptr, align 8
  %350 = alloca %"class.testing::AssertionResult", align 8
  %351 = alloca %"class.std::__cxx11::basic_string", align 8
  %352 = alloca %"class.std::__cxx11::basic_string", align 8
  %353 = alloca %"class.std::allocator", align 1
  %354 = alloca %"class.testing::Message", align 8
  %355 = alloca %"class.testing::internal::AssertHelper", align 8
  %356 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %357 = alloca i32, align 4
  %358 = alloca %"class.std::__cxx11::basic_string", align 8
  %359 = alloca ptr, align 8
  %360 = alloca %"class.testing::AssertionResult", align 8
  %361 = alloca %"class.std::__cxx11::basic_string", align 8
  %362 = alloca %"class.std::__cxx11::basic_string", align 8
  %363 = alloca %"class.std::allocator", align 1
  %364 = alloca %"class.testing::Message", align 8
  %365 = alloca %"class.testing::internal::AssertHelper", align 8
  %366 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %367 = alloca i32, align 4
  %368 = alloca %"class.std::__cxx11::basic_string", align 8
  %369 = alloca ptr, align 8
  %370 = alloca %"class.testing::AssertionResult", align 8
  %371 = alloca %"class.std::__cxx11::basic_string", align 8
  %372 = alloca %"class.std::__cxx11::basic_string", align 8
  %373 = alloca %"class.std::allocator", align 1
  %374 = alloca %"class.testing::Message", align 8
  %375 = alloca %"class.testing::internal::AssertHelper", align 8
  %376 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %377 = alloca i32, align 4
  %378 = alloca %"class.std::__cxx11::basic_string", align 8
  %379 = alloca ptr, align 8
  %380 = alloca %"class.testing::AssertionResult", align 8
  %381 = alloca %"class.std::__cxx11::basic_string", align 8
  %382 = alloca %"class.std::__cxx11::basic_string", align 8
  %383 = alloca %"class.std::allocator", align 1
  %384 = alloca %"class.testing::Message", align 8
  %385 = alloca %"class.testing::internal::AssertHelper", align 8
  %386 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %387 = alloca i32, align 4
  %388 = alloca %"class.std::__cxx11::basic_string", align 8
  %389 = alloca ptr, align 8
  %390 = alloca %"class.testing::AssertionResult", align 8
  %391 = alloca %"class.std::__cxx11::basic_string", align 8
  %392 = alloca %"class.std::__cxx11::basic_string", align 8
  %393 = alloca %"class.std::allocator", align 1
  %394 = alloca %"class.testing::Message", align 8
  %395 = alloca %"class.testing::internal::AssertHelper", align 8
  %396 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %397 = alloca i32, align 4
  %398 = alloca %"class.std::__cxx11::basic_string", align 8
  %399 = alloca ptr, align 8
  %400 = alloca %"class.testing::AssertionResult", align 8
  %401 = alloca %"class.std::__cxx11::basic_string", align 8
  %402 = alloca %"class.std::__cxx11::basic_string", align 8
  %403 = alloca %"class.std::allocator", align 1
  %404 = alloca %"class.testing::Message", align 8
  %405 = alloca %"class.testing::internal::AssertHelper", align 8
  %406 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %407 = alloca i32, align 4
  %408 = alloca %"class.std::__cxx11::basic_string", align 8
  %409 = alloca ptr, align 8
  %410 = alloca %"class.testing::AssertionResult", align 8
  %411 = alloca %"class.std::__cxx11::basic_string", align 8
  %412 = alloca %"class.std::__cxx11::basic_string", align 8
  %413 = alloca %"class.std::allocator", align 1
  %414 = alloca %"class.testing::Message", align 8
  %415 = alloca %"class.testing::internal::AssertHelper", align 8
  %416 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %417 = alloca i32, align 4
  %418 = alloca %"class.std::__cxx11::basic_string", align 8
  %419 = alloca ptr, align 8
  %420 = alloca %"class.testing::AssertionResult", align 8
  %421 = alloca %"class.std::__cxx11::basic_string", align 8
  %422 = alloca %"class.std::__cxx11::basic_string", align 8
  %423 = alloca %"class.std::allocator", align 1
  %424 = alloca %"class.testing::Message", align 8
  %425 = alloca %"class.testing::internal::AssertHelper", align 8
  %426 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %427 = alloca i32, align 4
  %428 = alloca %"class.std::__cxx11::basic_string", align 8
  %429 = alloca ptr, align 8
  %430 = alloca %"class.testing::AssertionResult", align 8
  %431 = alloca %"class.std::__cxx11::basic_string", align 8
  %432 = alloca %"class.std::__cxx11::basic_string", align 8
  %433 = alloca %"class.std::allocator", align 1
  %434 = alloca %"class.testing::Message", align 8
  %435 = alloca %"class.testing::internal::AssertHelper", align 8
  %436 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %437 = alloca i32, align 4
  %438 = alloca %"class.std::__cxx11::basic_string", align 8
  %439 = alloca ptr, align 8
  %440 = alloca %"class.testing::AssertionResult", align 8
  %441 = alloca %"class.std::__cxx11::basic_string", align 8
  %442 = alloca %"class.std::__cxx11::basic_string", align 8
  %443 = alloca %"class.std::allocator", align 1
  %444 = alloca %"class.testing::Message", align 8
  %445 = alloca %"class.testing::internal::AssertHelper", align 8
  %446 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %447 = alloca i32, align 4
  %448 = alloca %"class.std::__cxx11::basic_string", align 8
  %449 = alloca ptr, align 8
  %450 = alloca %"class.testing::AssertionResult", align 8
  %451 = alloca %"class.std::__cxx11::basic_string", align 8
  %452 = alloca %"class.std::__cxx11::basic_string", align 8
  %453 = alloca %"class.std::allocator", align 1
  %454 = alloca %"class.testing::Message", align 8
  %455 = alloca %"class.testing::internal::AssertHelper", align 8
  %456 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %457 = alloca i32, align 4
  %458 = alloca %"class.std::__cxx11::basic_string", align 8
  %459 = alloca ptr, align 8
  %460 = alloca %"class.testing::AssertionResult", align 8
  %461 = alloca %"class.std::__cxx11::basic_string", align 8
  %462 = alloca %"class.std::__cxx11::basic_string", align 8
  %463 = alloca %"class.std::allocator", align 1
  %464 = alloca %"class.testing::Message", align 8
  %465 = alloca %"class.testing::internal::AssertHelper", align 8
  %466 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %467 = alloca i32, align 4
  %468 = alloca %"class.std::__cxx11::basic_string", align 8
  %469 = alloca ptr, align 8
  %470 = alloca %"class.testing::AssertionResult", align 8
  %471 = alloca %"class.std::__cxx11::basic_string", align 8
  %472 = alloca %"class.std::__cxx11::basic_string", align 8
  %473 = alloca %"class.std::allocator", align 1
  %474 = alloca %"class.testing::Message", align 8
  %475 = alloca %"class.testing::internal::AssertHelper", align 8
  %476 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %477 = alloca i32, align 4
  %478 = alloca %"class.std::__cxx11::basic_string", align 8
  %479 = alloca ptr, align 8
  %480 = alloca %"class.testing::AssertionResult", align 8
  %481 = alloca %"class.std::__cxx11::basic_string", align 8
  %482 = alloca %"class.std::__cxx11::basic_string", align 8
  %483 = alloca %"class.std::allocator", align 1
  %484 = alloca %"class.testing::Message", align 8
  %485 = alloca %"class.testing::internal::AssertHelper", align 8
  %486 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %487 = alloca i32, align 4
  %488 = alloca %"class.std::__cxx11::basic_string", align 8
  %489 = alloca ptr, align 8
  %490 = alloca %"class.testing::AssertionResult", align 8
  %491 = alloca %"class.std::__cxx11::basic_string", align 8
  %492 = alloca %"class.std::__cxx11::basic_string", align 8
  %493 = alloca %"class.std::allocator", align 1
  %494 = alloca %"class.testing::Message", align 8
  %495 = alloca %"class.testing::internal::AssertHelper", align 8
  %496 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %497 = alloca i32, align 4
  %498 = alloca %"class.std::__cxx11::basic_string", align 8
  %499 = alloca ptr, align 8
  %500 = alloca %"class.testing::AssertionResult", align 8
  %501 = alloca %"class.std::__cxx11::basic_string", align 8
  %502 = alloca %"class.std::__cxx11::basic_string", align 8
  %503 = alloca %"class.std::allocator", align 1
  %504 = alloca %"class.testing::Message", align 8
  %505 = alloca %"class.testing::internal::AssertHelper", align 8
  %506 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %507 = alloca i32, align 4
  %508 = alloca %"class.std::__cxx11::basic_string", align 8
  %509 = alloca ptr, align 8
  %510 = alloca %"class.testing::AssertionResult", align 8
  %511 = alloca %"class.std::__cxx11::basic_string", align 8
  %512 = alloca %"class.std::__cxx11::basic_string", align 8
  %513 = alloca %"class.std::allocator", align 1
  %514 = alloca %"class.testing::Message", align 8
  %515 = alloca %"class.testing::internal::AssertHelper", align 8
  %516 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %517 = alloca i32, align 4
  %518 = alloca %"class.std::__cxx11::basic_string", align 8
  %519 = alloca ptr, align 8
  %520 = alloca %"class.testing::AssertionResult", align 8
  %521 = alloca %"class.std::__cxx11::basic_string", align 8
  %522 = alloca %"class.std::__cxx11::basic_string", align 8
  %523 = alloca %"class.std::allocator", align 1
  %524 = alloca %"class.testing::Message", align 8
  %525 = alloca %"class.testing::internal::AssertHelper", align 8
  %526 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %527 = alloca i32, align 4
  %528 = alloca %"class.std::__cxx11::basic_string", align 8
  %529 = alloca ptr, align 8
  %530 = alloca %"class.testing::AssertionResult", align 8
  %531 = alloca %"class.std::__cxx11::basic_string", align 8
  %532 = alloca %"class.std::__cxx11::basic_string", align 8
  %533 = alloca %"class.std::allocator", align 1
  %534 = alloca %"class.testing::Message", align 8
  %535 = alloca %"class.testing::internal::AssertHelper", align 8
  %536 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %537 = alloca i32, align 4
  %538 = alloca %"class.std::__cxx11::basic_string", align 8
  %539 = alloca ptr, align 8
  %540 = alloca %"class.testing::AssertionResult", align 8
  %541 = alloca %"class.std::__cxx11::basic_string", align 8
  %542 = alloca %"class.std::__cxx11::basic_string", align 8
  %543 = alloca %"class.std::allocator", align 1
  %544 = alloca %"class.testing::Message", align 8
  %545 = alloca %"class.testing::internal::AssertHelper", align 8
  %546 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %547 = alloca i32, align 4
  %548 = alloca %"class.std::__cxx11::basic_string", align 8
  %549 = alloca ptr, align 8
  %550 = alloca %"class.testing::AssertionResult", align 8
  %551 = alloca %"class.std::__cxx11::basic_string", align 8
  %552 = alloca %"class.std::__cxx11::basic_string", align 8
  %553 = alloca %"class.std::allocator", align 1
  %554 = alloca %"class.testing::Message", align 8
  %555 = alloca %"class.testing::internal::AssertHelper", align 8
  %556 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %557 = alloca i32, align 4
  %558 = alloca %"class.std::__cxx11::basic_string", align 8
  %559 = alloca ptr, align 8
  %560 = alloca %"class.testing::AssertionResult", align 8
  %561 = alloca %"class.std::__cxx11::basic_string", align 8
  %562 = alloca %"class.std::__cxx11::basic_string", align 8
  %563 = alloca %"class.std::allocator", align 1
  %564 = alloca %"class.testing::Message", align 8
  %565 = alloca %"class.testing::internal::AssertHelper", align 8
  %566 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %567 = alloca i32, align 4
  %568 = alloca %"class.std::__cxx11::basic_string", align 8
  %569 = alloca ptr, align 8
  %570 = alloca %"class.testing::AssertionResult", align 8
  %571 = alloca %"class.std::__cxx11::basic_string", align 8
  %572 = alloca %"class.std::__cxx11::basic_string", align 8
  %573 = alloca %"class.std::allocator", align 1
  %574 = alloca %"class.testing::Message", align 8
  %575 = alloca %"class.testing::internal::AssertHelper", align 8
  %576 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %577 = alloca i32, align 4
  %578 = alloca %"class.std::__cxx11::basic_string", align 8
  %579 = alloca ptr, align 8
  %580 = alloca %"class.testing::AssertionResult", align 8
  %581 = alloca %"class.std::__cxx11::basic_string", align 8
  %582 = alloca %"class.std::__cxx11::basic_string", align 8
  %583 = alloca %"class.std::allocator", align 1
  %584 = alloca %"class.testing::Message", align 8
  %585 = alloca %"class.testing::internal::AssertHelper", align 8
  %586 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %587 = alloca i32, align 4
  %588 = alloca %"class.std::__cxx11::basic_string", align 8
  %589 = alloca ptr, align 8
  %590 = alloca %"class.testing::AssertionResult", align 8
  %591 = alloca %"class.std::__cxx11::basic_string", align 8
  %592 = alloca %"class.std::__cxx11::basic_string", align 8
  %593 = alloca %"class.std::allocator", align 1
  %594 = alloca %"class.testing::Message", align 8
  %595 = alloca %"class.testing::internal::AssertHelper", align 8
  %596 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %597 = alloca i32, align 4
  %598 = alloca %"class.std::__cxx11::basic_string", align 8
  %599 = alloca ptr, align 8
  %600 = alloca %"class.testing::AssertionResult", align 8
  %601 = alloca %"class.std::__cxx11::basic_string", align 8
  %602 = alloca %"class.std::__cxx11::basic_string", align 8
  %603 = alloca %"class.std::allocator", align 1
  %604 = alloca %"class.testing::Message", align 8
  %605 = alloca %"class.testing::internal::AssertHelper", align 8
  %606 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %607 = alloca i32, align 4
  %608 = alloca %"class.std::__cxx11::basic_string", align 8
  %609 = alloca ptr, align 8
  %610 = alloca %"class.testing::AssertionResult", align 8
  %611 = alloca %"class.std::__cxx11::basic_string", align 8
  %612 = alloca %"class.std::__cxx11::basic_string", align 8
  %613 = alloca %"class.std::allocator", align 1
  %614 = alloca %"class.testing::Message", align 8
  %615 = alloca %"class.testing::internal::AssertHelper", align 8
  %616 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %617 = alloca i32, align 4
  %618 = alloca %"class.std::__cxx11::basic_string", align 8
  %619 = alloca ptr, align 8
  %620 = alloca %"class.testing::AssertionResult", align 8
  %621 = alloca %"class.std::__cxx11::basic_string", align 8
  %622 = alloca %"class.std::__cxx11::basic_string", align 8
  %623 = alloca %"class.std::allocator", align 1
  %624 = alloca %"class.testing::Message", align 8
  %625 = alloca %"class.testing::internal::AssertHelper", align 8
  %626 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %627 = alloca i32, align 4
  %628 = alloca %"class.std::__cxx11::basic_string", align 8
  %629 = alloca ptr, align 8
  %630 = alloca %"class.testing::AssertionResult", align 8
  %631 = alloca %"class.std::__cxx11::basic_string", align 8
  %632 = alloca %"class.std::__cxx11::basic_string", align 8
  %633 = alloca %"class.std::allocator", align 1
  %634 = alloca %"class.testing::Message", align 8
  %635 = alloca %"class.testing::internal::AssertHelper", align 8
  %636 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %637 = alloca i32, align 4
  %638 = alloca %"class.std::__cxx11::basic_string", align 8
  %639 = alloca ptr, align 8
  %640 = alloca %"class.testing::AssertionResult", align 8
  %641 = alloca %"class.std::__cxx11::basic_string", align 8
  %642 = alloca %"class.std::__cxx11::basic_string", align 8
  %643 = alloca %"class.std::allocator", align 1
  %644 = alloca %"class.testing::Message", align 8
  %645 = alloca %"class.testing::internal::AssertHelper", align 8
  %646 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %647 = alloca i32, align 4
  %648 = alloca %"class.std::__cxx11::basic_string", align 8
  %649 = alloca ptr, align 8
  %650 = alloca %"class.testing::AssertionResult", align 8
  %651 = alloca %"class.std::__cxx11::basic_string", align 8
  %652 = alloca %"class.std::__cxx11::basic_string", align 8
  %653 = alloca %"class.std::allocator", align 1
  %654 = alloca %"class.testing::Message", align 8
  %655 = alloca %"class.testing::internal::AssertHelper", align 8
  %656 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %657 = alloca i32, align 4
  %658 = alloca %"class.std::__cxx11::basic_string", align 8
  %659 = alloca ptr, align 8
  %660 = alloca %"class.testing::AssertionResult", align 8
  %661 = alloca %"class.std::__cxx11::basic_string", align 8
  %662 = alloca %"class.std::__cxx11::basic_string", align 8
  %663 = alloca %"class.std::allocator", align 1
  %664 = alloca %"class.testing::Message", align 8
  %665 = alloca %"class.testing::internal::AssertHelper", align 8
  %666 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %667 = alloca i32, align 4
  %668 = alloca %"class.std::__cxx11::basic_string", align 8
  %669 = alloca ptr, align 8
  %670 = alloca %"class.testing::AssertionResult", align 8
  %671 = alloca %"class.std::__cxx11::basic_string", align 8
  %672 = alloca %"class.std::__cxx11::basic_string", align 8
  %673 = alloca %"class.std::allocator", align 1
  %674 = alloca %"class.testing::Message", align 8
  %675 = alloca %"class.testing::internal::AssertHelper", align 8
  %676 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %677 = alloca i32, align 4
  %678 = alloca %"class.std::__cxx11::basic_string", align 8
  %679 = alloca ptr, align 8
  %680 = alloca %"class.testing::AssertionResult", align 8
  %681 = alloca %"class.std::__cxx11::basic_string", align 8
  %682 = alloca %"class.std::__cxx11::basic_string", align 8
  %683 = alloca %"class.std::allocator", align 1
  %684 = alloca %"class.testing::Message", align 8
  %685 = alloca %"class.testing::internal::AssertHelper", align 8
  %686 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %687 = alloca i32, align 4
  %688 = alloca %"class.std::__cxx11::basic_string", align 8
  %689 = alloca ptr, align 8
  %690 = alloca %"class.testing::AssertionResult", align 8
  %691 = alloca %"class.std::__cxx11::basic_string", align 8
  %692 = alloca %"class.std::__cxx11::basic_string", align 8
  %693 = alloca %"class.std::allocator", align 1
  %694 = alloca %"class.testing::Message", align 8
  %695 = alloca %"class.testing::internal::AssertHelper", align 8
  %696 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %697 = alloca i32, align 4
  %698 = alloca %"class.std::__cxx11::basic_string", align 8
  %699 = alloca ptr, align 8
  %700 = alloca %"class.testing::AssertionResult", align 8
  %701 = alloca %"class.std::__cxx11::basic_string", align 8
  %702 = alloca %"class.std::__cxx11::basic_string", align 8
  %703 = alloca %"class.std::allocator", align 1
  %704 = alloca %"class.testing::Message", align 8
  %705 = alloca %"class.testing::internal::AssertHelper", align 8
  %706 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %707 = alloca i32, align 4
  %708 = alloca %"class.std::__cxx11::basic_string", align 8
  %709 = alloca ptr, align 8
  %710 = alloca %"class.testing::AssertionResult", align 8
  %711 = alloca %"class.std::__cxx11::basic_string", align 8
  %712 = alloca %"class.std::__cxx11::basic_string", align 8
  %713 = alloca %"class.std::allocator", align 1
  %714 = alloca %"class.testing::Message", align 8
  %715 = alloca %"class.testing::internal::AssertHelper", align 8
  %716 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %717 = alloca i32, align 4
  %718 = alloca %"class.std::__cxx11::basic_string", align 8
  %719 = alloca ptr, align 8
  %720 = alloca %"class.testing::AssertionResult", align 8
  %721 = alloca %"class.std::__cxx11::basic_string", align 8
  %722 = alloca %"class.std::__cxx11::basic_string", align 8
  %723 = alloca %"class.std::allocator", align 1
  %724 = alloca %"class.testing::Message", align 8
  %725 = alloca %"class.testing::internal::AssertHelper", align 8
  %726 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %727 = alloca i32, align 4
  %728 = alloca %"class.std::__cxx11::basic_string", align 8
  %729 = alloca ptr, align 8
  %730 = alloca %"class.testing::AssertionResult", align 8
  %731 = alloca %"class.std::__cxx11::basic_string", align 8
  %732 = alloca %"class.std::__cxx11::basic_string", align 8
  %733 = alloca %"class.std::allocator", align 1
  %734 = alloca %"class.testing::Message", align 8
  %735 = alloca %"class.testing::internal::AssertHelper", align 8
  %736 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %737 = alloca i32, align 4
  %738 = alloca %"class.std::__cxx11::basic_string", align 8
  %739 = alloca ptr, align 8
  %740 = alloca %"class.testing::AssertionResult", align 8
  %741 = alloca %"class.std::__cxx11::basic_string", align 8
  %742 = alloca %"class.std::__cxx11::basic_string", align 8
  %743 = alloca %"class.std::allocator", align 1
  %744 = alloca %"class.testing::Message", align 8
  %745 = alloca %"class.testing::internal::AssertHelper", align 8
  %746 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %747 = alloca i32, align 4
  %748 = alloca %"class.std::__cxx11::basic_string", align 8
  %749 = alloca ptr, align 8
  %750 = alloca %"class.testing::AssertionResult", align 8
  %751 = alloca %"class.std::__cxx11::basic_string", align 8
  %752 = alloca %"class.std::__cxx11::basic_string", align 8
  %753 = alloca %"class.std::allocator", align 1
  %754 = alloca %"class.testing::Message", align 8
  %755 = alloca %"class.testing::internal::AssertHelper", align 8
  %756 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %757 = alloca i32, align 4
  %758 = alloca %"class.std::__cxx11::basic_string", align 8
  %759 = alloca ptr, align 8
  %760 = alloca %"class.testing::AssertionResult", align 8
  %761 = alloca %"class.std::__cxx11::basic_string", align 8
  %762 = alloca %"class.std::__cxx11::basic_string", align 8
  %763 = alloca %"class.std::allocator", align 1
  %764 = alloca %"class.testing::Message", align 8
  %765 = alloca %"class.testing::internal::AssertHelper", align 8
  %766 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %767 = alloca i32, align 4
  %768 = alloca %"class.std::__cxx11::basic_string", align 8
  %769 = alloca ptr, align 8
  %770 = alloca %"class.testing::AssertionResult", align 8
  %771 = alloca %"class.std::__cxx11::basic_string", align 8
  %772 = alloca %"class.std::__cxx11::basic_string", align 8
  %773 = alloca %"class.std::allocator", align 1
  %774 = alloca %"class.testing::Message", align 8
  %775 = alloca %"class.testing::internal::AssertHelper", align 8
  %776 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %777 = alloca i32, align 4
  %778 = alloca %"class.std::__cxx11::basic_string", align 8
  %779 = alloca ptr, align 8
  %780 = alloca %"class.testing::AssertionResult", align 8
  %781 = alloca %"class.std::__cxx11::basic_string", align 8
  %782 = alloca %"class.std::__cxx11::basic_string", align 8
  %783 = alloca %"class.std::allocator", align 1
  %784 = alloca %"class.testing::Message", align 8
  %785 = alloca %"class.testing::internal::AssertHelper", align 8
  %786 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %787 = alloca i32, align 4
  %788 = alloca %"class.std::__cxx11::basic_string", align 8
  %789 = alloca ptr, align 8
  %790 = alloca %"class.testing::AssertionResult", align 8
  %791 = alloca %"class.std::__cxx11::basic_string", align 8
  %792 = alloca %"class.std::__cxx11::basic_string", align 8
  %793 = alloca %"class.std::allocator", align 1
  %794 = alloca %"class.testing::Message", align 8
  %795 = alloca %"class.testing::internal::AssertHelper", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %796 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #8
  store double 0x41132CBD0FBA43A8, ptr %3, align 8, !tbaa !9
  br label %797

797:                                              ; preds = %1
  call void @llvm.lifetime.start.p0(i64 392, ptr %4) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %4)
  %798 = getelementptr inbounds i8, ptr %4, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %798, ptr noundef @.str.16, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %799 unwind label %826

799:                                              ; preds = %797
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %8) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(128) %4)
          to label %800 unwind label %830

800:                                              ; preds = %799
  %801 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  %802 = add i64 %801, 3
  %803 = trunc i64 %802 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #8
  store i32 %803, ptr %7, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %804 = load i32, ptr %7, align 4, !tbaa !11
  %805 = sext i32 %804 to i64
  %806 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %805) #9
          to label %807 unwind label %834

807:                                              ; preds = %800
  store ptr %806, ptr %9, align 8, !tbaa !5
  %808 = load ptr, ptr %9, align 8, !tbaa !5
  %809 = load i32, ptr %7, align 4, !tbaa !11
  %810 = sub nsw i32 %809, 1
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds i8, ptr %808, i64 %811
  store i8 0, ptr %812, align 1, !tbaa !13
  %813 = load ptr, ptr %9, align 8, !tbaa !5
  %814 = load i32, ptr %7, align 4, !tbaa !11
  %815 = sub nsw i32 %814, 2
  %816 = sext i32 %815 to i64
  %817 = load double, ptr %3, align 8, !tbaa !9
  %818 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %813, i64 noundef %816, ptr noundef @.str.16, double noundef %817) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(128) %4)
          to label %819 unwind label %838

819:                                              ; preds = %807
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #8
  %820 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef %820, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %821 unwind label %842

821:                                              ; preds = %819
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %10, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %822 unwind label %846

822:                                              ; preds = %821
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #8
  %823 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %824 unwind label %852

824:                                              ; preds = %822
  br i1 %823, label %825, label %856

825:                                              ; preds = %824
  br label %876

826:                                              ; preds = %797
  %827 = landingpad { ptr, i32 }
          cleanup
  %828 = extractvalue { ptr, i32 } %827, 0
  store ptr %828, ptr %5, align 8
  %829 = extractvalue { ptr, i32 } %827, 1
  store i32 %829, ptr %6, align 4
  br label %916

830:                                              ; preds = %799
  %831 = landingpad { ptr, i32 }
          cleanup
  %832 = extractvalue { ptr, i32 } %831, 0
  store ptr %832, ptr %5, align 8
  %833 = extractvalue { ptr, i32 } %831, 1
  store i32 %833, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #8
  br label %915

834:                                              ; preds = %800
  %835 = landingpad { ptr, i32 }
          cleanup
  %836 = extractvalue { ptr, i32 } %835, 0
  store ptr %836, ptr %5, align 8
  %837 = extractvalue { ptr, i32 } %835, 1
  store i32 %837, ptr %6, align 4
  br label %914

838:                                              ; preds = %807
  %839 = landingpad { ptr, i32 }
          cleanup
  %840 = extractvalue { ptr, i32 } %839, 0
  store ptr %840, ptr %5, align 8
  %841 = extractvalue { ptr, i32 } %839, 1
  store i32 %841, ptr %6, align 4
  br label %851

842:                                              ; preds = %819
  %843 = landingpad { ptr, i32 }
          cleanup
  %844 = extractvalue { ptr, i32 } %843, 0
  store ptr %844, ptr %5, align 8
  %845 = extractvalue { ptr, i32 } %843, 1
  store i32 %845, ptr %6, align 4
  br label %850

846:                                              ; preds = %821
  %847 = landingpad { ptr, i32 }
          cleanup
  %848 = extractvalue { ptr, i32 } %847, 0
  store ptr %848, ptr %5, align 8
  %849 = extractvalue { ptr, i32 } %847, 1
  store i32 %849, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  br label %850

850:                                              ; preds = %846, %842
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  br label %851

851:                                              ; preds = %850, %838
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #8
  br label %913

852:                                              ; preds = %822
  %853 = landingpad { ptr, i32 }
          cleanup
  %854 = extractvalue { ptr, i32 } %853, 0
  store ptr %854, ptr %5, align 8
  %855 = extractvalue { ptr, i32 } %853, 1
  store i32 %855, ptr %6, align 4
  br label %912

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

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

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

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

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

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

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

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

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

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

876:                                              ; preds = %861, %825
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #8
  %877 = load ptr, ptr %9, align 8, !tbaa !5
  %878 = icmp eq ptr %877, null
  br i1 %878, label %880, label %879

879:                                              ; preds = %876
  call void @_ZdaPv(ptr noundef %877) #10
  br label %880

880:                                              ; preds = %879, %876
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %4) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %4) #8
  br label %881

881:                                              ; preds = %880
  br label %882

882:                                              ; preds = %881
  br label %883

883:                                              ; preds = %882
  call void @llvm.lifetime.start.p0(i64 392, ptr %16) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %16)
  %884 = getelementptr inbounds i8, ptr %16, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %884, ptr noundef @.str.17, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %885 unwind label %917

885:                                              ; preds = %883
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(128) %16)
          to label %886 unwind label %921

886:                                              ; preds = %885
  %887 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  %888 = add i64 %887, 3
  %889 = trunc i64 %888 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #8
  store i32 %889, ptr %17, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  %890 = load i32, ptr %17, align 4, !tbaa !11
  %891 = sext i32 %890 to i64
  %892 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %891) #9
          to label %893 unwind label %925

893:                                              ; preds = %886
  store ptr %892, ptr %19, align 8, !tbaa !5
  %894 = load ptr, ptr %19, align 8, !tbaa !5
  %895 = load i32, ptr %17, align 4, !tbaa !11
  %896 = sub nsw i32 %895, 1
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds i8, ptr %894, i64 %897
  store i8 0, ptr %898, align 1, !tbaa !13
  %899 = load ptr, ptr %19, align 8, !tbaa !5
  %900 = load i32, ptr %17, align 4, !tbaa !11
  %901 = sub nsw i32 %900, 2
  %902 = sext i32 %901 to i64
  %903 = load double, ptr %3, align 8, !tbaa !9
  %904 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %899, i64 noundef %902, ptr noundef @.str.17, double noundef %903) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(128) %16)
          to label %905 unwind label %929

905:                                              ; preds = %893
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #8
  %906 = load ptr, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef %906, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %907 unwind label %933

907:                                              ; preds = %905
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %20, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %908 unwind label %937

908:                                              ; preds = %907
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #8
  %909 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %910 unwind label %943

910:                                              ; preds = %908
  br i1 %909, label %911, label %947

911:                                              ; preds = %910
  br label %967

912:                                              ; preds = %875, %852
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #8
  br label %913

913:                                              ; preds = %912, %851
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #8
  br label %914

914:                                              ; preds = %913, %834
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  br label %915

915:                                              ; preds = %914, %830
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  br label %916

916:                                              ; preds = %915, %826
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %4) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %4) #8
  br label %7986

917:                                              ; preds = %883
  %918 = landingpad { ptr, i32 }
          cleanup
  %919 = extractvalue { ptr, i32 } %918, 0
  store ptr %919, ptr %5, align 8
  %920 = extractvalue { ptr, i32 } %918, 1
  store i32 %920, ptr %6, align 4
  br label %1007

921:                                              ; preds = %885
  %922 = landingpad { ptr, i32 }
          cleanup
  %923 = extractvalue { ptr, i32 } %922, 0
  store ptr %923, ptr %5, align 8
  %924 = extractvalue { ptr, i32 } %922, 1
  store i32 %924, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #8
  br label %1006

925:                                              ; preds = %886
  %926 = landingpad { ptr, i32 }
          cleanup
  %927 = extractvalue { ptr, i32 } %926, 0
  store ptr %927, ptr %5, align 8
  %928 = extractvalue { ptr, i32 } %926, 1
  store i32 %928, ptr %6, align 4
  br label %1005

929:                                              ; preds = %893
  %930 = landingpad { ptr, i32 }
          cleanup
  %931 = extractvalue { ptr, i32 } %930, 0
  store ptr %931, ptr %5, align 8
  %932 = extractvalue { ptr, i32 } %930, 1
  store i32 %932, ptr %6, align 4
  br label %942

933:                                              ; preds = %905
  %934 = landingpad { ptr, i32 }
          cleanup
  %935 = extractvalue { ptr, i32 } %934, 0
  store ptr %935, ptr %5, align 8
  %936 = extractvalue { ptr, i32 } %934, 1
  store i32 %936, ptr %6, align 4
  br label %941

937:                                              ; preds = %907
  %938 = landingpad { ptr, i32 }
          cleanup
  %939 = extractvalue { ptr, i32 } %938, 0
  store ptr %939, ptr %5, align 8
  %940 = extractvalue { ptr, i32 } %938, 1
  store i32 %940, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  br label %941

941:                                              ; preds = %937, %933
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %942

942:                                              ; preds = %941, %929
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #8
  br label %1004

943:                                              ; preds = %908
  %944 = landingpad { ptr, i32 }
          cleanup
  %945 = extractvalue { ptr, i32 } %944, 0
  store ptr %945, ptr %5, align 8
  %946 = extractvalue { ptr, i32 } %944, 1
  store i32 %946, ptr %6, align 4
  br label %1003

947:                                              ; preds = %910
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %948 unwind label %953

948:                                              ; preds = %947
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %949 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %950 unwind label %957

950:                                              ; preds = %948
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %25, i32 noundef 1, ptr noundef @.str.3, i32 noundef 74, ptr noundef %949)
          to label %951 unwind label %957

951:                                              ; preds = %950
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %952 unwind label %961

952:                                              ; preds = %951
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %967

953:                                              ; preds = %947
  %954 = landingpad { ptr, i32 }
          cleanup
  %955 = extractvalue { ptr, i32 } %954, 0
  store ptr %955, ptr %5, align 8
  %956 = extractvalue { ptr, i32 } %954, 1
  store i32 %956, ptr %6, align 4
  br label %966

957:                                              ; preds = %950, %948
  %958 = landingpad { ptr, i32 }
          cleanup
  %959 = extractvalue { ptr, i32 } %958, 0
  store ptr %959, ptr %5, align 8
  %960 = extractvalue { ptr, i32 } %958, 1
  store i32 %960, ptr %6, align 4
  br label %965

961:                                              ; preds = %951
  %962 = landingpad { ptr, i32 }
          cleanup
  %963 = extractvalue { ptr, i32 } %962, 0
  store ptr %963, ptr %5, align 8
  %964 = extractvalue { ptr, i32 } %962, 1
  store i32 %964, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  br label %965

965:                                              ; preds = %961, %957
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  br label %966

966:                                              ; preds = %965, %953
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %1003

967:                                              ; preds = %952, %911
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #8
  %968 = load ptr, ptr %19, align 8, !tbaa !5
  %969 = icmp eq ptr %968, null
  br i1 %969, label %971, label %970

970:                                              ; preds = %967
  call void @_ZdaPv(ptr noundef %968) #10
  br label %971

971:                                              ; preds = %970, %967
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %16) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %16) #8
  br label %972

972:                                              ; preds = %971
  br label %973

973:                                              ; preds = %972
  br label %974

974:                                              ; preds = %973
  call void @llvm.lifetime.start.p0(i64 392, ptr %26) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %26)
  %975 = getelementptr inbounds i8, ptr %26, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %975, ptr noundef @.str.18, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %976 unwind label %1008

976:                                              ; preds = %974
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 8 dereferenceable(128) %26)
          to label %977 unwind label %1012

977:                                              ; preds = %976
  %978 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  %979 = add i64 %978, 3
  %980 = trunc i64 %979 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  store i32 %980, ptr %27, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %981 = load i32, ptr %27, align 4, !tbaa !11
  %982 = sext i32 %981 to i64
  %983 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %982) #9
          to label %984 unwind label %1016

984:                                              ; preds = %977
  store ptr %983, ptr %29, align 8, !tbaa !5
  %985 = load ptr, ptr %29, align 8, !tbaa !5
  %986 = load i32, ptr %27, align 4, !tbaa !11
  %987 = sub nsw i32 %986, 1
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds i8, ptr %985, i64 %988
  store i8 0, ptr %989, align 1, !tbaa !13
  %990 = load ptr, ptr %29, align 8, !tbaa !5
  %991 = load i32, ptr %27, align 4, !tbaa !11
  %992 = sub nsw i32 %991, 2
  %993 = sext i32 %992 to i64
  %994 = load double, ptr %3, align 8, !tbaa !9
  %995 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %990, i64 noundef %993, ptr noundef @.str.18, double noundef %994) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(128) %26)
          to label %996 unwind label %1020

996:                                              ; preds = %984
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #8
  %997 = load ptr, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef %997, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %998 unwind label %1024

998:                                              ; preds = %996
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %30, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %999 unwind label %1028

999:                                              ; preds = %998
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #8
  %1000 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %1001 unwind label %1034

1001:                                             ; preds = %999
  br i1 %1000, label %1002, label %1038

1002:                                             ; preds = %1001
  br label %1058

1003:                                             ; preds = %966, %943
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #8
  br label %1004

1004:                                             ; preds = %1003, %942
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #8
  br label %1005

1005:                                             ; preds = %1004, %925
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  br label %1006

1006:                                             ; preds = %1005, %921
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  br label %1007

1007:                                             ; preds = %1006, %917
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %16) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %16) #8
  br label %7986

1008:                                             ; preds = %974
  %1009 = landingpad { ptr, i32 }
          cleanup
  %1010 = extractvalue { ptr, i32 } %1009, 0
  store ptr %1010, ptr %5, align 8
  %1011 = extractvalue { ptr, i32 } %1009, 1
  store i32 %1011, ptr %6, align 4
  br label %1098

1012:                                             ; preds = %976
  %1013 = landingpad { ptr, i32 }
          cleanup
  %1014 = extractvalue { ptr, i32 } %1013, 0
  store ptr %1014, ptr %5, align 8
  %1015 = extractvalue { ptr, i32 } %1013, 1
  store i32 %1015, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  br label %1097

1016:                                             ; preds = %977
  %1017 = landingpad { ptr, i32 }
          cleanup
  %1018 = extractvalue { ptr, i32 } %1017, 0
  store ptr %1018, ptr %5, align 8
  %1019 = extractvalue { ptr, i32 } %1017, 1
  store i32 %1019, ptr %6, align 4
  br label %1096

1020:                                             ; preds = %984
  %1021 = landingpad { ptr, i32 }
          cleanup
  %1022 = extractvalue { ptr, i32 } %1021, 0
  store ptr %1022, ptr %5, align 8
  %1023 = extractvalue { ptr, i32 } %1021, 1
  store i32 %1023, ptr %6, align 4
  br label %1033

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

1028:                                             ; preds = %998
  %1029 = landingpad { ptr, i32 }
          cleanup
  %1030 = extractvalue { ptr, i32 } %1029, 0
  store ptr %1030, ptr %5, align 8
  %1031 = extractvalue { ptr, i32 } %1029, 1
  store i32 %1031, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  br label %1032

1032:                                             ; preds = %1028, %1024
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  br label %1033

1033:                                             ; preds = %1032, %1020
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #8
  br label %1095

1034:                                             ; preds = %999
  %1035 = landingpad { ptr, i32 }
          cleanup
  %1036 = extractvalue { ptr, i32 } %1035, 0
  store ptr %1036, ptr %5, align 8
  %1037 = extractvalue { ptr, i32 } %1035, 1
  store i32 %1037, ptr %6, align 4
  br label %1094

1038:                                             ; preds = %1001
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %1039 unwind label %1044

1039:                                             ; preds = %1038
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %1040 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %1041 unwind label %1048

1041:                                             ; preds = %1039
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %35, i32 noundef 1, ptr noundef @.str.3, i32 noundef 75, ptr noundef %1040)
          to label %1042 unwind label %1048

1042:                                             ; preds = %1041
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %1043 unwind label %1052

1043:                                             ; preds = %1042
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  br label %1058

1044:                                             ; preds = %1038
  %1045 = landingpad { ptr, i32 }
          cleanup
  %1046 = extractvalue { ptr, i32 } %1045, 0
  store ptr %1046, ptr %5, align 8
  %1047 = extractvalue { ptr, i32 } %1045, 1
  store i32 %1047, ptr %6, align 4
  br label %1057

1048:                                             ; preds = %1041, %1039
  %1049 = landingpad { ptr, i32 }
          cleanup
  %1050 = extractvalue { ptr, i32 } %1049, 0
  store ptr %1050, ptr %5, align 8
  %1051 = extractvalue { ptr, i32 } %1049, 1
  store i32 %1051, ptr %6, align 4
  br label %1056

1052:                                             ; preds = %1042
  %1053 = landingpad { ptr, i32 }
          cleanup
  %1054 = extractvalue { ptr, i32 } %1053, 0
  store ptr %1054, ptr %5, align 8
  %1055 = extractvalue { ptr, i32 } %1053, 1
  store i32 %1055, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  br label %1056

1056:                                             ; preds = %1052, %1048
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  br label %1057

1057:                                             ; preds = %1056, %1044
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  br label %1094

1058:                                             ; preds = %1043, %1002
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #8
  %1059 = load ptr, ptr %29, align 8, !tbaa !5
  %1060 = icmp eq ptr %1059, null
  br i1 %1060, label %1062, label %1061

1061:                                             ; preds = %1058
  call void @_ZdaPv(ptr noundef %1059) #10
  br label %1062

1062:                                             ; preds = %1061, %1058
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %26) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %26) #8
  br label %1063

1063:                                             ; preds = %1062
  br label %1064

1064:                                             ; preds = %1063
  br label %1065

1065:                                             ; preds = %1064
  call void @llvm.lifetime.start.p0(i64 392, ptr %36) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %36)
  %1066 = getelementptr inbounds i8, ptr %36, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1066, ptr noundef @.str.19, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %1067 unwind label %1099

1067:                                             ; preds = %1065
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef nonnull align 8 dereferenceable(128) %36)
          to label %1068 unwind label %1103

1068:                                             ; preds = %1067
  %1069 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  %1070 = add i64 %1069, 3
  %1071 = trunc i64 %1070 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  store i32 %1071, ptr %37, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %1072 = load i32, ptr %37, align 4, !tbaa !11
  %1073 = sext i32 %1072 to i64
  %1074 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1073) #9
          to label %1075 unwind label %1107

1075:                                             ; preds = %1068
  store ptr %1074, ptr %39, align 8, !tbaa !5
  %1076 = load ptr, ptr %39, align 8, !tbaa !5
  %1077 = load i32, ptr %37, align 4, !tbaa !11
  %1078 = sub nsw i32 %1077, 1
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds i8, ptr %1076, i64 %1079
  store i8 0, ptr %1080, align 1, !tbaa !13
  %1081 = load ptr, ptr %39, align 8, !tbaa !5
  %1082 = load i32, ptr %37, align 4, !tbaa !11
  %1083 = sub nsw i32 %1082, 2
  %1084 = sext i32 %1083 to i64
  %1085 = load double, ptr %3, align 8, !tbaa !9
  %1086 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1081, i64 noundef %1084, ptr noundef @.str.19, double noundef %1085) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull align 8 dereferenceable(128) %36)
          to label %1087 unwind label %1111

1087:                                             ; preds = %1075
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #8
  %1088 = load ptr, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef %1088, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %1089 unwind label %1115

1089:                                             ; preds = %1087
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %40, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %1090 unwind label %1119

1090:                                             ; preds = %1089
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #8
  %1091 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %40)
          to label %1092 unwind label %1125

1092:                                             ; preds = %1090
  br i1 %1091, label %1093, label %1129

1093:                                             ; preds = %1092
  br label %1149

1094:                                             ; preds = %1057, %1034
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #8
  br label %1095

1095:                                             ; preds = %1094, %1033
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #8
  br label %1096

1096:                                             ; preds = %1095, %1016
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %1097

1097:                                             ; preds = %1096, %1012
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  br label %1098

1098:                                             ; preds = %1097, %1008
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %26) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %26) #8
  br label %7986

1099:                                             ; preds = %1065
  %1100 = landingpad { ptr, i32 }
          cleanup
  %1101 = extractvalue { ptr, i32 } %1100, 0
  store ptr %1101, ptr %5, align 8
  %1102 = extractvalue { ptr, i32 } %1100, 1
  store i32 %1102, ptr %6, align 4
  br label %1189

1103:                                             ; preds = %1067
  %1104 = landingpad { ptr, i32 }
          cleanup
  %1105 = extractvalue { ptr, i32 } %1104, 0
  store ptr %1105, ptr %5, align 8
  %1106 = extractvalue { ptr, i32 } %1104, 1
  store i32 %1106, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  br label %1188

1107:                                             ; preds = %1068
  %1108 = landingpad { ptr, i32 }
          cleanup
  %1109 = extractvalue { ptr, i32 } %1108, 0
  store ptr %1109, ptr %5, align 8
  %1110 = extractvalue { ptr, i32 } %1108, 1
  store i32 %1110, ptr %6, align 4
  br label %1187

1111:                                             ; preds = %1075
  %1112 = landingpad { ptr, i32 }
          cleanup
  %1113 = extractvalue { ptr, i32 } %1112, 0
  store ptr %1113, ptr %5, align 8
  %1114 = extractvalue { ptr, i32 } %1112, 1
  store i32 %1114, ptr %6, align 4
  br label %1124

1115:                                             ; preds = %1087
  %1116 = landingpad { ptr, i32 }
          cleanup
  %1117 = extractvalue { ptr, i32 } %1116, 0
  store ptr %1117, ptr %5, align 8
  %1118 = extractvalue { ptr, i32 } %1116, 1
  store i32 %1118, ptr %6, align 4
  br label %1123

1119:                                             ; preds = %1089
  %1120 = landingpad { ptr, i32 }
          cleanup
  %1121 = extractvalue { ptr, i32 } %1120, 0
  store ptr %1121, ptr %5, align 8
  %1122 = extractvalue { ptr, i32 } %1120, 1
  store i32 %1122, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  br label %1123

1123:                                             ; preds = %1119, %1115
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  br label %1124

1124:                                             ; preds = %1123, %1111
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #8
  br label %1186

1125:                                             ; preds = %1090
  %1126 = landingpad { ptr, i32 }
          cleanup
  %1127 = extractvalue { ptr, i32 } %1126, 0
  store ptr %1127, ptr %5, align 8
  %1128 = extractvalue { ptr, i32 } %1126, 1
  store i32 %1128, ptr %6, align 4
  br label %1185

1129:                                             ; preds = %1092
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %1130 unwind label %1135

1130:                                             ; preds = %1129
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %1131 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %40)
          to label %1132 unwind label %1139

1132:                                             ; preds = %1130
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %45, i32 noundef 1, ptr noundef @.str.3, i32 noundef 76, ptr noundef %1131)
          to label %1133 unwind label %1139

1133:                                             ; preds = %1132
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %1134 unwind label %1143

1134:                                             ; preds = %1133
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %1149

1135:                                             ; preds = %1129
  %1136 = landingpad { ptr, i32 }
          cleanup
  %1137 = extractvalue { ptr, i32 } %1136, 0
  store ptr %1137, ptr %5, align 8
  %1138 = extractvalue { ptr, i32 } %1136, 1
  store i32 %1138, ptr %6, align 4
  br label %1148

1139:                                             ; preds = %1132, %1130
  %1140 = landingpad { ptr, i32 }
          cleanup
  %1141 = extractvalue { ptr, i32 } %1140, 0
  store ptr %1141, ptr %5, align 8
  %1142 = extractvalue { ptr, i32 } %1140, 1
  store i32 %1142, ptr %6, align 4
  br label %1147

1143:                                             ; preds = %1133
  %1144 = landingpad { ptr, i32 }
          cleanup
  %1145 = extractvalue { ptr, i32 } %1144, 0
  store ptr %1145, ptr %5, align 8
  %1146 = extractvalue { ptr, i32 } %1144, 1
  store i32 %1146, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #8
  br label %1147

1147:                                             ; preds = %1143, %1139
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  br label %1148

1148:                                             ; preds = %1147, %1135
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %1185

1149:                                             ; preds = %1134, %1093
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #8
  %1150 = load ptr, ptr %39, align 8, !tbaa !5
  %1151 = icmp eq ptr %1150, null
  br i1 %1151, label %1153, label %1152

1152:                                             ; preds = %1149
  call void @_ZdaPv(ptr noundef %1150) #10
  br label %1153

1153:                                             ; preds = %1152, %1149
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %36) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %36) #8
  br label %1154

1154:                                             ; preds = %1153
  br label %1155

1155:                                             ; preds = %1154
  br label %1156

1156:                                             ; preds = %1155
  call void @llvm.lifetime.start.p0(i64 392, ptr %46) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %46)
  %1157 = getelementptr inbounds i8, ptr %46, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1157, ptr noundef @.str.20, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %1158 unwind label %1190

1158:                                             ; preds = %1156
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %48, ptr noundef nonnull align 8 dereferenceable(128) %46)
          to label %1159 unwind label %1194

1159:                                             ; preds = %1158
  %1160 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  %1161 = add i64 %1160, 3
  %1162 = trunc i64 %1161 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  store i32 %1162, ptr %47, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %1163 = load i32, ptr %47, align 4, !tbaa !11
  %1164 = sext i32 %1163 to i64
  %1165 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1164) #9
          to label %1166 unwind label %1198

1166:                                             ; preds = %1159
  store ptr %1165, ptr %49, align 8, !tbaa !5
  %1167 = load ptr, ptr %49, align 8, !tbaa !5
  %1168 = load i32, ptr %47, align 4, !tbaa !11
  %1169 = sub nsw i32 %1168, 1
  %1170 = sext i32 %1169 to i64
  %1171 = getelementptr inbounds i8, ptr %1167, i64 %1170
  store i8 0, ptr %1171, align 1, !tbaa !13
  %1172 = load ptr, ptr %49, align 8, !tbaa !5
  %1173 = load i32, ptr %47, align 4, !tbaa !11
  %1174 = sub nsw i32 %1173, 2
  %1175 = sext i32 %1174 to i64
  %1176 = load double, ptr %3, align 8, !tbaa !9
  %1177 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1172, i64 noundef %1175, ptr noundef @.str.20, double noundef %1176) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %51, ptr noundef nonnull align 8 dereferenceable(128) %46)
          to label %1178 unwind label %1202

1178:                                             ; preds = %1166
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #8
  %1179 = load ptr, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef %1179, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %1180 unwind label %1206

1180:                                             ; preds = %1178
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %50, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull align 8 dereferenceable(32) %52)
          to label %1181 unwind label %1210

1181:                                             ; preds = %1180
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #8
  %1182 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %50)
          to label %1183 unwind label %1216

1183:                                             ; preds = %1181
  br i1 %1182, label %1184, label %1220

1184:                                             ; preds = %1183
  br label %1240

1185:                                             ; preds = %1148, %1125
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #8
  br label %1186

1186:                                             ; preds = %1185, %1124
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #8
  br label %1187

1187:                                             ; preds = %1186, %1107
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %1188

1188:                                             ; preds = %1187, %1103
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  br label %1189

1189:                                             ; preds = %1188, %1099
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %36) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %36) #8
  br label %7986

1190:                                             ; preds = %1156
  %1191 = landingpad { ptr, i32 }
          cleanup
  %1192 = extractvalue { ptr, i32 } %1191, 0
  store ptr %1192, ptr %5, align 8
  %1193 = extractvalue { ptr, i32 } %1191, 1
  store i32 %1193, ptr %6, align 4
  br label %1280

1194:                                             ; preds = %1158
  %1195 = landingpad { ptr, i32 }
          cleanup
  %1196 = extractvalue { ptr, i32 } %1195, 0
  store ptr %1196, ptr %5, align 8
  %1197 = extractvalue { ptr, i32 } %1195, 1
  store i32 %1197, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  br label %1279

1198:                                             ; preds = %1159
  %1199 = landingpad { ptr, i32 }
          cleanup
  %1200 = extractvalue { ptr, i32 } %1199, 0
  store ptr %1200, ptr %5, align 8
  %1201 = extractvalue { ptr, i32 } %1199, 1
  store i32 %1201, ptr %6, align 4
  br label %1278

1202:                                             ; preds = %1166
  %1203 = landingpad { ptr, i32 }
          cleanup
  %1204 = extractvalue { ptr, i32 } %1203, 0
  store ptr %1204, ptr %5, align 8
  %1205 = extractvalue { ptr, i32 } %1203, 1
  store i32 %1205, ptr %6, align 4
  br label %1215

1206:                                             ; preds = %1178
  %1207 = landingpad { ptr, i32 }
          cleanup
  %1208 = extractvalue { ptr, i32 } %1207, 0
  store ptr %1208, ptr %5, align 8
  %1209 = extractvalue { ptr, i32 } %1207, 1
  store i32 %1209, ptr %6, align 4
  br label %1214

1210:                                             ; preds = %1180
  %1211 = landingpad { ptr, i32 }
          cleanup
  %1212 = extractvalue { ptr, i32 } %1211, 0
  store ptr %1212, ptr %5, align 8
  %1213 = extractvalue { ptr, i32 } %1211, 1
  store i32 %1213, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #8
  br label %1214

1214:                                             ; preds = %1210, %1206
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  br label %1215

1215:                                             ; preds = %1214, %1202
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #8
  br label %1277

1216:                                             ; preds = %1181
  %1217 = landingpad { ptr, i32 }
          cleanup
  %1218 = extractvalue { ptr, i32 } %1217, 0
  store ptr %1218, ptr %5, align 8
  %1219 = extractvalue { ptr, i32 } %1217, 1
  store i32 %1219, ptr %6, align 4
  br label %1276

1220:                                             ; preds = %1183
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %1221 unwind label %1226

1221:                                             ; preds = %1220
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %1222 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %50)
          to label %1223 unwind label %1230

1223:                                             ; preds = %1221
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %55, i32 noundef 1, ptr noundef @.str.3, i32 noundef 77, ptr noundef %1222)
          to label %1224 unwind label %1230

1224:                                             ; preds = %1223
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %1225 unwind label %1234

1225:                                             ; preds = %1224
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  br label %1240

1226:                                             ; preds = %1220
  %1227 = landingpad { ptr, i32 }
          cleanup
  %1228 = extractvalue { ptr, i32 } %1227, 0
  store ptr %1228, ptr %5, align 8
  %1229 = extractvalue { ptr, i32 } %1227, 1
  store i32 %1229, ptr %6, align 4
  br label %1239

1230:                                             ; preds = %1223, %1221
  %1231 = landingpad { ptr, i32 }
          cleanup
  %1232 = extractvalue { ptr, i32 } %1231, 0
  store ptr %1232, ptr %5, align 8
  %1233 = extractvalue { ptr, i32 } %1231, 1
  store i32 %1233, ptr %6, align 4
  br label %1238

1234:                                             ; preds = %1224
  %1235 = landingpad { ptr, i32 }
          cleanup
  %1236 = extractvalue { ptr, i32 } %1235, 0
  store ptr %1236, ptr %5, align 8
  %1237 = extractvalue { ptr, i32 } %1235, 1
  store i32 %1237, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  br label %1238

1238:                                             ; preds = %1234, %1230
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  br label %1239

1239:                                             ; preds = %1238, %1226
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  br label %1276

1240:                                             ; preds = %1225, %1184
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #8
  %1241 = load ptr, ptr %49, align 8, !tbaa !5
  %1242 = icmp eq ptr %1241, null
  br i1 %1242, label %1244, label %1243

1243:                                             ; preds = %1240
  call void @_ZdaPv(ptr noundef %1241) #10
  br label %1244

1244:                                             ; preds = %1243, %1240
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %46) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %46) #8
  br label %1245

1245:                                             ; preds = %1244
  br label %1246

1246:                                             ; preds = %1245
  br label %1247

1247:                                             ; preds = %1246
  call void @llvm.lifetime.start.p0(i64 392, ptr %56) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %56)
  %1248 = getelementptr inbounds i8, ptr %56, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1248, ptr noundef @.str.21, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %1249 unwind label %1281

1249:                                             ; preds = %1247
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %58, ptr noundef nonnull align 8 dereferenceable(128) %56)
          to label %1250 unwind label %1285

1250:                                             ; preds = %1249
  %1251 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  %1252 = add i64 %1251, 3
  %1253 = trunc i64 %1252 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #8
  store i32 %1253, ptr %57, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  %1254 = load i32, ptr %57, align 4, !tbaa !11
  %1255 = sext i32 %1254 to i64
  %1256 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1255) #9
          to label %1257 unwind label %1289

1257:                                             ; preds = %1250
  store ptr %1256, ptr %59, align 8, !tbaa !5
  %1258 = load ptr, ptr %59, align 8, !tbaa !5
  %1259 = load i32, ptr %57, align 4, !tbaa !11
  %1260 = sub nsw i32 %1259, 1
  %1261 = sext i32 %1260 to i64
  %1262 = getelementptr inbounds i8, ptr %1258, i64 %1261
  store i8 0, ptr %1262, align 1, !tbaa !13
  %1263 = load ptr, ptr %59, align 8, !tbaa !5
  %1264 = load i32, ptr %57, align 4, !tbaa !11
  %1265 = sub nsw i32 %1264, 2
  %1266 = sext i32 %1265 to i64
  %1267 = load double, ptr %3, align 8, !tbaa !9
  %1268 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1263, i64 noundef %1266, ptr noundef @.str.21, double noundef %1267) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef nonnull align 8 dereferenceable(128) %56)
          to label %1269 unwind label %1293

1269:                                             ; preds = %1257
  call void @llvm.lifetime.start.p0(i64 32, ptr %62) #8
  %1270 = load ptr, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef %1270, ptr noundef nonnull align 1 dereferenceable(1) %63)
          to label %1271 unwind label %1297

1271:                                             ; preds = %1269
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %60, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %1272 unwind label %1301

1272:                                             ; preds = %1271
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #8
  %1273 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %60)
          to label %1274 unwind label %1307

1274:                                             ; preds = %1272
  br i1 %1273, label %1275, label %1311

1275:                                             ; preds = %1274
  br label %1331

1276:                                             ; preds = %1239, %1216
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #8
  br label %1277

1277:                                             ; preds = %1276, %1215
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #8
  br label %1278

1278:                                             ; preds = %1277, %1198
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  br label %1279

1279:                                             ; preds = %1278, %1194
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  br label %1280

1280:                                             ; preds = %1279, %1190
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %46) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %46) #8
  br label %7986

1281:                                             ; preds = %1247
  %1282 = landingpad { ptr, i32 }
          cleanup
  %1283 = extractvalue { ptr, i32 } %1282, 0
  store ptr %1283, ptr %5, align 8
  %1284 = extractvalue { ptr, i32 } %1282, 1
  store i32 %1284, ptr %6, align 4
  br label %1371

1285:                                             ; preds = %1249
  %1286 = landingpad { ptr, i32 }
          cleanup
  %1287 = extractvalue { ptr, i32 } %1286, 0
  store ptr %1287, ptr %5, align 8
  %1288 = extractvalue { ptr, i32 } %1286, 1
  store i32 %1288, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #8
  br label %1370

1289:                                             ; preds = %1250
  %1290 = landingpad { ptr, i32 }
          cleanup
  %1291 = extractvalue { ptr, i32 } %1290, 0
  store ptr %1291, ptr %5, align 8
  %1292 = extractvalue { ptr, i32 } %1290, 1
  store i32 %1292, ptr %6, align 4
  br label %1369

1293:                                             ; preds = %1257
  %1294 = landingpad { ptr, i32 }
          cleanup
  %1295 = extractvalue { ptr, i32 } %1294, 0
  store ptr %1295, ptr %5, align 8
  %1296 = extractvalue { ptr, i32 } %1294, 1
  store i32 %1296, ptr %6, align 4
  br label %1306

1297:                                             ; preds = %1269
  %1298 = landingpad { ptr, i32 }
          cleanup
  %1299 = extractvalue { ptr, i32 } %1298, 0
  store ptr %1299, ptr %5, align 8
  %1300 = extractvalue { ptr, i32 } %1298, 1
  store i32 %1300, ptr %6, align 4
  br label %1305

1301:                                             ; preds = %1271
  %1302 = landingpad { ptr, i32 }
          cleanup
  %1303 = extractvalue { ptr, i32 } %1302, 0
  store ptr %1303, ptr %5, align 8
  %1304 = extractvalue { ptr, i32 } %1302, 1
  store i32 %1304, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  br label %1305

1305:                                             ; preds = %1301, %1297
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  br label %1306

1306:                                             ; preds = %1305, %1293
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #8
  br label %1368

1307:                                             ; preds = %1272
  %1308 = landingpad { ptr, i32 }
          cleanup
  %1309 = extractvalue { ptr, i32 } %1308, 0
  store ptr %1309, ptr %5, align 8
  %1310 = extractvalue { ptr, i32 } %1308, 1
  store i32 %1310, ptr %6, align 4
  br label %1367

1311:                                             ; preds = %1274
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %1312 unwind label %1317

1312:                                             ; preds = %1311
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #8
  %1313 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %60)
          to label %1314 unwind label %1321

1314:                                             ; preds = %1312
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %65, i32 noundef 1, ptr noundef @.str.3, i32 noundef 78, ptr noundef %1313)
          to label %1315 unwind label %1321

1315:                                             ; preds = %1314
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %1316 unwind label %1325

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

1317:                                             ; preds = %1311
  %1318 = landingpad { ptr, i32 }
          cleanup
  %1319 = extractvalue { ptr, i32 } %1318, 0
  store ptr %1319, ptr %5, align 8
  %1320 = extractvalue { ptr, i32 } %1318, 1
  store i32 %1320, ptr %6, align 4
  br label %1330

1321:                                             ; preds = %1314, %1312
  %1322 = landingpad { ptr, i32 }
          cleanup
  %1323 = extractvalue { ptr, i32 } %1322, 0
  store ptr %1323, ptr %5, align 8
  %1324 = extractvalue { ptr, i32 } %1322, 1
  store i32 %1324, ptr %6, align 4
  br label %1329

1325:                                             ; preds = %1315
  %1326 = landingpad { ptr, i32 }
          cleanup
  %1327 = extractvalue { ptr, i32 } %1326, 0
  store ptr %1327, ptr %5, align 8
  %1328 = extractvalue { ptr, i32 } %1326, 1
  store i32 %1328, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #8
  br label %1329

1329:                                             ; preds = %1325, %1321
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  br label %1330

1330:                                             ; preds = %1329, %1317
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  br label %1367

1331:                                             ; preds = %1316, %1275
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #8
  %1332 = load ptr, ptr %59, align 8, !tbaa !5
  %1333 = icmp eq ptr %1332, null
  br i1 %1333, label %1335, label %1334

1334:                                             ; preds = %1331
  call void @_ZdaPv(ptr noundef %1332) #10
  br label %1335

1335:                                             ; preds = %1334, %1331
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %56) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %56) #8
  br label %1336

1336:                                             ; preds = %1335
  br label %1337

1337:                                             ; preds = %1336
  br label %1338

1338:                                             ; preds = %1337
  call void @llvm.lifetime.start.p0(i64 392, ptr %66) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %66)
  %1339 = getelementptr inbounds i8, ptr %66, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1339, ptr noundef @.str.22, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %1340 unwind label %1372

1340:                                             ; preds = %1338
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %68) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %68, ptr noundef nonnull align 8 dereferenceable(128) %66)
          to label %1341 unwind label %1376

1341:                                             ; preds = %1340
  %1342 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %68) #8
  %1343 = add i64 %1342, 3
  %1344 = trunc i64 %1343 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #8
  store i32 %1344, ptr %67, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #8
  %1345 = load i32, ptr %67, align 4, !tbaa !11
  %1346 = sext i32 %1345 to i64
  %1347 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1346) #9
          to label %1348 unwind label %1380

1348:                                             ; preds = %1341
  store ptr %1347, ptr %69, align 8, !tbaa !5
  %1349 = load ptr, ptr %69, align 8, !tbaa !5
  %1350 = load i32, ptr %67, align 4, !tbaa !11
  %1351 = sub nsw i32 %1350, 1
  %1352 = sext i32 %1351 to i64
  %1353 = getelementptr inbounds i8, ptr %1349, i64 %1352
  store i8 0, ptr %1353, align 1, !tbaa !13
  %1354 = load ptr, ptr %69, align 8, !tbaa !5
  %1355 = load i32, ptr %67, align 4, !tbaa !11
  %1356 = sub nsw i32 %1355, 2
  %1357 = sext i32 %1356 to i64
  %1358 = load double, ptr %3, align 8, !tbaa !9
  %1359 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1354, i64 noundef %1357, ptr noundef @.str.22, double noundef %1358) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %71) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %71, ptr noundef nonnull align 8 dereferenceable(128) %66)
          to label %1360 unwind label %1384

1360:                                             ; preds = %1348
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #8
  %1361 = load ptr, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef %1361, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %1362 unwind label %1388

1362:                                             ; preds = %1360
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %70, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull align 8 dereferenceable(32) %72)
          to label %1363 unwind label %1392

1363:                                             ; preds = %1362
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #8
  %1364 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %70)
          to label %1365 unwind label %1398

1365:                                             ; preds = %1363
  br i1 %1364, label %1366, label %1402

1366:                                             ; preds = %1365
  br label %1422

1367:                                             ; preds = %1330, %1307
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #8
  br label %1368

1368:                                             ; preds = %1367, %1306
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #8
  br label %1369

1369:                                             ; preds = %1368, %1289
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %1370

1370:                                             ; preds = %1369, %1285
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  br label %1371

1371:                                             ; preds = %1370, %1281
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %56) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %56) #8
  br label %7986

1372:                                             ; preds = %1338
  %1373 = landingpad { ptr, i32 }
          cleanup
  %1374 = extractvalue { ptr, i32 } %1373, 0
  store ptr %1374, ptr %5, align 8
  %1375 = extractvalue { ptr, i32 } %1373, 1
  store i32 %1375, ptr %6, align 4
  br label %1462

1376:                                             ; preds = %1340
  %1377 = landingpad { ptr, i32 }
          cleanup
  %1378 = extractvalue { ptr, i32 } %1377, 0
  store ptr %1378, ptr %5, align 8
  %1379 = extractvalue { ptr, i32 } %1377, 1
  store i32 %1379, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #8
  br label %1461

1380:                                             ; preds = %1341
  %1381 = landingpad { ptr, i32 }
          cleanup
  %1382 = extractvalue { ptr, i32 } %1381, 0
  store ptr %1382, ptr %5, align 8
  %1383 = extractvalue { ptr, i32 } %1381, 1
  store i32 %1383, ptr %6, align 4
  br label %1460

1384:                                             ; preds = %1348
  %1385 = landingpad { ptr, i32 }
          cleanup
  %1386 = extractvalue { ptr, i32 } %1385, 0
  store ptr %1386, ptr %5, align 8
  %1387 = extractvalue { ptr, i32 } %1385, 1
  store i32 %1387, ptr %6, align 4
  br label %1397

1388:                                             ; preds = %1360
  %1389 = landingpad { ptr, i32 }
          cleanup
  %1390 = extractvalue { ptr, i32 } %1389, 0
  store ptr %1390, ptr %5, align 8
  %1391 = extractvalue { ptr, i32 } %1389, 1
  store i32 %1391, ptr %6, align 4
  br label %1396

1392:                                             ; preds = %1362
  %1393 = landingpad { ptr, i32 }
          cleanup
  %1394 = extractvalue { ptr, i32 } %1393, 0
  store ptr %1394, ptr %5, align 8
  %1395 = extractvalue { ptr, i32 } %1393, 1
  store i32 %1395, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #8
  br label %1396

1396:                                             ; preds = %1392, %1388
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  br label %1397

1397:                                             ; preds = %1396, %1384
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #8
  br label %1459

1398:                                             ; preds = %1363
  %1399 = landingpad { ptr, i32 }
          cleanup
  %1400 = extractvalue { ptr, i32 } %1399, 0
  store ptr %1400, ptr %5, align 8
  %1401 = extractvalue { ptr, i32 } %1399, 1
  store i32 %1401, ptr %6, align 4
  br label %1458

1402:                                             ; preds = %1365
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74)
          to label %1403 unwind label %1408

1403:                                             ; preds = %1402
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  %1404 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %70)
          to label %1405 unwind label %1412

1405:                                             ; preds = %1403
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %75, i32 noundef 1, ptr noundef @.str.3, i32 noundef 79, ptr noundef %1404)
          to label %1406 unwind label %1412

1406:                                             ; preds = %1405
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %74)
          to label %1407 unwind label %1416

1407:                                             ; preds = %1406
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  br label %1422

1408:                                             ; preds = %1402
  %1409 = landingpad { ptr, i32 }
          cleanup
  %1410 = extractvalue { ptr, i32 } %1409, 0
  store ptr %1410, ptr %5, align 8
  %1411 = extractvalue { ptr, i32 } %1409, 1
  store i32 %1411, ptr %6, align 4
  br label %1421

1412:                                             ; preds = %1405, %1403
  %1413 = landingpad { ptr, i32 }
          cleanup
  %1414 = extractvalue { ptr, i32 } %1413, 0
  store ptr %1414, ptr %5, align 8
  %1415 = extractvalue { ptr, i32 } %1413, 1
  store i32 %1415, ptr %6, align 4
  br label %1420

1416:                                             ; preds = %1406
  %1417 = landingpad { ptr, i32 }
          cleanup
  %1418 = extractvalue { ptr, i32 } %1417, 0
  store ptr %1418, ptr %5, align 8
  %1419 = extractvalue { ptr, i32 } %1417, 1
  store i32 %1419, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #8
  br label %1420

1420:                                             ; preds = %1416, %1412
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #8
  br label %1421

1421:                                             ; preds = %1420, %1408
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  br label %1458

1422:                                             ; preds = %1407, %1366
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #8
  %1423 = load ptr, ptr %69, align 8, !tbaa !5
  %1424 = icmp eq ptr %1423, null
  br i1 %1424, label %1426, label %1425

1425:                                             ; preds = %1422
  call void @_ZdaPv(ptr noundef %1423) #10
  br label %1426

1426:                                             ; preds = %1425, %1422
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %66) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %66) #8
  br label %1427

1427:                                             ; preds = %1426
  br label %1428

1428:                                             ; preds = %1427
  br label %1429

1429:                                             ; preds = %1428
  call void @llvm.lifetime.start.p0(i64 392, ptr %76) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %76)
  %1430 = getelementptr inbounds i8, ptr %76, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1430, ptr noundef @.str.23, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %1431 unwind label %1463

1431:                                             ; preds = %1429
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %78) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %78, ptr noundef nonnull align 8 dereferenceable(128) %76)
          to label %1432 unwind label %1467

1432:                                             ; preds = %1431
  %1433 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %78) #8
  %1434 = add i64 %1433, 3
  %1435 = trunc i64 %1434 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #8
  store i32 %1435, ptr %77, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  %1436 = load i32, ptr %77, align 4, !tbaa !11
  %1437 = sext i32 %1436 to i64
  %1438 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1437) #9
          to label %1439 unwind label %1471

1439:                                             ; preds = %1432
  store ptr %1438, ptr %79, align 8, !tbaa !5
  %1440 = load ptr, ptr %79, align 8, !tbaa !5
  %1441 = load i32, ptr %77, align 4, !tbaa !11
  %1442 = sub nsw i32 %1441, 1
  %1443 = sext i32 %1442 to i64
  %1444 = getelementptr inbounds i8, ptr %1440, i64 %1443
  store i8 0, ptr %1444, align 1, !tbaa !13
  %1445 = load ptr, ptr %79, align 8, !tbaa !5
  %1446 = load i32, ptr %77, align 4, !tbaa !11
  %1447 = sub nsw i32 %1446, 2
  %1448 = sext i32 %1447 to i64
  %1449 = load double, ptr %3, align 8, !tbaa !9
  %1450 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1445, i64 noundef %1448, ptr noundef @.str.23, double noundef %1449) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %80) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %81) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %81, ptr noundef nonnull align 8 dereferenceable(128) %76)
          to label %1451 unwind label %1475

1451:                                             ; preds = %1439
  call void @llvm.lifetime.start.p0(i64 32, ptr %82) #8
  %1452 = load ptr, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef %1452, ptr noundef nonnull align 1 dereferenceable(1) %83)
          to label %1453 unwind label %1479

1453:                                             ; preds = %1451
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %80, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef nonnull align 8 dereferenceable(32) %82)
          to label %1454 unwind label %1483

1454:                                             ; preds = %1453
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #8
  %1455 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %80)
          to label %1456 unwind label %1489

1456:                                             ; preds = %1454
  br i1 %1455, label %1457, label %1493

1457:                                             ; preds = %1456
  br label %1513

1458:                                             ; preds = %1421, %1398
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #8
  br label %1459

1459:                                             ; preds = %1458, %1397
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #8
  br label %1460

1460:                                             ; preds = %1459, %1380
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  br label %1461

1461:                                             ; preds = %1460, %1376
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #8
  br label %1462

1462:                                             ; preds = %1461, %1372
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %66) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %66) #8
  br label %7986

1463:                                             ; preds = %1429
  %1464 = landingpad { ptr, i32 }
          cleanup
  %1465 = extractvalue { ptr, i32 } %1464, 0
  store ptr %1465, ptr %5, align 8
  %1466 = extractvalue { ptr, i32 } %1464, 1
  store i32 %1466, ptr %6, align 4
  br label %1553

1467:                                             ; preds = %1431
  %1468 = landingpad { ptr, i32 }
          cleanup
  %1469 = extractvalue { ptr, i32 } %1468, 0
  store ptr %1469, ptr %5, align 8
  %1470 = extractvalue { ptr, i32 } %1468, 1
  store i32 %1470, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #8
  br label %1552

1471:                                             ; preds = %1432
  %1472 = landingpad { ptr, i32 }
          cleanup
  %1473 = extractvalue { ptr, i32 } %1472, 0
  store ptr %1473, ptr %5, align 8
  %1474 = extractvalue { ptr, i32 } %1472, 1
  store i32 %1474, ptr %6, align 4
  br label %1551

1475:                                             ; preds = %1439
  %1476 = landingpad { ptr, i32 }
          cleanup
  %1477 = extractvalue { ptr, i32 } %1476, 0
  store ptr %1477, ptr %5, align 8
  %1478 = extractvalue { ptr, i32 } %1476, 1
  store i32 %1478, ptr %6, align 4
  br label %1488

1479:                                             ; preds = %1451
  %1480 = landingpad { ptr, i32 }
          cleanup
  %1481 = extractvalue { ptr, i32 } %1480, 0
  store ptr %1481, ptr %5, align 8
  %1482 = extractvalue { ptr, i32 } %1480, 1
  store i32 %1482, ptr %6, align 4
  br label %1487

1483:                                             ; preds = %1453
  %1484 = landingpad { ptr, i32 }
          cleanup
  %1485 = extractvalue { ptr, i32 } %1484, 0
  store ptr %1485, ptr %5, align 8
  %1486 = extractvalue { ptr, i32 } %1484, 1
  store i32 %1486, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #8
  br label %1487

1487:                                             ; preds = %1483, %1479
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #8
  br label %1488

1488:                                             ; preds = %1487, %1475
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #8
  br label %1550

1489:                                             ; preds = %1454
  %1490 = landingpad { ptr, i32 }
          cleanup
  %1491 = extractvalue { ptr, i32 } %1490, 0
  store ptr %1491, ptr %5, align 8
  %1492 = extractvalue { ptr, i32 } %1490, 1
  store i32 %1492, ptr %6, align 4
  br label %1549

1493:                                             ; preds = %1456
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84)
          to label %1494 unwind label %1499

1494:                                             ; preds = %1493
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #8
  %1495 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %80)
          to label %1496 unwind label %1503

1496:                                             ; preds = %1494
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %85, i32 noundef 1, ptr noundef @.str.3, i32 noundef 80, ptr noundef %1495)
          to label %1497 unwind label %1503

1497:                                             ; preds = %1496
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %84)
          to label %1498 unwind label %1507

1498:                                             ; preds = %1497
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  br label %1513

1499:                                             ; preds = %1493
  %1500 = landingpad { ptr, i32 }
          cleanup
  %1501 = extractvalue { ptr, i32 } %1500, 0
  store ptr %1501, ptr %5, align 8
  %1502 = extractvalue { ptr, i32 } %1500, 1
  store i32 %1502, ptr %6, align 4
  br label %1512

1503:                                             ; preds = %1496, %1494
  %1504 = landingpad { ptr, i32 }
          cleanup
  %1505 = extractvalue { ptr, i32 } %1504, 0
  store ptr %1505, ptr %5, align 8
  %1506 = extractvalue { ptr, i32 } %1504, 1
  store i32 %1506, ptr %6, align 4
  br label %1511

1507:                                             ; preds = %1497
  %1508 = landingpad { ptr, i32 }
          cleanup
  %1509 = extractvalue { ptr, i32 } %1508, 0
  store ptr %1509, ptr %5, align 8
  %1510 = extractvalue { ptr, i32 } %1508, 1
  store i32 %1510, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #8
  br label %1511

1511:                                             ; preds = %1507, %1503
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #8
  br label %1512

1512:                                             ; preds = %1511, %1499
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  br label %1549

1513:                                             ; preds = %1498, %1457
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #8
  %1514 = load ptr, ptr %79, align 8, !tbaa !5
  %1515 = icmp eq ptr %1514, null
  br i1 %1515, label %1517, label %1516

1516:                                             ; preds = %1513
  call void @_ZdaPv(ptr noundef %1514) #10
  br label %1517

1517:                                             ; preds = %1516, %1513
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %76) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %76) #8
  br label %1518

1518:                                             ; preds = %1517
  br label %1519

1519:                                             ; preds = %1518
  br label %1520

1520:                                             ; preds = %1519
  call void @llvm.lifetime.start.p0(i64 392, ptr %86) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %86)
  %1521 = getelementptr inbounds i8, ptr %86, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1521, ptr noundef @.str.24, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %1522 unwind label %1554

1522:                                             ; preds = %1520
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %88) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %88, ptr noundef nonnull align 8 dereferenceable(128) %86)
          to label %1523 unwind label %1558

1523:                                             ; preds = %1522
  %1524 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %88) #8
  %1525 = add i64 %1524, 3
  %1526 = trunc i64 %1525 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #8
  store i32 %1526, ptr %87, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #8
  %1527 = load i32, ptr %87, align 4, !tbaa !11
  %1528 = sext i32 %1527 to i64
  %1529 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1528) #9
          to label %1530 unwind label %1562

1530:                                             ; preds = %1523
  store ptr %1529, ptr %89, align 8, !tbaa !5
  %1531 = load ptr, ptr %89, align 8, !tbaa !5
  %1532 = load i32, ptr %87, align 4, !tbaa !11
  %1533 = sub nsw i32 %1532, 1
  %1534 = sext i32 %1533 to i64
  %1535 = getelementptr inbounds i8, ptr %1531, i64 %1534
  store i8 0, ptr %1535, align 1, !tbaa !13
  %1536 = load ptr, ptr %89, align 8, !tbaa !5
  %1537 = load i32, ptr %87, align 4, !tbaa !11
  %1538 = sub nsw i32 %1537, 2
  %1539 = sext i32 %1538 to i64
  %1540 = load double, ptr %3, align 8, !tbaa !9
  %1541 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1536, i64 noundef %1539, ptr noundef @.str.24, double noundef %1540) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %90) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %91) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %91, ptr noundef nonnull align 8 dereferenceable(128) %86)
          to label %1542 unwind label %1566

1542:                                             ; preds = %1530
  call void @llvm.lifetime.start.p0(i64 32, ptr %92) #8
  %1543 = load ptr, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef %1543, ptr noundef nonnull align 1 dereferenceable(1) %93)
          to label %1544 unwind label %1570

1544:                                             ; preds = %1542
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %90, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull align 8 dereferenceable(32) %92)
          to label %1545 unwind label %1574

1545:                                             ; preds = %1544
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #8
  %1546 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %90)
          to label %1547 unwind label %1580

1547:                                             ; preds = %1545
  br i1 %1546, label %1548, label %1584

1548:                                             ; preds = %1547
  br label %1604

1549:                                             ; preds = %1512, %1489
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #8
  br label %1550

1550:                                             ; preds = %1549, %1488
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #8
  br label %1551

1551:                                             ; preds = %1550, %1471
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  br label %1552

1552:                                             ; preds = %1551, %1467
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #8
  br label %1553

1553:                                             ; preds = %1552, %1463
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %76) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %76) #8
  br label %7986

1554:                                             ; preds = %1520
  %1555 = landingpad { ptr, i32 }
          cleanup
  %1556 = extractvalue { ptr, i32 } %1555, 0
  store ptr %1556, ptr %5, align 8
  %1557 = extractvalue { ptr, i32 } %1555, 1
  store i32 %1557, ptr %6, align 4
  br label %1644

1558:                                             ; preds = %1522
  %1559 = landingpad { ptr, i32 }
          cleanup
  %1560 = extractvalue { ptr, i32 } %1559, 0
  store ptr %1560, ptr %5, align 8
  %1561 = extractvalue { ptr, i32 } %1559, 1
  store i32 %1561, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #8
  br label %1643

1562:                                             ; preds = %1523
  %1563 = landingpad { ptr, i32 }
          cleanup
  %1564 = extractvalue { ptr, i32 } %1563, 0
  store ptr %1564, ptr %5, align 8
  %1565 = extractvalue { ptr, i32 } %1563, 1
  store i32 %1565, ptr %6, align 4
  br label %1642

1566:                                             ; preds = %1530
  %1567 = landingpad { ptr, i32 }
          cleanup
  %1568 = extractvalue { ptr, i32 } %1567, 0
  store ptr %1568, ptr %5, align 8
  %1569 = extractvalue { ptr, i32 } %1567, 1
  store i32 %1569, ptr %6, align 4
  br label %1579

1570:                                             ; preds = %1542
  %1571 = landingpad { ptr, i32 }
          cleanup
  %1572 = extractvalue { ptr, i32 } %1571, 0
  store ptr %1572, ptr %5, align 8
  %1573 = extractvalue { ptr, i32 } %1571, 1
  store i32 %1573, ptr %6, align 4
  br label %1578

1574:                                             ; preds = %1544
  %1575 = landingpad { ptr, i32 }
          cleanup
  %1576 = extractvalue { ptr, i32 } %1575, 0
  store ptr %1576, ptr %5, align 8
  %1577 = extractvalue { ptr, i32 } %1575, 1
  store i32 %1577, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  br label %1578

1578:                                             ; preds = %1574, %1570
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #8
  br label %1579

1579:                                             ; preds = %1578, %1566
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #8
  br label %1641

1580:                                             ; preds = %1545
  %1581 = landingpad { ptr, i32 }
          cleanup
  %1582 = extractvalue { ptr, i32 } %1581, 0
  store ptr %1582, ptr %5, align 8
  %1583 = extractvalue { ptr, i32 } %1581, 1
  store i32 %1583, ptr %6, align 4
  br label %1640

1584:                                             ; preds = %1547
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94)
          to label %1585 unwind label %1590

1585:                                             ; preds = %1584
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  %1586 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %90)
          to label %1587 unwind label %1594

1587:                                             ; preds = %1585
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %95, i32 noundef 1, ptr noundef @.str.3, i32 noundef 81, ptr noundef %1586)
          to label %1588 unwind label %1594

1588:                                             ; preds = %1587
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %95, ptr noundef nonnull align 8 dereferenceable(8) %94)
          to label %1589 unwind label %1598

1589:                                             ; preds = %1588
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %95) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  br label %1604

1590:                                             ; preds = %1584
  %1591 = landingpad { ptr, i32 }
          cleanup
  %1592 = extractvalue { ptr, i32 } %1591, 0
  store ptr %1592, ptr %5, align 8
  %1593 = extractvalue { ptr, i32 } %1591, 1
  store i32 %1593, ptr %6, align 4
  br label %1603

1594:                                             ; preds = %1587, %1585
  %1595 = landingpad { ptr, i32 }
          cleanup
  %1596 = extractvalue { ptr, i32 } %1595, 0
  store ptr %1596, ptr %5, align 8
  %1597 = extractvalue { ptr, i32 } %1595, 1
  store i32 %1597, ptr %6, align 4
  br label %1602

1598:                                             ; preds = %1588
  %1599 = landingpad { ptr, i32 }
          cleanup
  %1600 = extractvalue { ptr, i32 } %1599, 0
  store ptr %1600, ptr %5, align 8
  %1601 = extractvalue { ptr, i32 } %1599, 1
  store i32 %1601, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %95) #8
  br label %1602

1602:                                             ; preds = %1598, %1594
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #8
  br label %1603

1603:                                             ; preds = %1602, %1590
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  br label %1640

1604:                                             ; preds = %1589, %1548
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #8
  %1605 = load ptr, ptr %89, align 8, !tbaa !5
  %1606 = icmp eq ptr %1605, null
  br i1 %1606, label %1608, label %1607

1607:                                             ; preds = %1604
  call void @_ZdaPv(ptr noundef %1605) #10
  br label %1608

1608:                                             ; preds = %1607, %1604
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %86) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %86) #8
  br label %1609

1609:                                             ; preds = %1608
  br label %1610

1610:                                             ; preds = %1609
  br label %1611

1611:                                             ; preds = %1610
  call void @llvm.lifetime.start.p0(i64 392, ptr %96) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %96)
  %1612 = getelementptr inbounds i8, ptr %96, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1612, ptr noundef @.str.25, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %1613 unwind label %1645

1613:                                             ; preds = %1611
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %98) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %98, ptr noundef nonnull align 8 dereferenceable(128) %96)
          to label %1614 unwind label %1649

1614:                                             ; preds = %1613
  %1615 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %98) #8
  %1616 = add i64 %1615, 3
  %1617 = trunc i64 %1616 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %98) #8
  store i32 %1617, ptr %97, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #8
  %1618 = load i32, ptr %97, align 4, !tbaa !11
  %1619 = sext i32 %1618 to i64
  %1620 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1619) #9
          to label %1621 unwind label %1653

1621:                                             ; preds = %1614
  store ptr %1620, ptr %99, align 8, !tbaa !5
  %1622 = load ptr, ptr %99, align 8, !tbaa !5
  %1623 = load i32, ptr %97, align 4, !tbaa !11
  %1624 = sub nsw i32 %1623, 1
  %1625 = sext i32 %1624 to i64
  %1626 = getelementptr inbounds i8, ptr %1622, i64 %1625
  store i8 0, ptr %1626, align 1, !tbaa !13
  %1627 = load ptr, ptr %99, align 8, !tbaa !5
  %1628 = load i32, ptr %97, align 4, !tbaa !11
  %1629 = sub nsw i32 %1628, 2
  %1630 = sext i32 %1629 to i64
  %1631 = load double, ptr %3, align 8, !tbaa !9
  %1632 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1627, i64 noundef %1630, ptr noundef @.str.25, double noundef %1631) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %100) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %101) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %101, ptr noundef nonnull align 8 dereferenceable(128) %96)
          to label %1633 unwind label %1657

1633:                                             ; preds = %1621
  call void @llvm.lifetime.start.p0(i64 32, ptr %102) #8
  %1634 = load ptr, ptr %99, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %103) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef %1634, ptr noundef nonnull align 1 dereferenceable(1) %103)
          to label %1635 unwind label %1661

1635:                                             ; preds = %1633
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %100, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %101, ptr noundef nonnull align 8 dereferenceable(32) %102)
          to label %1636 unwind label %1665

1636:                                             ; preds = %1635
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %102) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #8
  %1637 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %100)
          to label %1638 unwind label %1671

1638:                                             ; preds = %1636
  br i1 %1637, label %1639, label %1675

1639:                                             ; preds = %1638
  br label %1695

1640:                                             ; preds = %1603, %1580
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #8
  br label %1641

1641:                                             ; preds = %1640, %1579
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #8
  br label %1642

1642:                                             ; preds = %1641, %1562
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  br label %1643

1643:                                             ; preds = %1642, %1558
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #8
  br label %1644

1644:                                             ; preds = %1643, %1554
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %86) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %86) #8
  br label %7986

1645:                                             ; preds = %1611
  %1646 = landingpad { ptr, i32 }
          cleanup
  %1647 = extractvalue { ptr, i32 } %1646, 0
  store ptr %1647, ptr %5, align 8
  %1648 = extractvalue { ptr, i32 } %1646, 1
  store i32 %1648, ptr %6, align 4
  br label %1735

1649:                                             ; preds = %1613
  %1650 = landingpad { ptr, i32 }
          cleanup
  %1651 = extractvalue { ptr, i32 } %1650, 0
  store ptr %1651, ptr %5, align 8
  %1652 = extractvalue { ptr, i32 } %1650, 1
  store i32 %1652, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %98) #8
  br label %1734

1653:                                             ; preds = %1614
  %1654 = landingpad { ptr, i32 }
          cleanup
  %1655 = extractvalue { ptr, i32 } %1654, 0
  store ptr %1655, ptr %5, align 8
  %1656 = extractvalue { ptr, i32 } %1654, 1
  store i32 %1656, ptr %6, align 4
  br label %1733

1657:                                             ; preds = %1621
  %1658 = landingpad { ptr, i32 }
          cleanup
  %1659 = extractvalue { ptr, i32 } %1658, 0
  store ptr %1659, ptr %5, align 8
  %1660 = extractvalue { ptr, i32 } %1658, 1
  store i32 %1660, ptr %6, align 4
  br label %1670

1661:                                             ; preds = %1633
  %1662 = landingpad { ptr, i32 }
          cleanup
  %1663 = extractvalue { ptr, i32 } %1662, 0
  store ptr %1663, ptr %5, align 8
  %1664 = extractvalue { ptr, i32 } %1662, 1
  store i32 %1664, ptr %6, align 4
  br label %1669

1665:                                             ; preds = %1635
  %1666 = landingpad { ptr, i32 }
          cleanup
  %1667 = extractvalue { ptr, i32 } %1666, 0
  store ptr %1667, ptr %5, align 8
  %1668 = extractvalue { ptr, i32 } %1666, 1
  store i32 %1668, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #8
  br label %1669

1669:                                             ; preds = %1665, %1661
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %102) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #8
  br label %1670

1670:                                             ; preds = %1669, %1657
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #8
  br label %1732

1671:                                             ; preds = %1636
  %1672 = landingpad { ptr, i32 }
          cleanup
  %1673 = extractvalue { ptr, i32 } %1672, 0
  store ptr %1673, ptr %5, align 8
  %1674 = extractvalue { ptr, i32 } %1672, 1
  store i32 %1674, ptr %6, align 4
  br label %1731

1675:                                             ; preds = %1638
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %104)
          to label %1676 unwind label %1681

1676:                                             ; preds = %1675
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #8
  %1677 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %100)
          to label %1678 unwind label %1685

1678:                                             ; preds = %1676
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %105, i32 noundef 1, ptr noundef @.str.3, i32 noundef 82, ptr noundef %1677)
          to label %1679 unwind label %1685

1679:                                             ; preds = %1678
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef nonnull align 8 dereferenceable(8) %104)
          to label %1680 unwind label %1689

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

1681:                                             ; preds = %1675
  %1682 = landingpad { ptr, i32 }
          cleanup
  %1683 = extractvalue { ptr, i32 } %1682, 0
  store ptr %1683, ptr %5, align 8
  %1684 = extractvalue { ptr, i32 } %1682, 1
  store i32 %1684, ptr %6, align 4
  br label %1694

1685:                                             ; preds = %1678, %1676
  %1686 = landingpad { ptr, i32 }
          cleanup
  %1687 = extractvalue { ptr, i32 } %1686, 0
  store ptr %1687, ptr %5, align 8
  %1688 = extractvalue { ptr, i32 } %1686, 1
  store i32 %1688, ptr %6, align 4
  br label %1693

1689:                                             ; preds = %1679
  %1690 = landingpad { ptr, i32 }
          cleanup
  %1691 = extractvalue { ptr, i32 } %1690, 0
  store ptr %1691, ptr %5, align 8
  %1692 = extractvalue { ptr, i32 } %1690, 1
  store i32 %1692, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #8
  br label %1693

1693:                                             ; preds = %1689, %1685
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #8
  br label %1694

1694:                                             ; preds = %1693, %1681
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  br label %1731

1695:                                             ; preds = %1680, %1639
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %100) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %100) #8
  %1696 = load ptr, ptr %99, align 8, !tbaa !5
  %1697 = icmp eq ptr %1696, null
  br i1 %1697, label %1699, label %1698

1698:                                             ; preds = %1695
  call void @_ZdaPv(ptr noundef %1696) #10
  br label %1699

1699:                                             ; preds = %1698, %1695
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %96) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %96) #8
  br label %1700

1700:                                             ; preds = %1699
  br label %1701

1701:                                             ; preds = %1700
  br label %1702

1702:                                             ; preds = %1701
  call void @llvm.lifetime.start.p0(i64 392, ptr %106) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %106)
  %1703 = getelementptr inbounds i8, ptr %106, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1703, ptr noundef @.str.26, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %1704 unwind label %1736

1704:                                             ; preds = %1702
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %108) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %108, ptr noundef nonnull align 8 dereferenceable(128) %106)
          to label %1705 unwind label %1740

1705:                                             ; preds = %1704
  %1706 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %108) #8
  %1707 = add i64 %1706, 3
  %1708 = trunc i64 %1707 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %108) #8
  store i32 %1708, ptr %107, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #8
  %1709 = load i32, ptr %107, align 4, !tbaa !11
  %1710 = sext i32 %1709 to i64
  %1711 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1710) #9
          to label %1712 unwind label %1744

1712:                                             ; preds = %1705
  store ptr %1711, ptr %109, align 8, !tbaa !5
  %1713 = load ptr, ptr %109, align 8, !tbaa !5
  %1714 = load i32, ptr %107, align 4, !tbaa !11
  %1715 = sub nsw i32 %1714, 1
  %1716 = sext i32 %1715 to i64
  %1717 = getelementptr inbounds i8, ptr %1713, i64 %1716
  store i8 0, ptr %1717, align 1, !tbaa !13
  %1718 = load ptr, ptr %109, align 8, !tbaa !5
  %1719 = load i32, ptr %107, align 4, !tbaa !11
  %1720 = sub nsw i32 %1719, 2
  %1721 = sext i32 %1720 to i64
  %1722 = load double, ptr %3, align 8, !tbaa !9
  %1723 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1718, i64 noundef %1721, ptr noundef @.str.26, double noundef %1722) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %110) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %111) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %111, ptr noundef nonnull align 8 dereferenceable(128) %106)
          to label %1724 unwind label %1748

1724:                                             ; preds = %1712
  call void @llvm.lifetime.start.p0(i64 32, ptr %112) #8
  %1725 = load ptr, ptr %109, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %113) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef %1725, ptr noundef nonnull align 1 dereferenceable(1) %113)
          to label %1726 unwind label %1752

1726:                                             ; preds = %1724
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %110, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef nonnull align 8 dereferenceable(32) %112)
          to label %1727 unwind label %1756

1727:                                             ; preds = %1726
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %113) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %112) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %111) #8
  %1728 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %110)
          to label %1729 unwind label %1762

1729:                                             ; preds = %1727
  br i1 %1728, label %1730, label %1766

1730:                                             ; preds = %1729
  br label %1786

1731:                                             ; preds = %1694, %1671
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %100) #8
  br label %1732

1732:                                             ; preds = %1731, %1670
  call void @llvm.lifetime.end.p0(i64 16, ptr %100) #8
  br label %1733

1733:                                             ; preds = %1732, %1653
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  br label %1734

1734:                                             ; preds = %1733, %1649
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #8
  br label %1735

1735:                                             ; preds = %1734, %1645
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %96) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %96) #8
  br label %7986

1736:                                             ; preds = %1702
  %1737 = landingpad { ptr, i32 }
          cleanup
  %1738 = extractvalue { ptr, i32 } %1737, 0
  store ptr %1738, ptr %5, align 8
  %1739 = extractvalue { ptr, i32 } %1737, 1
  store i32 %1739, ptr %6, align 4
  br label %1826

1740:                                             ; preds = %1704
  %1741 = landingpad { ptr, i32 }
          cleanup
  %1742 = extractvalue { ptr, i32 } %1741, 0
  store ptr %1742, ptr %5, align 8
  %1743 = extractvalue { ptr, i32 } %1741, 1
  store i32 %1743, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %108) #8
  br label %1825

1744:                                             ; preds = %1705
  %1745 = landingpad { ptr, i32 }
          cleanup
  %1746 = extractvalue { ptr, i32 } %1745, 0
  store ptr %1746, ptr %5, align 8
  %1747 = extractvalue { ptr, i32 } %1745, 1
  store i32 %1747, ptr %6, align 4
  br label %1824

1748:                                             ; preds = %1712
  %1749 = landingpad { ptr, i32 }
          cleanup
  %1750 = extractvalue { ptr, i32 } %1749, 0
  store ptr %1750, ptr %5, align 8
  %1751 = extractvalue { ptr, i32 } %1749, 1
  store i32 %1751, ptr %6, align 4
  br label %1761

1752:                                             ; preds = %1724
  %1753 = landingpad { ptr, i32 }
          cleanup
  %1754 = extractvalue { ptr, i32 } %1753, 0
  store ptr %1754, ptr %5, align 8
  %1755 = extractvalue { ptr, i32 } %1753, 1
  store i32 %1755, ptr %6, align 4
  br label %1760

1756:                                             ; preds = %1726
  %1757 = landingpad { ptr, i32 }
          cleanup
  %1758 = extractvalue { ptr, i32 } %1757, 0
  store ptr %1758, ptr %5, align 8
  %1759 = extractvalue { ptr, i32 } %1757, 1
  store i32 %1759, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #8
  br label %1760

1760:                                             ; preds = %1756, %1752
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %113) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %112) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #8
  br label %1761

1761:                                             ; preds = %1760, %1748
  call void @llvm.lifetime.end.p0(i64 32, ptr %111) #8
  br label %1823

1762:                                             ; preds = %1727
  %1763 = landingpad { ptr, i32 }
          cleanup
  %1764 = extractvalue { ptr, i32 } %1763, 0
  store ptr %1764, ptr %5, align 8
  %1765 = extractvalue { ptr, i32 } %1763, 1
  store i32 %1765, ptr %6, align 4
  br label %1822

1766:                                             ; preds = %1729
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %114)
          to label %1767 unwind label %1772

1767:                                             ; preds = %1766
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #8
  %1768 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %110)
          to label %1769 unwind label %1776

1769:                                             ; preds = %1767
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %115, i32 noundef 1, ptr noundef @.str.3, i32 noundef 83, ptr noundef %1768)
          to label %1770 unwind label %1776

1770:                                             ; preds = %1769
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull align 8 dereferenceable(8) %114)
          to label %1771 unwind label %1780

1771:                                             ; preds = %1770
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #8
  br label %1786

1772:                                             ; preds = %1766
  %1773 = landingpad { ptr, i32 }
          cleanup
  %1774 = extractvalue { ptr, i32 } %1773, 0
  store ptr %1774, ptr %5, align 8
  %1775 = extractvalue { ptr, i32 } %1773, 1
  store i32 %1775, ptr %6, align 4
  br label %1785

1776:                                             ; preds = %1769, %1767
  %1777 = landingpad { ptr, i32 }
          cleanup
  %1778 = extractvalue { ptr, i32 } %1777, 0
  store ptr %1778, ptr %5, align 8
  %1779 = extractvalue { ptr, i32 } %1777, 1
  store i32 %1779, ptr %6, align 4
  br label %1784

1780:                                             ; preds = %1770
  %1781 = landingpad { ptr, i32 }
          cleanup
  %1782 = extractvalue { ptr, i32 } %1781, 0
  store ptr %1782, ptr %5, align 8
  %1783 = extractvalue { ptr, i32 } %1781, 1
  store i32 %1783, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #8
  br label %1784

1784:                                             ; preds = %1780, %1776
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #8
  br label %1785

1785:                                             ; preds = %1784, %1772
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #8
  br label %1822

1786:                                             ; preds = %1771, %1730
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %110) #8
  %1787 = load ptr, ptr %109, align 8, !tbaa !5
  %1788 = icmp eq ptr %1787, null
  br i1 %1788, label %1790, label %1789

1789:                                             ; preds = %1786
  call void @_ZdaPv(ptr noundef %1787) #10
  br label %1790

1790:                                             ; preds = %1789, %1786
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %106) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %106) #8
  br label %1791

1791:                                             ; preds = %1790
  br label %1792

1792:                                             ; preds = %1791
  br label %1793

1793:                                             ; preds = %1792
  call void @llvm.lifetime.start.p0(i64 392, ptr %116) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %116)
  %1794 = getelementptr inbounds i8, ptr %116, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1794, ptr noundef @.str.27, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %1795 unwind label %1827

1795:                                             ; preds = %1793
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %118) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %118, ptr noundef nonnull align 8 dereferenceable(128) %116)
          to label %1796 unwind label %1831

1796:                                             ; preds = %1795
  %1797 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %118) #8
  %1798 = add i64 %1797, 3
  %1799 = trunc i64 %1798 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #8
  store i32 %1799, ptr %117, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #8
  %1800 = load i32, ptr %117, align 4, !tbaa !11
  %1801 = sext i32 %1800 to i64
  %1802 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1801) #9
          to label %1803 unwind label %1835

1803:                                             ; preds = %1796
  store ptr %1802, ptr %119, align 8, !tbaa !5
  %1804 = load ptr, ptr %119, align 8, !tbaa !5
  %1805 = load i32, ptr %117, align 4, !tbaa !11
  %1806 = sub nsw i32 %1805, 1
  %1807 = sext i32 %1806 to i64
  %1808 = getelementptr inbounds i8, ptr %1804, i64 %1807
  store i8 0, ptr %1808, align 1, !tbaa !13
  %1809 = load ptr, ptr %119, align 8, !tbaa !5
  %1810 = load i32, ptr %117, align 4, !tbaa !11
  %1811 = sub nsw i32 %1810, 2
  %1812 = sext i32 %1811 to i64
  %1813 = load double, ptr %3, align 8, !tbaa !9
  %1814 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1809, i64 noundef %1812, ptr noundef @.str.27, double noundef %1813) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %120) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %121) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %121, ptr noundef nonnull align 8 dereferenceable(128) %116)
          to label %1815 unwind label %1839

1815:                                             ; preds = %1803
  call void @llvm.lifetime.start.p0(i64 32, ptr %122) #8
  %1816 = load ptr, ptr %119, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %123) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %122, ptr noundef %1816, ptr noundef nonnull align 1 dereferenceable(1) %123)
          to label %1817 unwind label %1843

1817:                                             ; preds = %1815
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %120, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef nonnull align 8 dereferenceable(32) %122)
          to label %1818 unwind label %1847

1818:                                             ; preds = %1817
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %123) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %121) #8
  %1819 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %120)
          to label %1820 unwind label %1853

1820:                                             ; preds = %1818
  br i1 %1819, label %1821, label %1857

1821:                                             ; preds = %1820
  br label %1877

1822:                                             ; preds = %1785, %1762
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #8
  br label %1823

1823:                                             ; preds = %1822, %1761
  call void @llvm.lifetime.end.p0(i64 16, ptr %110) #8
  br label %1824

1824:                                             ; preds = %1823, %1744
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #8
  br label %1825

1825:                                             ; preds = %1824, %1740
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #8
  br label %1826

1826:                                             ; preds = %1825, %1736
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %106) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %106) #8
  br label %7986

1827:                                             ; preds = %1793
  %1828 = landingpad { ptr, i32 }
          cleanup
  %1829 = extractvalue { ptr, i32 } %1828, 0
  store ptr %1829, ptr %5, align 8
  %1830 = extractvalue { ptr, i32 } %1828, 1
  store i32 %1830, ptr %6, align 4
  br label %1917

1831:                                             ; preds = %1795
  %1832 = landingpad { ptr, i32 }
          cleanup
  %1833 = extractvalue { ptr, i32 } %1832, 0
  store ptr %1833, ptr %5, align 8
  %1834 = extractvalue { ptr, i32 } %1832, 1
  store i32 %1834, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #8
  br label %1916

1835:                                             ; preds = %1796
  %1836 = landingpad { ptr, i32 }
          cleanup
  %1837 = extractvalue { ptr, i32 } %1836, 0
  store ptr %1837, ptr %5, align 8
  %1838 = extractvalue { ptr, i32 } %1836, 1
  store i32 %1838, ptr %6, align 4
  br label %1915

1839:                                             ; preds = %1803
  %1840 = landingpad { ptr, i32 }
          cleanup
  %1841 = extractvalue { ptr, i32 } %1840, 0
  store ptr %1841, ptr %5, align 8
  %1842 = extractvalue { ptr, i32 } %1840, 1
  store i32 %1842, ptr %6, align 4
  br label %1852

1843:                                             ; preds = %1815
  %1844 = landingpad { ptr, i32 }
          cleanup
  %1845 = extractvalue { ptr, i32 } %1844, 0
  store ptr %1845, ptr %5, align 8
  %1846 = extractvalue { ptr, i32 } %1844, 1
  store i32 %1846, ptr %6, align 4
  br label %1851

1847:                                             ; preds = %1817
  %1848 = landingpad { ptr, i32 }
          cleanup
  %1849 = extractvalue { ptr, i32 } %1848, 0
  store ptr %1849, ptr %5, align 8
  %1850 = extractvalue { ptr, i32 } %1848, 1
  store i32 %1850, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #8
  br label %1851

1851:                                             ; preds = %1847, %1843
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %123) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #8
  br label %1852

1852:                                             ; preds = %1851, %1839
  call void @llvm.lifetime.end.p0(i64 32, ptr %121) #8
  br label %1914

1853:                                             ; preds = %1818
  %1854 = landingpad { ptr, i32 }
          cleanup
  %1855 = extractvalue { ptr, i32 } %1854, 0
  store ptr %1855, ptr %5, align 8
  %1856 = extractvalue { ptr, i32 } %1854, 1
  store i32 %1856, ptr %6, align 4
  br label %1913

1857:                                             ; preds = %1820
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %124)
          to label %1858 unwind label %1863

1858:                                             ; preds = %1857
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #8
  %1859 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %120)
          to label %1860 unwind label %1867

1860:                                             ; preds = %1858
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %125, i32 noundef 1, ptr noundef @.str.3, i32 noundef 84, ptr noundef %1859)
          to label %1861 unwind label %1867

1861:                                             ; preds = %1860
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %125, ptr noundef nonnull align 8 dereferenceable(8) %124)
          to label %1862 unwind label %1871

1862:                                             ; preds = %1861
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %125) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %124) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #8
  br label %1877

1863:                                             ; preds = %1857
  %1864 = landingpad { ptr, i32 }
          cleanup
  %1865 = extractvalue { ptr, i32 } %1864, 0
  store ptr %1865, ptr %5, align 8
  %1866 = extractvalue { ptr, i32 } %1864, 1
  store i32 %1866, ptr %6, align 4
  br label %1876

1867:                                             ; preds = %1860, %1858
  %1868 = landingpad { ptr, i32 }
          cleanup
  %1869 = extractvalue { ptr, i32 } %1868, 0
  store ptr %1869, ptr %5, align 8
  %1870 = extractvalue { ptr, i32 } %1868, 1
  store i32 %1870, ptr %6, align 4
  br label %1875

1871:                                             ; preds = %1861
  %1872 = landingpad { ptr, i32 }
          cleanup
  %1873 = extractvalue { ptr, i32 } %1872, 0
  store ptr %1873, ptr %5, align 8
  %1874 = extractvalue { ptr, i32 } %1872, 1
  store i32 %1874, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %125) #8
  br label %1875

1875:                                             ; preds = %1871, %1867
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %124) #8
  br label %1876

1876:                                             ; preds = %1875, %1863
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #8
  br label %1913

1877:                                             ; preds = %1862, %1821
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #8
  %1878 = load ptr, ptr %119, align 8, !tbaa !5
  %1879 = icmp eq ptr %1878, null
  br i1 %1879, label %1881, label %1880

1880:                                             ; preds = %1877
  call void @_ZdaPv(ptr noundef %1878) #10
  br label %1881

1881:                                             ; preds = %1880, %1877
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %116) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %116) #8
  br label %1882

1882:                                             ; preds = %1881
  br label %1883

1883:                                             ; preds = %1882
  br label %1884

1884:                                             ; preds = %1883
  call void @llvm.lifetime.start.p0(i64 392, ptr %126) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %126)
  %1885 = getelementptr inbounds i8, ptr %126, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1885, ptr noundef @.str.28, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %1886 unwind label %1918

1886:                                             ; preds = %1884
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %128) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %128, ptr noundef nonnull align 8 dereferenceable(128) %126)
          to label %1887 unwind label %1922

1887:                                             ; preds = %1886
  %1888 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %128) #8
  %1889 = add i64 %1888, 3
  %1890 = trunc i64 %1889 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #8
  store i32 %1890, ptr %127, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #8
  %1891 = load i32, ptr %127, align 4, !tbaa !11
  %1892 = sext i32 %1891 to i64
  %1893 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1892) #9
          to label %1894 unwind label %1926

1894:                                             ; preds = %1887
  store ptr %1893, ptr %129, align 8, !tbaa !5
  %1895 = load ptr, ptr %129, align 8, !tbaa !5
  %1896 = load i32, ptr %127, align 4, !tbaa !11
  %1897 = sub nsw i32 %1896, 1
  %1898 = sext i32 %1897 to i64
  %1899 = getelementptr inbounds i8, ptr %1895, i64 %1898
  store i8 0, ptr %1899, align 1, !tbaa !13
  %1900 = load ptr, ptr %129, align 8, !tbaa !5
  %1901 = load i32, ptr %127, align 4, !tbaa !11
  %1902 = sub nsw i32 %1901, 2
  %1903 = sext i32 %1902 to i64
  %1904 = load double, ptr %3, align 8, !tbaa !9
  %1905 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1900, i64 noundef %1903, ptr noundef @.str.28, double noundef %1904) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %130) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %131) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %131, ptr noundef nonnull align 8 dereferenceable(128) %126)
          to label %1906 unwind label %1930

1906:                                             ; preds = %1894
  call void @llvm.lifetime.start.p0(i64 32, ptr %132) #8
  %1907 = load ptr, ptr %129, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %133) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %133) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %132, ptr noundef %1907, ptr noundef nonnull align 1 dereferenceable(1) %133)
          to label %1908 unwind label %1934

1908:                                             ; preds = %1906
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %130, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %131, ptr noundef nonnull align 8 dereferenceable(32) %132)
          to label %1909 unwind label %1938

1909:                                             ; preds = %1908
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %133) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %133) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %132) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %131) #8
  %1910 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %130)
          to label %1911 unwind label %1944

1911:                                             ; preds = %1909
  br i1 %1910, label %1912, label %1948

1912:                                             ; preds = %1911
  br label %1968

1913:                                             ; preds = %1876, %1853
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #8
  br label %1914

1914:                                             ; preds = %1913, %1852
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #8
  br label %1915

1915:                                             ; preds = %1914, %1835
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #8
  br label %1916

1916:                                             ; preds = %1915, %1831
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #8
  br label %1917

1917:                                             ; preds = %1916, %1827
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %116) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %116) #8
  br label %7986

1918:                                             ; preds = %1884
  %1919 = landingpad { ptr, i32 }
          cleanup
  %1920 = extractvalue { ptr, i32 } %1919, 0
  store ptr %1920, ptr %5, align 8
  %1921 = extractvalue { ptr, i32 } %1919, 1
  store i32 %1921, ptr %6, align 4
  br label %2008

1922:                                             ; preds = %1886
  %1923 = landingpad { ptr, i32 }
          cleanup
  %1924 = extractvalue { ptr, i32 } %1923, 0
  store ptr %1924, ptr %5, align 8
  %1925 = extractvalue { ptr, i32 } %1923, 1
  store i32 %1925, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #8
  br label %2007

1926:                                             ; preds = %1887
  %1927 = landingpad { ptr, i32 }
          cleanup
  %1928 = extractvalue { ptr, i32 } %1927, 0
  store ptr %1928, ptr %5, align 8
  %1929 = extractvalue { ptr, i32 } %1927, 1
  store i32 %1929, ptr %6, align 4
  br label %2006

1930:                                             ; preds = %1894
  %1931 = landingpad { ptr, i32 }
          cleanup
  %1932 = extractvalue { ptr, i32 } %1931, 0
  store ptr %1932, ptr %5, align 8
  %1933 = extractvalue { ptr, i32 } %1931, 1
  store i32 %1933, ptr %6, align 4
  br label %1943

1934:                                             ; preds = %1906
  %1935 = landingpad { ptr, i32 }
          cleanup
  %1936 = extractvalue { ptr, i32 } %1935, 0
  store ptr %1936, ptr %5, align 8
  %1937 = extractvalue { ptr, i32 } %1935, 1
  store i32 %1937, ptr %6, align 4
  br label %1942

1938:                                             ; preds = %1908
  %1939 = landingpad { ptr, i32 }
          cleanup
  %1940 = extractvalue { ptr, i32 } %1939, 0
  store ptr %1940, ptr %5, align 8
  %1941 = extractvalue { ptr, i32 } %1939, 1
  store i32 %1941, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #8
  br label %1942

1942:                                             ; preds = %1938, %1934
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %133) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %133) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %132) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #8
  br label %1943

1943:                                             ; preds = %1942, %1930
  call void @llvm.lifetime.end.p0(i64 32, ptr %131) #8
  br label %2005

1944:                                             ; preds = %1909
  %1945 = landingpad { ptr, i32 }
          cleanup
  %1946 = extractvalue { ptr, i32 } %1945, 0
  store ptr %1946, ptr %5, align 8
  %1947 = extractvalue { ptr, i32 } %1945, 1
  store i32 %1947, ptr %6, align 4
  br label %2004

1948:                                             ; preds = %1911
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %134)
          to label %1949 unwind label %1954

1949:                                             ; preds = %1948
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #8
  %1950 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %130)
          to label %1951 unwind label %1958

1951:                                             ; preds = %1949
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %135, i32 noundef 1, ptr noundef @.str.3, i32 noundef 85, ptr noundef %1950)
          to label %1952 unwind label %1958

1952:                                             ; preds = %1951
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %135, ptr noundef nonnull align 8 dereferenceable(8) %134)
          to label %1953 unwind label %1962

1953:                                             ; preds = %1952
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %135) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %134) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #8
  br label %1968

1954:                                             ; preds = %1948
  %1955 = landingpad { ptr, i32 }
          cleanup
  %1956 = extractvalue { ptr, i32 } %1955, 0
  store ptr %1956, ptr %5, align 8
  %1957 = extractvalue { ptr, i32 } %1955, 1
  store i32 %1957, ptr %6, align 4
  br label %1967

1958:                                             ; preds = %1951, %1949
  %1959 = landingpad { ptr, i32 }
          cleanup
  %1960 = extractvalue { ptr, i32 } %1959, 0
  store ptr %1960, ptr %5, align 8
  %1961 = extractvalue { ptr, i32 } %1959, 1
  store i32 %1961, ptr %6, align 4
  br label %1966

1962:                                             ; preds = %1952
  %1963 = landingpad { ptr, i32 }
          cleanup
  %1964 = extractvalue { ptr, i32 } %1963, 0
  store ptr %1964, ptr %5, align 8
  %1965 = extractvalue { ptr, i32 } %1963, 1
  store i32 %1965, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %135) #8
  br label %1966

1966:                                             ; preds = %1962, %1958
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %134) #8
  br label %1967

1967:                                             ; preds = %1966, %1954
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #8
  br label %2004

1968:                                             ; preds = %1953, %1912
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %130) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %130) #8
  %1969 = load ptr, ptr %129, align 8, !tbaa !5
  %1970 = icmp eq ptr %1969, null
  br i1 %1970, label %1972, label %1971

1971:                                             ; preds = %1968
  call void @_ZdaPv(ptr noundef %1969) #10
  br label %1972

1972:                                             ; preds = %1971, %1968
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %126) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %126) #8
  br label %1973

1973:                                             ; preds = %1972
  br label %1974

1974:                                             ; preds = %1973
  br label %1975

1975:                                             ; preds = %1974
  call void @llvm.lifetime.start.p0(i64 392, ptr %136) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %136)
  %1976 = getelementptr inbounds i8, ptr %136, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1976, ptr noundef @.str.29, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %1977 unwind label %2009

1977:                                             ; preds = %1975
  call void @llvm.lifetime.start.p0(i64 4, ptr %137) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %138) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %138, ptr noundef nonnull align 8 dereferenceable(128) %136)
          to label %1978 unwind label %2013

1978:                                             ; preds = %1977
  %1979 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %138) #8
  %1980 = add i64 %1979, 3
  %1981 = trunc i64 %1980 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %138) #8
  store i32 %1981, ptr %137, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #8
  %1982 = load i32, ptr %137, align 4, !tbaa !11
  %1983 = sext i32 %1982 to i64
  %1984 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1983) #9
          to label %1985 unwind label %2017

1985:                                             ; preds = %1978
  store ptr %1984, ptr %139, align 8, !tbaa !5
  %1986 = load ptr, ptr %139, align 8, !tbaa !5
  %1987 = load i32, ptr %137, align 4, !tbaa !11
  %1988 = sub nsw i32 %1987, 1
  %1989 = sext i32 %1988 to i64
  %1990 = getelementptr inbounds i8, ptr %1986, i64 %1989
  store i8 0, ptr %1990, align 1, !tbaa !13
  %1991 = load ptr, ptr %139, align 8, !tbaa !5
  %1992 = load i32, ptr %137, align 4, !tbaa !11
  %1993 = sub nsw i32 %1992, 2
  %1994 = sext i32 %1993 to i64
  %1995 = load double, ptr %3, align 8, !tbaa !9
  %1996 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1991, i64 noundef %1994, ptr noundef @.str.29, double noundef %1995) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %140) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %141) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %141, ptr noundef nonnull align 8 dereferenceable(128) %136)
          to label %1997 unwind label %2021

1997:                                             ; preds = %1985
  call void @llvm.lifetime.start.p0(i64 32, ptr %142) #8
  %1998 = load ptr, ptr %139, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %143) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %142, ptr noundef %1998, ptr noundef nonnull align 1 dereferenceable(1) %143)
          to label %1999 unwind label %2025

1999:                                             ; preds = %1997
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %140, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %141, ptr noundef nonnull align 8 dereferenceable(32) %142)
          to label %2000 unwind label %2029

2000:                                             ; preds = %1999
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %143) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %142) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %141) #8
  %2001 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %140)
          to label %2002 unwind label %2035

2002:                                             ; preds = %2000
  br i1 %2001, label %2003, label %2039

2003:                                             ; preds = %2002
  br label %2059

2004:                                             ; preds = %1967, %1944
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %130) #8
  br label %2005

2005:                                             ; preds = %2004, %1943
  call void @llvm.lifetime.end.p0(i64 16, ptr %130) #8
  br label %2006

2006:                                             ; preds = %2005, %1926
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #8
  br label %2007

2007:                                             ; preds = %2006, %1922
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #8
  br label %2008

2008:                                             ; preds = %2007, %1918
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %126) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %126) #8
  br label %7986

2009:                                             ; preds = %1975
  %2010 = landingpad { ptr, i32 }
          cleanup
  %2011 = extractvalue { ptr, i32 } %2010, 0
  store ptr %2011, ptr %5, align 8
  %2012 = extractvalue { ptr, i32 } %2010, 1
  store i32 %2012, ptr %6, align 4
  br label %2099

2013:                                             ; preds = %1977
  %2014 = landingpad { ptr, i32 }
          cleanup
  %2015 = extractvalue { ptr, i32 } %2014, 0
  store ptr %2015, ptr %5, align 8
  %2016 = extractvalue { ptr, i32 } %2014, 1
  store i32 %2016, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %138) #8
  br label %2098

2017:                                             ; preds = %1978
  %2018 = landingpad { ptr, i32 }
          cleanup
  %2019 = extractvalue { ptr, i32 } %2018, 0
  store ptr %2019, ptr %5, align 8
  %2020 = extractvalue { ptr, i32 } %2018, 1
  store i32 %2020, ptr %6, align 4
  br label %2097

2021:                                             ; preds = %1985
  %2022 = landingpad { ptr, i32 }
          cleanup
  %2023 = extractvalue { ptr, i32 } %2022, 0
  store ptr %2023, ptr %5, align 8
  %2024 = extractvalue { ptr, i32 } %2022, 1
  store i32 %2024, ptr %6, align 4
  br label %2034

2025:                                             ; preds = %1997
  %2026 = landingpad { ptr, i32 }
          cleanup
  %2027 = extractvalue { ptr, i32 } %2026, 0
  store ptr %2027, ptr %5, align 8
  %2028 = extractvalue { ptr, i32 } %2026, 1
  store i32 %2028, ptr %6, align 4
  br label %2033

2029:                                             ; preds = %1999
  %2030 = landingpad { ptr, i32 }
          cleanup
  %2031 = extractvalue { ptr, i32 } %2030, 0
  store ptr %2031, ptr %5, align 8
  %2032 = extractvalue { ptr, i32 } %2030, 1
  store i32 %2032, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #8
  br label %2033

2033:                                             ; preds = %2029, %2025
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %143) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %142) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #8
  br label %2034

2034:                                             ; preds = %2033, %2021
  call void @llvm.lifetime.end.p0(i64 32, ptr %141) #8
  br label %2096

2035:                                             ; preds = %2000
  %2036 = landingpad { ptr, i32 }
          cleanup
  %2037 = extractvalue { ptr, i32 } %2036, 0
  store ptr %2037, ptr %5, align 8
  %2038 = extractvalue { ptr, i32 } %2036, 1
  store i32 %2038, ptr %6, align 4
  br label %2095

2039:                                             ; preds = %2002
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %2040 unwind label %2045

2040:                                             ; preds = %2039
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #8
  %2041 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %140)
          to label %2042 unwind label %2049

2042:                                             ; preds = %2040
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %145, i32 noundef 1, ptr noundef @.str.3, i32 noundef 86, ptr noundef %2041)
          to label %2043 unwind label %2049

2043:                                             ; preds = %2042
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %2044 unwind label %2053

2044:                                             ; preds = %2043
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %144) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #8
  br label %2059

2045:                                             ; preds = %2039
  %2046 = landingpad { ptr, i32 }
          cleanup
  %2047 = extractvalue { ptr, i32 } %2046, 0
  store ptr %2047, ptr %5, align 8
  %2048 = extractvalue { ptr, i32 } %2046, 1
  store i32 %2048, ptr %6, align 4
  br label %2058

2049:                                             ; preds = %2042, %2040
  %2050 = landingpad { ptr, i32 }
          cleanup
  %2051 = extractvalue { ptr, i32 } %2050, 0
  store ptr %2051, ptr %5, align 8
  %2052 = extractvalue { ptr, i32 } %2050, 1
  store i32 %2052, ptr %6, align 4
  br label %2057

2053:                                             ; preds = %2043
  %2054 = landingpad { ptr, i32 }
          cleanup
  %2055 = extractvalue { ptr, i32 } %2054, 0
  store ptr %2055, ptr %5, align 8
  %2056 = extractvalue { ptr, i32 } %2054, 1
  store i32 %2056, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #8
  br label %2057

2057:                                             ; preds = %2053, %2049
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %144) #8
  br label %2058

2058:                                             ; preds = %2057, %2045
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #8
  br label %2095

2059:                                             ; preds = %2044, %2003
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %140) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %140) #8
  %2060 = load ptr, ptr %139, align 8, !tbaa !5
  %2061 = icmp eq ptr %2060, null
  br i1 %2061, label %2063, label %2062

2062:                                             ; preds = %2059
  call void @_ZdaPv(ptr noundef %2060) #10
  br label %2063

2063:                                             ; preds = %2062, %2059
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %137) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %136) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %136) #8
  br label %2064

2064:                                             ; preds = %2063
  br label %2065

2065:                                             ; preds = %2064
  br label %2066

2066:                                             ; preds = %2065
  call void @llvm.lifetime.start.p0(i64 392, ptr %146) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %146)
  %2067 = getelementptr inbounds i8, ptr %146, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2067, ptr noundef @.str.30, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %2068 unwind label %2100

2068:                                             ; preds = %2066
  call void @llvm.lifetime.start.p0(i64 4, ptr %147) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %148) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %148, ptr noundef nonnull align 8 dereferenceable(128) %146)
          to label %2069 unwind label %2104

2069:                                             ; preds = %2068
  %2070 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %148) #8
  %2071 = add i64 %2070, 3
  %2072 = trunc i64 %2071 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %148) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %148) #8
  store i32 %2072, ptr %147, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #8
  %2073 = load i32, ptr %147, align 4, !tbaa !11
  %2074 = sext i32 %2073 to i64
  %2075 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2074) #9
          to label %2076 unwind label %2108

2076:                                             ; preds = %2069
  store ptr %2075, ptr %149, align 8, !tbaa !5
  %2077 = load ptr, ptr %149, align 8, !tbaa !5
  %2078 = load i32, ptr %147, align 4, !tbaa !11
  %2079 = sub nsw i32 %2078, 1
  %2080 = sext i32 %2079 to i64
  %2081 = getelementptr inbounds i8, ptr %2077, i64 %2080
  store i8 0, ptr %2081, align 1, !tbaa !13
  %2082 = load ptr, ptr %149, align 8, !tbaa !5
  %2083 = load i32, ptr %147, align 4, !tbaa !11
  %2084 = sub nsw i32 %2083, 2
  %2085 = sext i32 %2084 to i64
  %2086 = load double, ptr %3, align 8, !tbaa !9
  %2087 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2082, i64 noundef %2085, ptr noundef @.str.30, double noundef %2086) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %150) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %151) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %151, ptr noundef nonnull align 8 dereferenceable(128) %146)
          to label %2088 unwind label %2112

2088:                                             ; preds = %2076
  call void @llvm.lifetime.start.p0(i64 32, ptr %152) #8
  %2089 = load ptr, ptr %149, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %153) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %153) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %152, ptr noundef %2089, ptr noundef nonnull align 1 dereferenceable(1) %153)
          to label %2090 unwind label %2116

2090:                                             ; preds = %2088
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %150, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %151, ptr noundef nonnull align 8 dereferenceable(32) %152)
          to label %2091 unwind label %2120

2091:                                             ; preds = %2090
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %153) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %153) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %152) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %151) #8
  %2092 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %150)
          to label %2093 unwind label %2126

2093:                                             ; preds = %2091
  br i1 %2092, label %2094, label %2130

2094:                                             ; preds = %2093
  br label %2150

2095:                                             ; preds = %2058, %2035
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %140) #8
  br label %2096

2096:                                             ; preds = %2095, %2034
  call void @llvm.lifetime.end.p0(i64 16, ptr %140) #8
  br label %2097

2097:                                             ; preds = %2096, %2017
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #8
  br label %2098

2098:                                             ; preds = %2097, %2013
  call void @llvm.lifetime.end.p0(i64 4, ptr %137) #8
  br label %2099

2099:                                             ; preds = %2098, %2009
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %136) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %136) #8
  br label %7986

2100:                                             ; preds = %2066
  %2101 = landingpad { ptr, i32 }
          cleanup
  %2102 = extractvalue { ptr, i32 } %2101, 0
  store ptr %2102, ptr %5, align 8
  %2103 = extractvalue { ptr, i32 } %2101, 1
  store i32 %2103, ptr %6, align 4
  br label %2190

2104:                                             ; preds = %2068
  %2105 = landingpad { ptr, i32 }
          cleanup
  %2106 = extractvalue { ptr, i32 } %2105, 0
  store ptr %2106, ptr %5, align 8
  %2107 = extractvalue { ptr, i32 } %2105, 1
  store i32 %2107, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %148) #8
  br label %2189

2108:                                             ; preds = %2069
  %2109 = landingpad { ptr, i32 }
          cleanup
  %2110 = extractvalue { ptr, i32 } %2109, 0
  store ptr %2110, ptr %5, align 8
  %2111 = extractvalue { ptr, i32 } %2109, 1
  store i32 %2111, ptr %6, align 4
  br label %2188

2112:                                             ; preds = %2076
  %2113 = landingpad { ptr, i32 }
          cleanup
  %2114 = extractvalue { ptr, i32 } %2113, 0
  store ptr %2114, ptr %5, align 8
  %2115 = extractvalue { ptr, i32 } %2113, 1
  store i32 %2115, ptr %6, align 4
  br label %2125

2116:                                             ; preds = %2088
  %2117 = landingpad { ptr, i32 }
          cleanup
  %2118 = extractvalue { ptr, i32 } %2117, 0
  store ptr %2118, ptr %5, align 8
  %2119 = extractvalue { ptr, i32 } %2117, 1
  store i32 %2119, ptr %6, align 4
  br label %2124

2120:                                             ; preds = %2090
  %2121 = landingpad { ptr, i32 }
          cleanup
  %2122 = extractvalue { ptr, i32 } %2121, 0
  store ptr %2122, ptr %5, align 8
  %2123 = extractvalue { ptr, i32 } %2121, 1
  store i32 %2123, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #8
  br label %2124

2124:                                             ; preds = %2120, %2116
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %153) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %153) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %152) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #8
  br label %2125

2125:                                             ; preds = %2124, %2112
  call void @llvm.lifetime.end.p0(i64 32, ptr %151) #8
  br label %2187

2126:                                             ; preds = %2091
  %2127 = landingpad { ptr, i32 }
          cleanup
  %2128 = extractvalue { ptr, i32 } %2127, 0
  store ptr %2128, ptr %5, align 8
  %2129 = extractvalue { ptr, i32 } %2127, 1
  store i32 %2129, ptr %6, align 4
  br label %2186

2130:                                             ; preds = %2093
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %154)
          to label %2131 unwind label %2136

2131:                                             ; preds = %2130
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #8
  %2132 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %150)
          to label %2133 unwind label %2140

2133:                                             ; preds = %2131
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %155, i32 noundef 1, ptr noundef @.str.3, i32 noundef 87, ptr noundef %2132)
          to label %2134 unwind label %2140

2134:                                             ; preds = %2133
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %155, ptr noundef nonnull align 8 dereferenceable(8) %154)
          to label %2135 unwind label %2144

2135:                                             ; preds = %2134
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %155) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #8
  br label %2150

2136:                                             ; preds = %2130
  %2137 = landingpad { ptr, i32 }
          cleanup
  %2138 = extractvalue { ptr, i32 } %2137, 0
  store ptr %2138, ptr %5, align 8
  %2139 = extractvalue { ptr, i32 } %2137, 1
  store i32 %2139, ptr %6, align 4
  br label %2149

2140:                                             ; preds = %2133, %2131
  %2141 = landingpad { ptr, i32 }
          cleanup
  %2142 = extractvalue { ptr, i32 } %2141, 0
  store ptr %2142, ptr %5, align 8
  %2143 = extractvalue { ptr, i32 } %2141, 1
  store i32 %2143, ptr %6, align 4
  br label %2148

2144:                                             ; preds = %2134
  %2145 = landingpad { ptr, i32 }
          cleanup
  %2146 = extractvalue { ptr, i32 } %2145, 0
  store ptr %2146, ptr %5, align 8
  %2147 = extractvalue { ptr, i32 } %2145, 1
  store i32 %2147, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %155) #8
  br label %2148

2148:                                             ; preds = %2144, %2140
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #8
  br label %2149

2149:                                             ; preds = %2148, %2136
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #8
  br label %2186

2150:                                             ; preds = %2135, %2094
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %150) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %150) #8
  %2151 = load ptr, ptr %149, align 8, !tbaa !5
  %2152 = icmp eq ptr %2151, null
  br i1 %2152, label %2154, label %2153

2153:                                             ; preds = %2150
  call void @_ZdaPv(ptr noundef %2151) #10
  br label %2154

2154:                                             ; preds = %2153, %2150
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %147) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %146) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %146) #8
  br label %2155

2155:                                             ; preds = %2154
  br label %2156

2156:                                             ; preds = %2155
  br label %2157

2157:                                             ; preds = %2156
  call void @llvm.lifetime.start.p0(i64 392, ptr %156) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %156)
  %2158 = getelementptr inbounds i8, ptr %156, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2158, ptr noundef @.str.31, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %2159 unwind label %2191

2159:                                             ; preds = %2157
  call void @llvm.lifetime.start.p0(i64 4, ptr %157) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %158) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %158, ptr noundef nonnull align 8 dereferenceable(128) %156)
          to label %2160 unwind label %2195

2160:                                             ; preds = %2159
  %2161 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %158) #8
  %2162 = add i64 %2161, 3
  %2163 = trunc i64 %2162 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %158) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %158) #8
  store i32 %2163, ptr %157, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #8
  %2164 = load i32, ptr %157, align 4, !tbaa !11
  %2165 = sext i32 %2164 to i64
  %2166 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2165) #9
          to label %2167 unwind label %2199

2167:                                             ; preds = %2160
  store ptr %2166, ptr %159, align 8, !tbaa !5
  %2168 = load ptr, ptr %159, align 8, !tbaa !5
  %2169 = load i32, ptr %157, align 4, !tbaa !11
  %2170 = sub nsw i32 %2169, 1
  %2171 = sext i32 %2170 to i64
  %2172 = getelementptr inbounds i8, ptr %2168, i64 %2171
  store i8 0, ptr %2172, align 1, !tbaa !13
  %2173 = load ptr, ptr %159, align 8, !tbaa !5
  %2174 = load i32, ptr %157, align 4, !tbaa !11
  %2175 = sub nsw i32 %2174, 2
  %2176 = sext i32 %2175 to i64
  %2177 = load double, ptr %3, align 8, !tbaa !9
  %2178 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2173, i64 noundef %2176, ptr noundef @.str.31, double noundef %2177) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %160) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %161) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %161, ptr noundef nonnull align 8 dereferenceable(128) %156)
          to label %2179 unwind label %2203

2179:                                             ; preds = %2167
  call void @llvm.lifetime.start.p0(i64 32, ptr %162) #8
  %2180 = load ptr, ptr %159, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %163) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %163) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %162, ptr noundef %2180, ptr noundef nonnull align 1 dereferenceable(1) %163)
          to label %2181 unwind label %2207

2181:                                             ; preds = %2179
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %160, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %161, ptr noundef nonnull align 8 dereferenceable(32) %162)
          to label %2182 unwind label %2211

2182:                                             ; preds = %2181
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %163) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %163) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %162) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %161) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %161) #8
  %2183 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %160)
          to label %2184 unwind label %2217

2184:                                             ; preds = %2182
  br i1 %2183, label %2185, label %2221

2185:                                             ; preds = %2184
  br label %2241

2186:                                             ; preds = %2149, %2126
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %150) #8
  br label %2187

2187:                                             ; preds = %2186, %2125
  call void @llvm.lifetime.end.p0(i64 16, ptr %150) #8
  br label %2188

2188:                                             ; preds = %2187, %2108
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #8
  br label %2189

2189:                                             ; preds = %2188, %2104
  call void @llvm.lifetime.end.p0(i64 4, ptr %147) #8
  br label %2190

2190:                                             ; preds = %2189, %2100
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %146) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %146) #8
  br label %7986

2191:                                             ; preds = %2157
  %2192 = landingpad { ptr, i32 }
          cleanup
  %2193 = extractvalue { ptr, i32 } %2192, 0
  store ptr %2193, ptr %5, align 8
  %2194 = extractvalue { ptr, i32 } %2192, 1
  store i32 %2194, ptr %6, align 4
  br label %2281

2195:                                             ; preds = %2159
  %2196 = landingpad { ptr, i32 }
          cleanup
  %2197 = extractvalue { ptr, i32 } %2196, 0
  store ptr %2197, ptr %5, align 8
  %2198 = extractvalue { ptr, i32 } %2196, 1
  store i32 %2198, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %158) #8
  br label %2280

2199:                                             ; preds = %2160
  %2200 = landingpad { ptr, i32 }
          cleanup
  %2201 = extractvalue { ptr, i32 } %2200, 0
  store ptr %2201, ptr %5, align 8
  %2202 = extractvalue { ptr, i32 } %2200, 1
  store i32 %2202, ptr %6, align 4
  br label %2279

2203:                                             ; preds = %2167
  %2204 = landingpad { ptr, i32 }
          cleanup
  %2205 = extractvalue { ptr, i32 } %2204, 0
  store ptr %2205, ptr %5, align 8
  %2206 = extractvalue { ptr, i32 } %2204, 1
  store i32 %2206, ptr %6, align 4
  br label %2216

2207:                                             ; preds = %2179
  %2208 = landingpad { ptr, i32 }
          cleanup
  %2209 = extractvalue { ptr, i32 } %2208, 0
  store ptr %2209, ptr %5, align 8
  %2210 = extractvalue { ptr, i32 } %2208, 1
  store i32 %2210, ptr %6, align 4
  br label %2215

2211:                                             ; preds = %2181
  %2212 = landingpad { ptr, i32 }
          cleanup
  %2213 = extractvalue { ptr, i32 } %2212, 0
  store ptr %2213, ptr %5, align 8
  %2214 = extractvalue { ptr, i32 } %2212, 1
  store i32 %2214, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #8
  br label %2215

2215:                                             ; preds = %2211, %2207
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %163) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %163) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %162) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %161) #8
  br label %2216

2216:                                             ; preds = %2215, %2203
  call void @llvm.lifetime.end.p0(i64 32, ptr %161) #8
  br label %2278

2217:                                             ; preds = %2182
  %2218 = landingpad { ptr, i32 }
          cleanup
  %2219 = extractvalue { ptr, i32 } %2218, 0
  store ptr %2219, ptr %5, align 8
  %2220 = extractvalue { ptr, i32 } %2218, 1
  store i32 %2220, ptr %6, align 4
  br label %2277

2221:                                             ; preds = %2184
  call void @llvm.lifetime.start.p0(i64 8, ptr %164) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %164)
          to label %2222 unwind label %2227

2222:                                             ; preds = %2221
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #8
  %2223 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %160)
          to label %2224 unwind label %2231

2224:                                             ; preds = %2222
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %165, i32 noundef 1, ptr noundef @.str.3, i32 noundef 88, ptr noundef %2223)
          to label %2225 unwind label %2231

2225:                                             ; preds = %2224
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %165, ptr noundef nonnull align 8 dereferenceable(8) %164)
          to label %2226 unwind label %2235

2226:                                             ; preds = %2225
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %165) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %164) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #8
  br label %2241

2227:                                             ; preds = %2221
  %2228 = landingpad { ptr, i32 }
          cleanup
  %2229 = extractvalue { ptr, i32 } %2228, 0
  store ptr %2229, ptr %5, align 8
  %2230 = extractvalue { ptr, i32 } %2228, 1
  store i32 %2230, ptr %6, align 4
  br label %2240

2231:                                             ; preds = %2224, %2222
  %2232 = landingpad { ptr, i32 }
          cleanup
  %2233 = extractvalue { ptr, i32 } %2232, 0
  store ptr %2233, ptr %5, align 8
  %2234 = extractvalue { ptr, i32 } %2232, 1
  store i32 %2234, ptr %6, align 4
  br label %2239

2235:                                             ; preds = %2225
  %2236 = landingpad { ptr, i32 }
          cleanup
  %2237 = extractvalue { ptr, i32 } %2236, 0
  store ptr %2237, ptr %5, align 8
  %2238 = extractvalue { ptr, i32 } %2236, 1
  store i32 %2238, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %165) #8
  br label %2239

2239:                                             ; preds = %2235, %2231
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %164) #8
  br label %2240

2240:                                             ; preds = %2239, %2227
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #8
  br label %2277

2241:                                             ; preds = %2226, %2185
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %160) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %160) #8
  %2242 = load ptr, ptr %159, align 8, !tbaa !5
  %2243 = icmp eq ptr %2242, null
  br i1 %2243, label %2245, label %2244

2244:                                             ; preds = %2241
  call void @_ZdaPv(ptr noundef %2242) #10
  br label %2245

2245:                                             ; preds = %2244, %2241
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %157) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %156) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %156) #8
  br label %2246

2246:                                             ; preds = %2245
  br label %2247

2247:                                             ; preds = %2246
  br label %2248

2248:                                             ; preds = %2247
  call void @llvm.lifetime.start.p0(i64 392, ptr %166) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %166)
  %2249 = getelementptr inbounds i8, ptr %166, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2249, ptr noundef @.str.16, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %2250 unwind label %2282

2250:                                             ; preds = %2248
  call void @llvm.lifetime.start.p0(i64 4, ptr %167) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %168) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %168, ptr noundef nonnull align 8 dereferenceable(128) %166)
          to label %2251 unwind label %2286

2251:                                             ; preds = %2250
  %2252 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %168) #8
  %2253 = add i64 %2252, 3
  %2254 = trunc i64 %2253 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %168) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %168) #8
  store i32 %2254, ptr %167, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %169) #8
  %2255 = load i32, ptr %167, align 4, !tbaa !11
  %2256 = sext i32 %2255 to i64
  %2257 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2256) #9
          to label %2258 unwind label %2290

2258:                                             ; preds = %2251
  store ptr %2257, ptr %169, align 8, !tbaa !5
  %2259 = load ptr, ptr %169, align 8, !tbaa !5
  %2260 = load i32, ptr %167, align 4, !tbaa !11
  %2261 = sub nsw i32 %2260, 1
  %2262 = sext i32 %2261 to i64
  %2263 = getelementptr inbounds i8, ptr %2259, i64 %2262
  store i8 0, ptr %2263, align 1, !tbaa !13
  %2264 = load ptr, ptr %169, align 8, !tbaa !5
  %2265 = load i32, ptr %167, align 4, !tbaa !11
  %2266 = sub nsw i32 %2265, 2
  %2267 = sext i32 %2266 to i64
  %2268 = load double, ptr %3, align 8, !tbaa !9
  %2269 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2264, i64 noundef %2267, ptr noundef @.str.16, double noundef %2268) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %170) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %171) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %171, ptr noundef nonnull align 8 dereferenceable(128) %166)
          to label %2270 unwind label %2294

2270:                                             ; preds = %2258
  call void @llvm.lifetime.start.p0(i64 32, ptr %172) #8
  %2271 = load ptr, ptr %169, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %173) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %173) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %172, ptr noundef %2271, ptr noundef nonnull align 1 dereferenceable(1) %173)
          to label %2272 unwind label %2298

2272:                                             ; preds = %2270
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %170, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %171, ptr noundef nonnull align 8 dereferenceable(32) %172)
          to label %2273 unwind label %2302

2273:                                             ; preds = %2272
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %173) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %173) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %172) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %171) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %171) #8
  %2274 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %170)
          to label %2275 unwind label %2308

2275:                                             ; preds = %2273
  br i1 %2274, label %2276, label %2312

2276:                                             ; preds = %2275
  br label %2332

2277:                                             ; preds = %2240, %2217
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %160) #8
  br label %2278

2278:                                             ; preds = %2277, %2216
  call void @llvm.lifetime.end.p0(i64 16, ptr %160) #8
  br label %2279

2279:                                             ; preds = %2278, %2199
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #8
  br label %2280

2280:                                             ; preds = %2279, %2195
  call void @llvm.lifetime.end.p0(i64 4, ptr %157) #8
  br label %2281

2281:                                             ; preds = %2280, %2191
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %156) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %156) #8
  br label %7986

2282:                                             ; preds = %2248
  %2283 = landingpad { ptr, i32 }
          cleanup
  %2284 = extractvalue { ptr, i32 } %2283, 0
  store ptr %2284, ptr %5, align 8
  %2285 = extractvalue { ptr, i32 } %2283, 1
  store i32 %2285, ptr %6, align 4
  br label %2372

2286:                                             ; preds = %2250
  %2287 = landingpad { ptr, i32 }
          cleanup
  %2288 = extractvalue { ptr, i32 } %2287, 0
  store ptr %2288, ptr %5, align 8
  %2289 = extractvalue { ptr, i32 } %2287, 1
  store i32 %2289, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %168) #8
  br label %2371

2290:                                             ; preds = %2251
  %2291 = landingpad { ptr, i32 }
          cleanup
  %2292 = extractvalue { ptr, i32 } %2291, 0
  store ptr %2292, ptr %5, align 8
  %2293 = extractvalue { ptr, i32 } %2291, 1
  store i32 %2293, ptr %6, align 4
  br label %2370

2294:                                             ; preds = %2258
  %2295 = landingpad { ptr, i32 }
          cleanup
  %2296 = extractvalue { ptr, i32 } %2295, 0
  store ptr %2296, ptr %5, align 8
  %2297 = extractvalue { ptr, i32 } %2295, 1
  store i32 %2297, ptr %6, align 4
  br label %2307

2298:                                             ; preds = %2270
  %2299 = landingpad { ptr, i32 }
          cleanup
  %2300 = extractvalue { ptr, i32 } %2299, 0
  store ptr %2300, ptr %5, align 8
  %2301 = extractvalue { ptr, i32 } %2299, 1
  store i32 %2301, ptr %6, align 4
  br label %2306

2302:                                             ; preds = %2272
  %2303 = landingpad { ptr, i32 }
          cleanup
  %2304 = extractvalue { ptr, i32 } %2303, 0
  store ptr %2304, ptr %5, align 8
  %2305 = extractvalue { ptr, i32 } %2303, 1
  store i32 %2305, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #8
  br label %2306

2306:                                             ; preds = %2302, %2298
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %173) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %173) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %172) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %171) #8
  br label %2307

2307:                                             ; preds = %2306, %2294
  call void @llvm.lifetime.end.p0(i64 32, ptr %171) #8
  br label %2369

2308:                                             ; preds = %2273
  %2309 = landingpad { ptr, i32 }
          cleanup
  %2310 = extractvalue { ptr, i32 } %2309, 0
  store ptr %2310, ptr %5, align 8
  %2311 = extractvalue { ptr, i32 } %2309, 1
  store i32 %2311, ptr %6, align 4
  br label %2368

2312:                                             ; preds = %2275
  call void @llvm.lifetime.start.p0(i64 8, ptr %174) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %174)
          to label %2313 unwind label %2318

2313:                                             ; preds = %2312
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #8
  %2314 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %170)
          to label %2315 unwind label %2322

2315:                                             ; preds = %2313
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %175, i32 noundef 1, ptr noundef @.str.3, i32 noundef 89, ptr noundef %2314)
          to label %2316 unwind label %2322

2316:                                             ; preds = %2315
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %175, ptr noundef nonnull align 8 dereferenceable(8) %174)
          to label %2317 unwind label %2326

2317:                                             ; preds = %2316
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %175) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %174) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #8
  br label %2332

2318:                                             ; preds = %2312
  %2319 = landingpad { ptr, i32 }
          cleanup
  %2320 = extractvalue { ptr, i32 } %2319, 0
  store ptr %2320, ptr %5, align 8
  %2321 = extractvalue { ptr, i32 } %2319, 1
  store i32 %2321, ptr %6, align 4
  br label %2331

2322:                                             ; preds = %2315, %2313
  %2323 = landingpad { ptr, i32 }
          cleanup
  %2324 = extractvalue { ptr, i32 } %2323, 0
  store ptr %2324, ptr %5, align 8
  %2325 = extractvalue { ptr, i32 } %2323, 1
  store i32 %2325, ptr %6, align 4
  br label %2330

2326:                                             ; preds = %2316
  %2327 = landingpad { ptr, i32 }
          cleanup
  %2328 = extractvalue { ptr, i32 } %2327, 0
  store ptr %2328, ptr %5, align 8
  %2329 = extractvalue { ptr, i32 } %2327, 1
  store i32 %2329, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %175) #8
  br label %2330

2330:                                             ; preds = %2326, %2322
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %174) #8
  br label %2331

2331:                                             ; preds = %2330, %2318
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #8
  br label %2368

2332:                                             ; preds = %2317, %2276
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %170) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %170) #8
  %2333 = load ptr, ptr %169, align 8, !tbaa !5
  %2334 = icmp eq ptr %2333, null
  br i1 %2334, label %2336, label %2335

2335:                                             ; preds = %2332
  call void @_ZdaPv(ptr noundef %2333) #10
  br label %2336

2336:                                             ; preds = %2335, %2332
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %167) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %166) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %166) #8
  br label %2337

2337:                                             ; preds = %2336
  br label %2338

2338:                                             ; preds = %2337
  br label %2339

2339:                                             ; preds = %2338
  call void @llvm.lifetime.start.p0(i64 392, ptr %176) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %176)
  %2340 = getelementptr inbounds i8, ptr %176, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2340, ptr noundef @.str.32, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %2341 unwind label %2373

2341:                                             ; preds = %2339
  call void @llvm.lifetime.start.p0(i64 4, ptr %177) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %178) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %178, ptr noundef nonnull align 8 dereferenceable(128) %176)
          to label %2342 unwind label %2377

2342:                                             ; preds = %2341
  %2343 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %178) #8
  %2344 = add i64 %2343, 3
  %2345 = trunc i64 %2344 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %178) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %178) #8
  store i32 %2345, ptr %177, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %179) #8
  %2346 = load i32, ptr %177, align 4, !tbaa !11
  %2347 = sext i32 %2346 to i64
  %2348 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2347) #9
          to label %2349 unwind label %2381

2349:                                             ; preds = %2342
  store ptr %2348, ptr %179, align 8, !tbaa !5
  %2350 = load ptr, ptr %179, align 8, !tbaa !5
  %2351 = load i32, ptr %177, align 4, !tbaa !11
  %2352 = sub nsw i32 %2351, 1
  %2353 = sext i32 %2352 to i64
  %2354 = getelementptr inbounds i8, ptr %2350, i64 %2353
  store i8 0, ptr %2354, align 1, !tbaa !13
  %2355 = load ptr, ptr %179, align 8, !tbaa !5
  %2356 = load i32, ptr %177, align 4, !tbaa !11
  %2357 = sub nsw i32 %2356, 2
  %2358 = sext i32 %2357 to i64
  %2359 = load double, ptr %3, align 8, !tbaa !9
  %2360 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2355, i64 noundef %2358, ptr noundef @.str.32, double noundef %2359) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %180) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %181) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %181, ptr noundef nonnull align 8 dereferenceable(128) %176)
          to label %2361 unwind label %2385

2361:                                             ; preds = %2349
  call void @llvm.lifetime.start.p0(i64 32, ptr %182) #8
  %2362 = load ptr, ptr %179, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %183) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %183) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %182, ptr noundef %2362, ptr noundef nonnull align 1 dereferenceable(1) %183)
          to label %2363 unwind label %2389

2363:                                             ; preds = %2361
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %180, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %181, ptr noundef nonnull align 8 dereferenceable(32) %182)
          to label %2364 unwind label %2393

2364:                                             ; preds = %2363
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %182) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %183) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %183) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %182) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %181) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %181) #8
  %2365 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %180)
          to label %2366 unwind label %2399

2366:                                             ; preds = %2364
  br i1 %2365, label %2367, label %2403

2367:                                             ; preds = %2366
  br label %2423

2368:                                             ; preds = %2331, %2308
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %170) #8
  br label %2369

2369:                                             ; preds = %2368, %2307
  call void @llvm.lifetime.end.p0(i64 16, ptr %170) #8
  br label %2370

2370:                                             ; preds = %2369, %2290
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #8
  br label %2371

2371:                                             ; preds = %2370, %2286
  call void @llvm.lifetime.end.p0(i64 4, ptr %167) #8
  br label %2372

2372:                                             ; preds = %2371, %2282
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %166) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %166) #8
  br label %7986

2373:                                             ; preds = %2339
  %2374 = landingpad { ptr, i32 }
          cleanup
  %2375 = extractvalue { ptr, i32 } %2374, 0
  store ptr %2375, ptr %5, align 8
  %2376 = extractvalue { ptr, i32 } %2374, 1
  store i32 %2376, ptr %6, align 4
  br label %2463

2377:                                             ; preds = %2341
  %2378 = landingpad { ptr, i32 }
          cleanup
  %2379 = extractvalue { ptr, i32 } %2378, 0
  store ptr %2379, ptr %5, align 8
  %2380 = extractvalue { ptr, i32 } %2378, 1
  store i32 %2380, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %178) #8
  br label %2462

2381:                                             ; preds = %2342
  %2382 = landingpad { ptr, i32 }
          cleanup
  %2383 = extractvalue { ptr, i32 } %2382, 0
  store ptr %2383, ptr %5, align 8
  %2384 = extractvalue { ptr, i32 } %2382, 1
  store i32 %2384, ptr %6, align 4
  br label %2461

2385:                                             ; preds = %2349
  %2386 = landingpad { ptr, i32 }
          cleanup
  %2387 = extractvalue { ptr, i32 } %2386, 0
  store ptr %2387, ptr %5, align 8
  %2388 = extractvalue { ptr, i32 } %2386, 1
  store i32 %2388, ptr %6, align 4
  br label %2398

2389:                                             ; preds = %2361
  %2390 = landingpad { ptr, i32 }
          cleanup
  %2391 = extractvalue { ptr, i32 } %2390, 0
  store ptr %2391, ptr %5, align 8
  %2392 = extractvalue { ptr, i32 } %2390, 1
  store i32 %2392, ptr %6, align 4
  br label %2397

2393:                                             ; preds = %2363
  %2394 = landingpad { ptr, i32 }
          cleanup
  %2395 = extractvalue { ptr, i32 } %2394, 0
  store ptr %2395, ptr %5, align 8
  %2396 = extractvalue { ptr, i32 } %2394, 1
  store i32 %2396, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %182) #8
  br label %2397

2397:                                             ; preds = %2393, %2389
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %183) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %183) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %182) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %181) #8
  br label %2398

2398:                                             ; preds = %2397, %2385
  call void @llvm.lifetime.end.p0(i64 32, ptr %181) #8
  br label %2460

2399:                                             ; preds = %2364
  %2400 = landingpad { ptr, i32 }
          cleanup
  %2401 = extractvalue { ptr, i32 } %2400, 0
  store ptr %2401, ptr %5, align 8
  %2402 = extractvalue { ptr, i32 } %2400, 1
  store i32 %2402, ptr %6, align 4
  br label %2459

2403:                                             ; preds = %2366
  call void @llvm.lifetime.start.p0(i64 8, ptr %184) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %184)
          to label %2404 unwind label %2409

2404:                                             ; preds = %2403
  call void @llvm.lifetime.start.p0(i64 8, ptr %185) #8
  %2405 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %180)
          to label %2406 unwind label %2413

2406:                                             ; preds = %2404
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %185, i32 noundef 1, ptr noundef @.str.3, i32 noundef 90, ptr noundef %2405)
          to label %2407 unwind label %2413

2407:                                             ; preds = %2406
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %185, ptr noundef nonnull align 8 dereferenceable(8) %184)
          to label %2408 unwind label %2417

2408:                                             ; preds = %2407
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %185) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %184) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #8
  br label %2423

2409:                                             ; preds = %2403
  %2410 = landingpad { ptr, i32 }
          cleanup
  %2411 = extractvalue { ptr, i32 } %2410, 0
  store ptr %2411, ptr %5, align 8
  %2412 = extractvalue { ptr, i32 } %2410, 1
  store i32 %2412, ptr %6, align 4
  br label %2422

2413:                                             ; preds = %2406, %2404
  %2414 = landingpad { ptr, i32 }
          cleanup
  %2415 = extractvalue { ptr, i32 } %2414, 0
  store ptr %2415, ptr %5, align 8
  %2416 = extractvalue { ptr, i32 } %2414, 1
  store i32 %2416, ptr %6, align 4
  br label %2421

2417:                                             ; preds = %2407
  %2418 = landingpad { ptr, i32 }
          cleanup
  %2419 = extractvalue { ptr, i32 } %2418, 0
  store ptr %2419, ptr %5, align 8
  %2420 = extractvalue { ptr, i32 } %2418, 1
  store i32 %2420, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %185) #8
  br label %2421

2421:                                             ; preds = %2417, %2413
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %184) #8
  br label %2422

2422:                                             ; preds = %2421, %2409
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #8
  br label %2459

2423:                                             ; preds = %2408, %2367
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %180) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %180) #8
  %2424 = load ptr, ptr %179, align 8, !tbaa !5
  %2425 = icmp eq ptr %2424, null
  br i1 %2425, label %2427, label %2426

2426:                                             ; preds = %2423
  call void @_ZdaPv(ptr noundef %2424) #10
  br label %2427

2427:                                             ; preds = %2426, %2423
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %177) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %176) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %176) #8
  br label %2428

2428:                                             ; preds = %2427
  br label %2429

2429:                                             ; preds = %2428
  br label %2430

2430:                                             ; preds = %2429
  call void @llvm.lifetime.start.p0(i64 392, ptr %186) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %186)
  %2431 = getelementptr inbounds i8, ptr %186, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2431, ptr noundef @.str.33, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %2432 unwind label %2464

2432:                                             ; preds = %2430
  call void @llvm.lifetime.start.p0(i64 4, ptr %187) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %188) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %188, ptr noundef nonnull align 8 dereferenceable(128) %186)
          to label %2433 unwind label %2468

2433:                                             ; preds = %2432
  %2434 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %188) #8
  %2435 = add i64 %2434, 3
  %2436 = trunc i64 %2435 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %188) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %188) #8
  store i32 %2436, ptr %187, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %189) #8
  %2437 = load i32, ptr %187, align 4, !tbaa !11
  %2438 = sext i32 %2437 to i64
  %2439 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2438) #9
          to label %2440 unwind label %2472

2440:                                             ; preds = %2433
  store ptr %2439, ptr %189, align 8, !tbaa !5
  %2441 = load ptr, ptr %189, align 8, !tbaa !5
  %2442 = load i32, ptr %187, align 4, !tbaa !11
  %2443 = sub nsw i32 %2442, 1
  %2444 = sext i32 %2443 to i64
  %2445 = getelementptr inbounds i8, ptr %2441, i64 %2444
  store i8 0, ptr %2445, align 1, !tbaa !13
  %2446 = load ptr, ptr %189, align 8, !tbaa !5
  %2447 = load i32, ptr %187, align 4, !tbaa !11
  %2448 = sub nsw i32 %2447, 2
  %2449 = sext i32 %2448 to i64
  %2450 = load double, ptr %3, align 8, !tbaa !9
  %2451 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2446, i64 noundef %2449, ptr noundef @.str.33, double noundef %2450) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %190) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %191) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %191, ptr noundef nonnull align 8 dereferenceable(128) %186)
          to label %2452 unwind label %2476

2452:                                             ; preds = %2440
  call void @llvm.lifetime.start.p0(i64 32, ptr %192) #8
  %2453 = load ptr, ptr %189, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %193) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %193) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %192, ptr noundef %2453, ptr noundef nonnull align 1 dereferenceable(1) %193)
          to label %2454 unwind label %2480

2454:                                             ; preds = %2452
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %190, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %191, ptr noundef nonnull align 8 dereferenceable(32) %192)
          to label %2455 unwind label %2484

2455:                                             ; preds = %2454
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %192) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %193) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %193) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %192) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %191) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %191) #8
  %2456 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %190)
          to label %2457 unwind label %2490

2457:                                             ; preds = %2455
  br i1 %2456, label %2458, label %2494

2458:                                             ; preds = %2457
  br label %2514

2459:                                             ; preds = %2422, %2399
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %180) #8
  br label %2460

2460:                                             ; preds = %2459, %2398
  call void @llvm.lifetime.end.p0(i64 16, ptr %180) #8
  br label %2461

2461:                                             ; preds = %2460, %2381
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #8
  br label %2462

2462:                                             ; preds = %2461, %2377
  call void @llvm.lifetime.end.p0(i64 4, ptr %177) #8
  br label %2463

2463:                                             ; preds = %2462, %2373
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %176) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %176) #8
  br label %7986

2464:                                             ; preds = %2430
  %2465 = landingpad { ptr, i32 }
          cleanup
  %2466 = extractvalue { ptr, i32 } %2465, 0
  store ptr %2466, ptr %5, align 8
  %2467 = extractvalue { ptr, i32 } %2465, 1
  store i32 %2467, ptr %6, align 4
  br label %2554

2468:                                             ; preds = %2432
  %2469 = landingpad { ptr, i32 }
          cleanup
  %2470 = extractvalue { ptr, i32 } %2469, 0
  store ptr %2470, ptr %5, align 8
  %2471 = extractvalue { ptr, i32 } %2469, 1
  store i32 %2471, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %188) #8
  br label %2553

2472:                                             ; preds = %2433
  %2473 = landingpad { ptr, i32 }
          cleanup
  %2474 = extractvalue { ptr, i32 } %2473, 0
  store ptr %2474, ptr %5, align 8
  %2475 = extractvalue { ptr, i32 } %2473, 1
  store i32 %2475, ptr %6, align 4
  br label %2552

2476:                                             ; preds = %2440
  %2477 = landingpad { ptr, i32 }
          cleanup
  %2478 = extractvalue { ptr, i32 } %2477, 0
  store ptr %2478, ptr %5, align 8
  %2479 = extractvalue { ptr, i32 } %2477, 1
  store i32 %2479, ptr %6, align 4
  br label %2489

2480:                                             ; preds = %2452
  %2481 = landingpad { ptr, i32 }
          cleanup
  %2482 = extractvalue { ptr, i32 } %2481, 0
  store ptr %2482, ptr %5, align 8
  %2483 = extractvalue { ptr, i32 } %2481, 1
  store i32 %2483, ptr %6, align 4
  br label %2488

2484:                                             ; preds = %2454
  %2485 = landingpad { ptr, i32 }
          cleanup
  %2486 = extractvalue { ptr, i32 } %2485, 0
  store ptr %2486, ptr %5, align 8
  %2487 = extractvalue { ptr, i32 } %2485, 1
  store i32 %2487, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %192) #8
  br label %2488

2488:                                             ; preds = %2484, %2480
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %193) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %193) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %192) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %191) #8
  br label %2489

2489:                                             ; preds = %2488, %2476
  call void @llvm.lifetime.end.p0(i64 32, ptr %191) #8
  br label %2551

2490:                                             ; preds = %2455
  %2491 = landingpad { ptr, i32 }
          cleanup
  %2492 = extractvalue { ptr, i32 } %2491, 0
  store ptr %2492, ptr %5, align 8
  %2493 = extractvalue { ptr, i32 } %2491, 1
  store i32 %2493, ptr %6, align 4
  br label %2550

2494:                                             ; preds = %2457
  call void @llvm.lifetime.start.p0(i64 8, ptr %194) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %194)
          to label %2495 unwind label %2500

2495:                                             ; preds = %2494
  call void @llvm.lifetime.start.p0(i64 8, ptr %195) #8
  %2496 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %190)
          to label %2497 unwind label %2504

2497:                                             ; preds = %2495
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %195, i32 noundef 1, ptr noundef @.str.3, i32 noundef 91, ptr noundef %2496)
          to label %2498 unwind label %2504

2498:                                             ; preds = %2497
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %195, ptr noundef nonnull align 8 dereferenceable(8) %194)
          to label %2499 unwind label %2508

2499:                                             ; preds = %2498
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %195) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %194) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %194) #8
  br label %2514

2500:                                             ; preds = %2494
  %2501 = landingpad { ptr, i32 }
          cleanup
  %2502 = extractvalue { ptr, i32 } %2501, 0
  store ptr %2502, ptr %5, align 8
  %2503 = extractvalue { ptr, i32 } %2501, 1
  store i32 %2503, ptr %6, align 4
  br label %2513

2504:                                             ; preds = %2497, %2495
  %2505 = landingpad { ptr, i32 }
          cleanup
  %2506 = extractvalue { ptr, i32 } %2505, 0
  store ptr %2506, ptr %5, align 8
  %2507 = extractvalue { ptr, i32 } %2505, 1
  store i32 %2507, ptr %6, align 4
  br label %2512

2508:                                             ; preds = %2498
  %2509 = landingpad { ptr, i32 }
          cleanup
  %2510 = extractvalue { ptr, i32 } %2509, 0
  store ptr %2510, ptr %5, align 8
  %2511 = extractvalue { ptr, i32 } %2509, 1
  store i32 %2511, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %195) #8
  br label %2512

2512:                                             ; preds = %2508, %2504
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %194) #8
  br label %2513

2513:                                             ; preds = %2512, %2500
  call void @llvm.lifetime.end.p0(i64 8, ptr %194) #8
  br label %2550

2514:                                             ; preds = %2499, %2458
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %190) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %190) #8
  %2515 = load ptr, ptr %189, align 8, !tbaa !5
  %2516 = icmp eq ptr %2515, null
  br i1 %2516, label %2518, label %2517

2517:                                             ; preds = %2514
  call void @_ZdaPv(ptr noundef %2515) #10
  br label %2518

2518:                                             ; preds = %2517, %2514
  call void @llvm.lifetime.end.p0(i64 8, ptr %189) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %187) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %186) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %186) #8
  br label %2519

2519:                                             ; preds = %2518
  br label %2520

2520:                                             ; preds = %2519
  br label %2521

2521:                                             ; preds = %2520
  call void @llvm.lifetime.start.p0(i64 392, ptr %196) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %196)
  %2522 = getelementptr inbounds i8, ptr %196, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2522, ptr noundef @.str.34, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %2523 unwind label %2555

2523:                                             ; preds = %2521
  call void @llvm.lifetime.start.p0(i64 4, ptr %197) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %198) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %198, ptr noundef nonnull align 8 dereferenceable(128) %196)
          to label %2524 unwind label %2559

2524:                                             ; preds = %2523
  %2525 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %198) #8
  %2526 = add i64 %2525, 3
  %2527 = trunc i64 %2526 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %198) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %198) #8
  store i32 %2527, ptr %197, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %199) #8
  %2528 = load i32, ptr %197, align 4, !tbaa !11
  %2529 = sext i32 %2528 to i64
  %2530 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2529) #9
          to label %2531 unwind label %2563

2531:                                             ; preds = %2524
  store ptr %2530, ptr %199, align 8, !tbaa !5
  %2532 = load ptr, ptr %199, align 8, !tbaa !5
  %2533 = load i32, ptr %197, align 4, !tbaa !11
  %2534 = sub nsw i32 %2533, 1
  %2535 = sext i32 %2534 to i64
  %2536 = getelementptr inbounds i8, ptr %2532, i64 %2535
  store i8 0, ptr %2536, align 1, !tbaa !13
  %2537 = load ptr, ptr %199, align 8, !tbaa !5
  %2538 = load i32, ptr %197, align 4, !tbaa !11
  %2539 = sub nsw i32 %2538, 2
  %2540 = sext i32 %2539 to i64
  %2541 = load double, ptr %3, align 8, !tbaa !9
  %2542 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2537, i64 noundef %2540, ptr noundef @.str.34, double noundef %2541) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %200) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %201) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %201, ptr noundef nonnull align 8 dereferenceable(128) %196)
          to label %2543 unwind label %2567

2543:                                             ; preds = %2531
  call void @llvm.lifetime.start.p0(i64 32, ptr %202) #8
  %2544 = load ptr, ptr %199, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %203) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %203) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %202, ptr noundef %2544, ptr noundef nonnull align 1 dereferenceable(1) %203)
          to label %2545 unwind label %2571

2545:                                             ; preds = %2543
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %200, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %201, ptr noundef nonnull align 8 dereferenceable(32) %202)
          to label %2546 unwind label %2575

2546:                                             ; preds = %2545
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %203) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %203) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %202) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %201) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %201) #8
  %2547 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %200)
          to label %2548 unwind label %2581

2548:                                             ; preds = %2546
  br i1 %2547, label %2549, label %2585

2549:                                             ; preds = %2548
  br label %2605

2550:                                             ; preds = %2513, %2490
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %190) #8
  br label %2551

2551:                                             ; preds = %2550, %2489
  call void @llvm.lifetime.end.p0(i64 16, ptr %190) #8
  br label %2552

2552:                                             ; preds = %2551, %2472
  call void @llvm.lifetime.end.p0(i64 8, ptr %189) #8
  br label %2553

2553:                                             ; preds = %2552, %2468
  call void @llvm.lifetime.end.p0(i64 4, ptr %187) #8
  br label %2554

2554:                                             ; preds = %2553, %2464
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %186) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %186) #8
  br label %7986

2555:                                             ; preds = %2521
  %2556 = landingpad { ptr, i32 }
          cleanup
  %2557 = extractvalue { ptr, i32 } %2556, 0
  store ptr %2557, ptr %5, align 8
  %2558 = extractvalue { ptr, i32 } %2556, 1
  store i32 %2558, ptr %6, align 4
  br label %2645

2559:                                             ; preds = %2523
  %2560 = landingpad { ptr, i32 }
          cleanup
  %2561 = extractvalue { ptr, i32 } %2560, 0
  store ptr %2561, ptr %5, align 8
  %2562 = extractvalue { ptr, i32 } %2560, 1
  store i32 %2562, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %198) #8
  br label %2644

2563:                                             ; preds = %2524
  %2564 = landingpad { ptr, i32 }
          cleanup
  %2565 = extractvalue { ptr, i32 } %2564, 0
  store ptr %2565, ptr %5, align 8
  %2566 = extractvalue { ptr, i32 } %2564, 1
  store i32 %2566, ptr %6, align 4
  br label %2643

2567:                                             ; preds = %2531
  %2568 = landingpad { ptr, i32 }
          cleanup
  %2569 = extractvalue { ptr, i32 } %2568, 0
  store ptr %2569, ptr %5, align 8
  %2570 = extractvalue { ptr, i32 } %2568, 1
  store i32 %2570, ptr %6, align 4
  br label %2580

2571:                                             ; preds = %2543
  %2572 = landingpad { ptr, i32 }
          cleanup
  %2573 = extractvalue { ptr, i32 } %2572, 0
  store ptr %2573, ptr %5, align 8
  %2574 = extractvalue { ptr, i32 } %2572, 1
  store i32 %2574, ptr %6, align 4
  br label %2579

2575:                                             ; preds = %2545
  %2576 = landingpad { ptr, i32 }
          cleanup
  %2577 = extractvalue { ptr, i32 } %2576, 0
  store ptr %2577, ptr %5, align 8
  %2578 = extractvalue { ptr, i32 } %2576, 1
  store i32 %2578, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #8
  br label %2579

2579:                                             ; preds = %2575, %2571
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %203) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %203) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %202) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %201) #8
  br label %2580

2580:                                             ; preds = %2579, %2567
  call void @llvm.lifetime.end.p0(i64 32, ptr %201) #8
  br label %2642

2581:                                             ; preds = %2546
  %2582 = landingpad { ptr, i32 }
          cleanup
  %2583 = extractvalue { ptr, i32 } %2582, 0
  store ptr %2583, ptr %5, align 8
  %2584 = extractvalue { ptr, i32 } %2582, 1
  store i32 %2584, ptr %6, align 4
  br label %2641

2585:                                             ; preds = %2548
  call void @llvm.lifetime.start.p0(i64 8, ptr %204) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %204)
          to label %2586 unwind label %2591

2586:                                             ; preds = %2585
  call void @llvm.lifetime.start.p0(i64 8, ptr %205) #8
  %2587 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %200)
          to label %2588 unwind label %2595

2588:                                             ; preds = %2586
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %205, i32 noundef 1, ptr noundef @.str.3, i32 noundef 92, ptr noundef %2587)
          to label %2589 unwind label %2595

2589:                                             ; preds = %2588
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %205, ptr noundef nonnull align 8 dereferenceable(8) %204)
          to label %2590 unwind label %2599

2590:                                             ; preds = %2589
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %205) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %205) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %204) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #8
  br label %2605

2591:                                             ; preds = %2585
  %2592 = landingpad { ptr, i32 }
          cleanup
  %2593 = extractvalue { ptr, i32 } %2592, 0
  store ptr %2593, ptr %5, align 8
  %2594 = extractvalue { ptr, i32 } %2592, 1
  store i32 %2594, ptr %6, align 4
  br label %2604

2595:                                             ; preds = %2588, %2586
  %2596 = landingpad { ptr, i32 }
          cleanup
  %2597 = extractvalue { ptr, i32 } %2596, 0
  store ptr %2597, ptr %5, align 8
  %2598 = extractvalue { ptr, i32 } %2596, 1
  store i32 %2598, ptr %6, align 4
  br label %2603

2599:                                             ; preds = %2589
  %2600 = landingpad { ptr, i32 }
          cleanup
  %2601 = extractvalue { ptr, i32 } %2600, 0
  store ptr %2601, ptr %5, align 8
  %2602 = extractvalue { ptr, i32 } %2600, 1
  store i32 %2602, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %205) #8
  br label %2603

2603:                                             ; preds = %2599, %2595
  call void @llvm.lifetime.end.p0(i64 8, ptr %205) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %204) #8
  br label %2604

2604:                                             ; preds = %2603, %2591
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #8
  br label %2641

2605:                                             ; preds = %2590, %2549
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %200) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %200) #8
  %2606 = load ptr, ptr %199, align 8, !tbaa !5
  %2607 = icmp eq ptr %2606, null
  br i1 %2607, label %2609, label %2608

2608:                                             ; preds = %2605
  call void @_ZdaPv(ptr noundef %2606) #10
  br label %2609

2609:                                             ; preds = %2608, %2605
  call void @llvm.lifetime.end.p0(i64 8, ptr %199) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %197) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %196) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %196) #8
  br label %2610

2610:                                             ; preds = %2609
  br label %2611

2611:                                             ; preds = %2610
  br label %2612

2612:                                             ; preds = %2611
  call void @llvm.lifetime.start.p0(i64 392, ptr %206) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %206)
  %2613 = getelementptr inbounds i8, ptr %206, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2613, ptr noundef @.str.35, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %2614 unwind label %2646

2614:                                             ; preds = %2612
  call void @llvm.lifetime.start.p0(i64 4, ptr %207) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %208) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %208, ptr noundef nonnull align 8 dereferenceable(128) %206)
          to label %2615 unwind label %2650

2615:                                             ; preds = %2614
  %2616 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %208) #8
  %2617 = add i64 %2616, 3
  %2618 = trunc i64 %2617 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %208) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %208) #8
  store i32 %2618, ptr %207, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %209) #8
  %2619 = load i32, ptr %207, align 4, !tbaa !11
  %2620 = sext i32 %2619 to i64
  %2621 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2620) #9
          to label %2622 unwind label %2654

2622:                                             ; preds = %2615
  store ptr %2621, ptr %209, align 8, !tbaa !5
  %2623 = load ptr, ptr %209, align 8, !tbaa !5
  %2624 = load i32, ptr %207, align 4, !tbaa !11
  %2625 = sub nsw i32 %2624, 1
  %2626 = sext i32 %2625 to i64
  %2627 = getelementptr inbounds i8, ptr %2623, i64 %2626
  store i8 0, ptr %2627, align 1, !tbaa !13
  %2628 = load ptr, ptr %209, align 8, !tbaa !5
  %2629 = load i32, ptr %207, align 4, !tbaa !11
  %2630 = sub nsw i32 %2629, 2
  %2631 = sext i32 %2630 to i64
  %2632 = load double, ptr %3, align 8, !tbaa !9
  %2633 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2628, i64 noundef %2631, ptr noundef @.str.35, double noundef %2632) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %210) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %211) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %211, ptr noundef nonnull align 8 dereferenceable(128) %206)
          to label %2634 unwind label %2658

2634:                                             ; preds = %2622
  call void @llvm.lifetime.start.p0(i64 32, ptr %212) #8
  %2635 = load ptr, ptr %209, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %213) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %213) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %212, ptr noundef %2635, ptr noundef nonnull align 1 dereferenceable(1) %213)
          to label %2636 unwind label %2662

2636:                                             ; preds = %2634
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %210, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %211, ptr noundef nonnull align 8 dereferenceable(32) %212)
          to label %2637 unwind label %2666

2637:                                             ; preds = %2636
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %212) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %213) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %213) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %212) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %211) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %211) #8
  %2638 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %210)
          to label %2639 unwind label %2672

2639:                                             ; preds = %2637
  br i1 %2638, label %2640, label %2676

2640:                                             ; preds = %2639
  br label %2696

2641:                                             ; preds = %2604, %2581
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %200) #8
  br label %2642

2642:                                             ; preds = %2641, %2580
  call void @llvm.lifetime.end.p0(i64 16, ptr %200) #8
  br label %2643

2643:                                             ; preds = %2642, %2563
  call void @llvm.lifetime.end.p0(i64 8, ptr %199) #8
  br label %2644

2644:                                             ; preds = %2643, %2559
  call void @llvm.lifetime.end.p0(i64 4, ptr %197) #8
  br label %2645

2645:                                             ; preds = %2644, %2555
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %196) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %196) #8
  br label %7986

2646:                                             ; preds = %2612
  %2647 = landingpad { ptr, i32 }
          cleanup
  %2648 = extractvalue { ptr, i32 } %2647, 0
  store ptr %2648, ptr %5, align 8
  %2649 = extractvalue { ptr, i32 } %2647, 1
  store i32 %2649, ptr %6, align 4
  br label %2736

2650:                                             ; preds = %2614
  %2651 = landingpad { ptr, i32 }
          cleanup
  %2652 = extractvalue { ptr, i32 } %2651, 0
  store ptr %2652, ptr %5, align 8
  %2653 = extractvalue { ptr, i32 } %2651, 1
  store i32 %2653, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %208) #8
  br label %2735

2654:                                             ; preds = %2615
  %2655 = landingpad { ptr, i32 }
          cleanup
  %2656 = extractvalue { ptr, i32 } %2655, 0
  store ptr %2656, ptr %5, align 8
  %2657 = extractvalue { ptr, i32 } %2655, 1
  store i32 %2657, ptr %6, align 4
  br label %2734

2658:                                             ; preds = %2622
  %2659 = landingpad { ptr, i32 }
          cleanup
  %2660 = extractvalue { ptr, i32 } %2659, 0
  store ptr %2660, ptr %5, align 8
  %2661 = extractvalue { ptr, i32 } %2659, 1
  store i32 %2661, ptr %6, align 4
  br label %2671

2662:                                             ; preds = %2634
  %2663 = landingpad { ptr, i32 }
          cleanup
  %2664 = extractvalue { ptr, i32 } %2663, 0
  store ptr %2664, ptr %5, align 8
  %2665 = extractvalue { ptr, i32 } %2663, 1
  store i32 %2665, ptr %6, align 4
  br label %2670

2666:                                             ; preds = %2636
  %2667 = landingpad { ptr, i32 }
          cleanup
  %2668 = extractvalue { ptr, i32 } %2667, 0
  store ptr %2668, ptr %5, align 8
  %2669 = extractvalue { ptr, i32 } %2667, 1
  store i32 %2669, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %212) #8
  br label %2670

2670:                                             ; preds = %2666, %2662
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %213) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %213) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %212) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %211) #8
  br label %2671

2671:                                             ; preds = %2670, %2658
  call void @llvm.lifetime.end.p0(i64 32, ptr %211) #8
  br label %2733

2672:                                             ; preds = %2637
  %2673 = landingpad { ptr, i32 }
          cleanup
  %2674 = extractvalue { ptr, i32 } %2673, 0
  store ptr %2674, ptr %5, align 8
  %2675 = extractvalue { ptr, i32 } %2673, 1
  store i32 %2675, ptr %6, align 4
  br label %2732

2676:                                             ; preds = %2639
  call void @llvm.lifetime.start.p0(i64 8, ptr %214) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %214)
          to label %2677 unwind label %2682

2677:                                             ; preds = %2676
  call void @llvm.lifetime.start.p0(i64 8, ptr %215) #8
  %2678 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %210)
          to label %2679 unwind label %2686

2679:                                             ; preds = %2677
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %215, i32 noundef 1, ptr noundef @.str.3, i32 noundef 93, ptr noundef %2678)
          to label %2680 unwind label %2686

2680:                                             ; preds = %2679
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef nonnull align 8 dereferenceable(8) %214)
          to label %2681 unwind label %2690

2681:                                             ; preds = %2680
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %215) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %215) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %214) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %214) #8
  br label %2696

2682:                                             ; preds = %2676
  %2683 = landingpad { ptr, i32 }
          cleanup
  %2684 = extractvalue { ptr, i32 } %2683, 0
  store ptr %2684, ptr %5, align 8
  %2685 = extractvalue { ptr, i32 } %2683, 1
  store i32 %2685, ptr %6, align 4
  br label %2695

2686:                                             ; preds = %2679, %2677
  %2687 = landingpad { ptr, i32 }
          cleanup
  %2688 = extractvalue { ptr, i32 } %2687, 0
  store ptr %2688, ptr %5, align 8
  %2689 = extractvalue { ptr, i32 } %2687, 1
  store i32 %2689, ptr %6, align 4
  br label %2694

2690:                                             ; preds = %2680
  %2691 = landingpad { ptr, i32 }
          cleanup
  %2692 = extractvalue { ptr, i32 } %2691, 0
  store ptr %2692, ptr %5, align 8
  %2693 = extractvalue { ptr, i32 } %2691, 1
  store i32 %2693, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %215) #8
  br label %2694

2694:                                             ; preds = %2690, %2686
  call void @llvm.lifetime.end.p0(i64 8, ptr %215) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %214) #8
  br label %2695

2695:                                             ; preds = %2694, %2682
  call void @llvm.lifetime.end.p0(i64 8, ptr %214) #8
  br label %2732

2696:                                             ; preds = %2681, %2640
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %210) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %210) #8
  %2697 = load ptr, ptr %209, align 8, !tbaa !5
  %2698 = icmp eq ptr %2697, null
  br i1 %2698, label %2700, label %2699

2699:                                             ; preds = %2696
  call void @_ZdaPv(ptr noundef %2697) #10
  br label %2700

2700:                                             ; preds = %2699, %2696
  call void @llvm.lifetime.end.p0(i64 8, ptr %209) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %207) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %206) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %206) #8
  br label %2701

2701:                                             ; preds = %2700
  br label %2702

2702:                                             ; preds = %2701
  br label %2703

2703:                                             ; preds = %2702
  call void @llvm.lifetime.start.p0(i64 392, ptr %216) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %216)
  %2704 = getelementptr inbounds i8, ptr %216, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2704, ptr noundef @.str.36, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %2705 unwind label %2737

2705:                                             ; preds = %2703
  call void @llvm.lifetime.start.p0(i64 4, ptr %217) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %218) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %218, ptr noundef nonnull align 8 dereferenceable(128) %216)
          to label %2706 unwind label %2741

2706:                                             ; preds = %2705
  %2707 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %218) #8
  %2708 = add i64 %2707, 3
  %2709 = trunc i64 %2708 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %218) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %218) #8
  store i32 %2709, ptr %217, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %219) #8
  %2710 = load i32, ptr %217, align 4, !tbaa !11
  %2711 = sext i32 %2710 to i64
  %2712 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2711) #9
          to label %2713 unwind label %2745

2713:                                             ; preds = %2706
  store ptr %2712, ptr %219, align 8, !tbaa !5
  %2714 = load ptr, ptr %219, align 8, !tbaa !5
  %2715 = load i32, ptr %217, align 4, !tbaa !11
  %2716 = sub nsw i32 %2715, 1
  %2717 = sext i32 %2716 to i64
  %2718 = getelementptr inbounds i8, ptr %2714, i64 %2717
  store i8 0, ptr %2718, align 1, !tbaa !13
  %2719 = load ptr, ptr %219, align 8, !tbaa !5
  %2720 = load i32, ptr %217, align 4, !tbaa !11
  %2721 = sub nsw i32 %2720, 2
  %2722 = sext i32 %2721 to i64
  %2723 = load double, ptr %3, align 8, !tbaa !9
  %2724 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2719, i64 noundef %2722, ptr noundef @.str.36, double noundef %2723) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %220) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %221) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %221, ptr noundef nonnull align 8 dereferenceable(128) %216)
          to label %2725 unwind label %2749

2725:                                             ; preds = %2713
  call void @llvm.lifetime.start.p0(i64 32, ptr %222) #8
  %2726 = load ptr, ptr %219, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %223) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %223) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %222, ptr noundef %2726, ptr noundef nonnull align 1 dereferenceable(1) %223)
          to label %2727 unwind label %2753

2727:                                             ; preds = %2725
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %220, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %221, ptr noundef nonnull align 8 dereferenceable(32) %222)
          to label %2728 unwind label %2757

2728:                                             ; preds = %2727
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %222) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %223) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %223) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %222) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %221) #8
  %2729 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %220)
          to label %2730 unwind label %2763

2730:                                             ; preds = %2728
  br i1 %2729, label %2731, label %2767

2731:                                             ; preds = %2730
  br label %2787

2732:                                             ; preds = %2695, %2672
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %210) #8
  br label %2733

2733:                                             ; preds = %2732, %2671
  call void @llvm.lifetime.end.p0(i64 16, ptr %210) #8
  br label %2734

2734:                                             ; preds = %2733, %2654
  call void @llvm.lifetime.end.p0(i64 8, ptr %209) #8
  br label %2735

2735:                                             ; preds = %2734, %2650
  call void @llvm.lifetime.end.p0(i64 4, ptr %207) #8
  br label %2736

2736:                                             ; preds = %2735, %2646
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %206) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %206) #8
  br label %7986

2737:                                             ; preds = %2703
  %2738 = landingpad { ptr, i32 }
          cleanup
  %2739 = extractvalue { ptr, i32 } %2738, 0
  store ptr %2739, ptr %5, align 8
  %2740 = extractvalue { ptr, i32 } %2738, 1
  store i32 %2740, ptr %6, align 4
  br label %2827

2741:                                             ; preds = %2705
  %2742 = landingpad { ptr, i32 }
          cleanup
  %2743 = extractvalue { ptr, i32 } %2742, 0
  store ptr %2743, ptr %5, align 8
  %2744 = extractvalue { ptr, i32 } %2742, 1
  store i32 %2744, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %218) #8
  br label %2826

2745:                                             ; preds = %2706
  %2746 = landingpad { ptr, i32 }
          cleanup
  %2747 = extractvalue { ptr, i32 } %2746, 0
  store ptr %2747, ptr %5, align 8
  %2748 = extractvalue { ptr, i32 } %2746, 1
  store i32 %2748, ptr %6, align 4
  br label %2825

2749:                                             ; preds = %2713
  %2750 = landingpad { ptr, i32 }
          cleanup
  %2751 = extractvalue { ptr, i32 } %2750, 0
  store ptr %2751, ptr %5, align 8
  %2752 = extractvalue { ptr, i32 } %2750, 1
  store i32 %2752, ptr %6, align 4
  br label %2762

2753:                                             ; preds = %2725
  %2754 = landingpad { ptr, i32 }
          cleanup
  %2755 = extractvalue { ptr, i32 } %2754, 0
  store ptr %2755, ptr %5, align 8
  %2756 = extractvalue { ptr, i32 } %2754, 1
  store i32 %2756, ptr %6, align 4
  br label %2761

2757:                                             ; preds = %2727
  %2758 = landingpad { ptr, i32 }
          cleanup
  %2759 = extractvalue { ptr, i32 } %2758, 0
  store ptr %2759, ptr %5, align 8
  %2760 = extractvalue { ptr, i32 } %2758, 1
  store i32 %2760, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %222) #8
  br label %2761

2761:                                             ; preds = %2757, %2753
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %223) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %223) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %222) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #8
  br label %2762

2762:                                             ; preds = %2761, %2749
  call void @llvm.lifetime.end.p0(i64 32, ptr %221) #8
  br label %2824

2763:                                             ; preds = %2728
  %2764 = landingpad { ptr, i32 }
          cleanup
  %2765 = extractvalue { ptr, i32 } %2764, 0
  store ptr %2765, ptr %5, align 8
  %2766 = extractvalue { ptr, i32 } %2764, 1
  store i32 %2766, ptr %6, align 4
  br label %2823

2767:                                             ; preds = %2730
  call void @llvm.lifetime.start.p0(i64 8, ptr %224) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %224)
          to label %2768 unwind label %2773

2768:                                             ; preds = %2767
  call void @llvm.lifetime.start.p0(i64 8, ptr %225) #8
  %2769 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %220)
          to label %2770 unwind label %2777

2770:                                             ; preds = %2768
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %225, i32 noundef 1, ptr noundef @.str.3, i32 noundef 94, ptr noundef %2769)
          to label %2771 unwind label %2777

2771:                                             ; preds = %2770
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %225, ptr noundef nonnull align 8 dereferenceable(8) %224)
          to label %2772 unwind label %2781

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

2773:                                             ; preds = %2767
  %2774 = landingpad { ptr, i32 }
          cleanup
  %2775 = extractvalue { ptr, i32 } %2774, 0
  store ptr %2775, ptr %5, align 8
  %2776 = extractvalue { ptr, i32 } %2774, 1
  store i32 %2776, ptr %6, align 4
  br label %2786

2777:                                             ; preds = %2770, %2768
  %2778 = landingpad { ptr, i32 }
          cleanup
  %2779 = extractvalue { ptr, i32 } %2778, 0
  store ptr %2779, ptr %5, align 8
  %2780 = extractvalue { ptr, i32 } %2778, 1
  store i32 %2780, ptr %6, align 4
  br label %2785

2781:                                             ; preds = %2771
  %2782 = landingpad { ptr, i32 }
          cleanup
  %2783 = extractvalue { ptr, i32 } %2782, 0
  store ptr %2783, ptr %5, align 8
  %2784 = extractvalue { ptr, i32 } %2782, 1
  store i32 %2784, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %225) #8
  br label %2785

2785:                                             ; preds = %2781, %2777
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %224) #8
  br label %2786

2786:                                             ; preds = %2785, %2773
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #8
  br label %2823

2787:                                             ; preds = %2772, %2731
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %220) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %220) #8
  %2788 = load ptr, ptr %219, align 8, !tbaa !5
  %2789 = icmp eq ptr %2788, null
  br i1 %2789, label %2791, label %2790

2790:                                             ; preds = %2787
  call void @_ZdaPv(ptr noundef %2788) #10
  br label %2791

2791:                                             ; preds = %2790, %2787
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %217) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %216) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %216) #8
  br label %2792

2792:                                             ; preds = %2791
  br label %2793

2793:                                             ; preds = %2792
  br label %2794

2794:                                             ; preds = %2793
  call void @llvm.lifetime.start.p0(i64 392, ptr %226) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %226)
  %2795 = getelementptr inbounds i8, ptr %226, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2795, ptr noundef @.str.37, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %2796 unwind label %2828

2796:                                             ; preds = %2794
  call void @llvm.lifetime.start.p0(i64 4, ptr %227) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %228) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %228, ptr noundef nonnull align 8 dereferenceable(128) %226)
          to label %2797 unwind label %2832

2797:                                             ; preds = %2796
  %2798 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %228) #8
  %2799 = add i64 %2798, 3
  %2800 = trunc i64 %2799 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %228) #8
  store i32 %2800, ptr %227, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %229) #8
  %2801 = load i32, ptr %227, align 4, !tbaa !11
  %2802 = sext i32 %2801 to i64
  %2803 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2802) #9
          to label %2804 unwind label %2836

2804:                                             ; preds = %2797
  store ptr %2803, ptr %229, align 8, !tbaa !5
  %2805 = load ptr, ptr %229, align 8, !tbaa !5
  %2806 = load i32, ptr %227, align 4, !tbaa !11
  %2807 = sub nsw i32 %2806, 1
  %2808 = sext i32 %2807 to i64
  %2809 = getelementptr inbounds i8, ptr %2805, i64 %2808
  store i8 0, ptr %2809, align 1, !tbaa !13
  %2810 = load ptr, ptr %229, align 8, !tbaa !5
  %2811 = load i32, ptr %227, align 4, !tbaa !11
  %2812 = sub nsw i32 %2811, 2
  %2813 = sext i32 %2812 to i64
  %2814 = load double, ptr %3, align 8, !tbaa !9
  %2815 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2810, i64 noundef %2813, ptr noundef @.str.37, double noundef %2814) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %230) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %231) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %231, ptr noundef nonnull align 8 dereferenceable(128) %226)
          to label %2816 unwind label %2840

2816:                                             ; preds = %2804
  call void @llvm.lifetime.start.p0(i64 32, ptr %232) #8
  %2817 = load ptr, ptr %229, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %233) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %233) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %232, ptr noundef %2817, ptr noundef nonnull align 1 dereferenceable(1) %233)
          to label %2818 unwind label %2844

2818:                                             ; preds = %2816
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %230, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %231, ptr noundef nonnull align 8 dereferenceable(32) %232)
          to label %2819 unwind label %2848

2819:                                             ; preds = %2818
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %233) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %233) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %232) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %231) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %231) #8
  %2820 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %230)
          to label %2821 unwind label %2854

2821:                                             ; preds = %2819
  br i1 %2820, label %2822, label %2858

2822:                                             ; preds = %2821
  br label %2878

2823:                                             ; preds = %2786, %2763
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %220) #8
  br label %2824

2824:                                             ; preds = %2823, %2762
  call void @llvm.lifetime.end.p0(i64 16, ptr %220) #8
  br label %2825

2825:                                             ; preds = %2824, %2745
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #8
  br label %2826

2826:                                             ; preds = %2825, %2741
  call void @llvm.lifetime.end.p0(i64 4, ptr %217) #8
  br label %2827

2827:                                             ; preds = %2826, %2737
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %216) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %216) #8
  br label %7986

2828:                                             ; preds = %2794
  %2829 = landingpad { ptr, i32 }
          cleanup
  %2830 = extractvalue { ptr, i32 } %2829, 0
  store ptr %2830, ptr %5, align 8
  %2831 = extractvalue { ptr, i32 } %2829, 1
  store i32 %2831, ptr %6, align 4
  br label %2918

2832:                                             ; preds = %2796
  %2833 = landingpad { ptr, i32 }
          cleanup
  %2834 = extractvalue { ptr, i32 } %2833, 0
  store ptr %2834, ptr %5, align 8
  %2835 = extractvalue { ptr, i32 } %2833, 1
  store i32 %2835, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %228) #8
  br label %2917

2836:                                             ; preds = %2797
  %2837 = landingpad { ptr, i32 }
          cleanup
  %2838 = extractvalue { ptr, i32 } %2837, 0
  store ptr %2838, ptr %5, align 8
  %2839 = extractvalue { ptr, i32 } %2837, 1
  store i32 %2839, ptr %6, align 4
  br label %2916

2840:                                             ; preds = %2804
  %2841 = landingpad { ptr, i32 }
          cleanup
  %2842 = extractvalue { ptr, i32 } %2841, 0
  store ptr %2842, ptr %5, align 8
  %2843 = extractvalue { ptr, i32 } %2841, 1
  store i32 %2843, ptr %6, align 4
  br label %2853

2844:                                             ; preds = %2816
  %2845 = landingpad { ptr, i32 }
          cleanup
  %2846 = extractvalue { ptr, i32 } %2845, 0
  store ptr %2846, ptr %5, align 8
  %2847 = extractvalue { ptr, i32 } %2845, 1
  store i32 %2847, ptr %6, align 4
  br label %2852

2848:                                             ; preds = %2818
  %2849 = landingpad { ptr, i32 }
          cleanup
  %2850 = extractvalue { ptr, i32 } %2849, 0
  store ptr %2850, ptr %5, align 8
  %2851 = extractvalue { ptr, i32 } %2849, 1
  store i32 %2851, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #8
  br label %2852

2852:                                             ; preds = %2848, %2844
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %233) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %233) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %232) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %231) #8
  br label %2853

2853:                                             ; preds = %2852, %2840
  call void @llvm.lifetime.end.p0(i64 32, ptr %231) #8
  br label %2915

2854:                                             ; preds = %2819
  %2855 = landingpad { ptr, i32 }
          cleanup
  %2856 = extractvalue { ptr, i32 } %2855, 0
  store ptr %2856, ptr %5, align 8
  %2857 = extractvalue { ptr, i32 } %2855, 1
  store i32 %2857, ptr %6, align 4
  br label %2914

2858:                                             ; preds = %2821
  call void @llvm.lifetime.start.p0(i64 8, ptr %234) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %234)
          to label %2859 unwind label %2864

2859:                                             ; preds = %2858
  call void @llvm.lifetime.start.p0(i64 8, ptr %235) #8
  %2860 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %230)
          to label %2861 unwind label %2868

2861:                                             ; preds = %2859
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %235, i32 noundef 1, ptr noundef @.str.3, i32 noundef 95, ptr noundef %2860)
          to label %2862 unwind label %2868

2862:                                             ; preds = %2861
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %235, ptr noundef nonnull align 8 dereferenceable(8) %234)
          to label %2863 unwind label %2872

2863:                                             ; preds = %2862
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %235) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %235) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %234) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %234) #8
  br label %2878

2864:                                             ; preds = %2858
  %2865 = landingpad { ptr, i32 }
          cleanup
  %2866 = extractvalue { ptr, i32 } %2865, 0
  store ptr %2866, ptr %5, align 8
  %2867 = extractvalue { ptr, i32 } %2865, 1
  store i32 %2867, ptr %6, align 4
  br label %2877

2868:                                             ; preds = %2861, %2859
  %2869 = landingpad { ptr, i32 }
          cleanup
  %2870 = extractvalue { ptr, i32 } %2869, 0
  store ptr %2870, ptr %5, align 8
  %2871 = extractvalue { ptr, i32 } %2869, 1
  store i32 %2871, ptr %6, align 4
  br label %2876

2872:                                             ; preds = %2862
  %2873 = landingpad { ptr, i32 }
          cleanup
  %2874 = extractvalue { ptr, i32 } %2873, 0
  store ptr %2874, ptr %5, align 8
  %2875 = extractvalue { ptr, i32 } %2873, 1
  store i32 %2875, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %235) #8
  br label %2876

2876:                                             ; preds = %2872, %2868
  call void @llvm.lifetime.end.p0(i64 8, ptr %235) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %234) #8
  br label %2877

2877:                                             ; preds = %2876, %2864
  call void @llvm.lifetime.end.p0(i64 8, ptr %234) #8
  br label %2914

2878:                                             ; preds = %2863, %2822
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %230) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %230) #8
  %2879 = load ptr, ptr %229, align 8, !tbaa !5
  %2880 = icmp eq ptr %2879, null
  br i1 %2880, label %2882, label %2881

2881:                                             ; preds = %2878
  call void @_ZdaPv(ptr noundef %2879) #10
  br label %2882

2882:                                             ; preds = %2881, %2878
  call void @llvm.lifetime.end.p0(i64 8, ptr %229) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %227) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %226) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %226) #8
  br label %2883

2883:                                             ; preds = %2882
  br label %2884

2884:                                             ; preds = %2883
  br label %2885

2885:                                             ; preds = %2884
  call void @llvm.lifetime.start.p0(i64 392, ptr %236) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %236)
  %2886 = getelementptr inbounds i8, ptr %236, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2886, ptr noundef @.str.38, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %2887 unwind label %2919

2887:                                             ; preds = %2885
  call void @llvm.lifetime.start.p0(i64 4, ptr %237) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %238) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %238, ptr noundef nonnull align 8 dereferenceable(128) %236)
          to label %2888 unwind label %2923

2888:                                             ; preds = %2887
  %2889 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %238) #8
  %2890 = add i64 %2889, 3
  %2891 = trunc i64 %2890 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %238) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %238) #8
  store i32 %2891, ptr %237, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %239) #8
  %2892 = load i32, ptr %237, align 4, !tbaa !11
  %2893 = sext i32 %2892 to i64
  %2894 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2893) #9
          to label %2895 unwind label %2927

2895:                                             ; preds = %2888
  store ptr %2894, ptr %239, align 8, !tbaa !5
  %2896 = load ptr, ptr %239, align 8, !tbaa !5
  %2897 = load i32, ptr %237, align 4, !tbaa !11
  %2898 = sub nsw i32 %2897, 1
  %2899 = sext i32 %2898 to i64
  %2900 = getelementptr inbounds i8, ptr %2896, i64 %2899
  store i8 0, ptr %2900, align 1, !tbaa !13
  %2901 = load ptr, ptr %239, align 8, !tbaa !5
  %2902 = load i32, ptr %237, align 4, !tbaa !11
  %2903 = sub nsw i32 %2902, 2
  %2904 = sext i32 %2903 to i64
  %2905 = load double, ptr %3, align 8, !tbaa !9
  %2906 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2901, i64 noundef %2904, ptr noundef @.str.38, double noundef %2905) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %240) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %241) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %241, ptr noundef nonnull align 8 dereferenceable(128) %236)
          to label %2907 unwind label %2931

2907:                                             ; preds = %2895
  call void @llvm.lifetime.start.p0(i64 32, ptr %242) #8
  %2908 = load ptr, ptr %239, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %243) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %243) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %242, ptr noundef %2908, ptr noundef nonnull align 1 dereferenceable(1) %243)
          to label %2909 unwind label %2935

2909:                                             ; preds = %2907
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %240, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %241, ptr noundef nonnull align 8 dereferenceable(32) %242)
          to label %2910 unwind label %2939

2910:                                             ; preds = %2909
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %242) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %243) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %243) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %242) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %241) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %241) #8
  %2911 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %240)
          to label %2912 unwind label %2945

2912:                                             ; preds = %2910
  br i1 %2911, label %2913, label %2949

2913:                                             ; preds = %2912
  br label %2969

2914:                                             ; preds = %2877, %2854
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %230) #8
  br label %2915

2915:                                             ; preds = %2914, %2853
  call void @llvm.lifetime.end.p0(i64 16, ptr %230) #8
  br label %2916

2916:                                             ; preds = %2915, %2836
  call void @llvm.lifetime.end.p0(i64 8, ptr %229) #8
  br label %2917

2917:                                             ; preds = %2916, %2832
  call void @llvm.lifetime.end.p0(i64 4, ptr %227) #8
  br label %2918

2918:                                             ; preds = %2917, %2828
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %226) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %226) #8
  br label %7986

2919:                                             ; preds = %2885
  %2920 = landingpad { ptr, i32 }
          cleanup
  %2921 = extractvalue { ptr, i32 } %2920, 0
  store ptr %2921, ptr %5, align 8
  %2922 = extractvalue { ptr, i32 } %2920, 1
  store i32 %2922, ptr %6, align 4
  br label %3009

2923:                                             ; preds = %2887
  %2924 = landingpad { ptr, i32 }
          cleanup
  %2925 = extractvalue { ptr, i32 } %2924, 0
  store ptr %2925, ptr %5, align 8
  %2926 = extractvalue { ptr, i32 } %2924, 1
  store i32 %2926, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %238) #8
  br label %3008

2927:                                             ; preds = %2888
  %2928 = landingpad { ptr, i32 }
          cleanup
  %2929 = extractvalue { ptr, i32 } %2928, 0
  store ptr %2929, ptr %5, align 8
  %2930 = extractvalue { ptr, i32 } %2928, 1
  store i32 %2930, ptr %6, align 4
  br label %3007

2931:                                             ; preds = %2895
  %2932 = landingpad { ptr, i32 }
          cleanup
  %2933 = extractvalue { ptr, i32 } %2932, 0
  store ptr %2933, ptr %5, align 8
  %2934 = extractvalue { ptr, i32 } %2932, 1
  store i32 %2934, ptr %6, align 4
  br label %2944

2935:                                             ; preds = %2907
  %2936 = landingpad { ptr, i32 }
          cleanup
  %2937 = extractvalue { ptr, i32 } %2936, 0
  store ptr %2937, ptr %5, align 8
  %2938 = extractvalue { ptr, i32 } %2936, 1
  store i32 %2938, ptr %6, align 4
  br label %2943

2939:                                             ; preds = %2909
  %2940 = landingpad { ptr, i32 }
          cleanup
  %2941 = extractvalue { ptr, i32 } %2940, 0
  store ptr %2941, ptr %5, align 8
  %2942 = extractvalue { ptr, i32 } %2940, 1
  store i32 %2942, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %242) #8
  br label %2943

2943:                                             ; preds = %2939, %2935
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %243) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %243) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %242) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %241) #8
  br label %2944

2944:                                             ; preds = %2943, %2931
  call void @llvm.lifetime.end.p0(i64 32, ptr %241) #8
  br label %3006

2945:                                             ; preds = %2910
  %2946 = landingpad { ptr, i32 }
          cleanup
  %2947 = extractvalue { ptr, i32 } %2946, 0
  store ptr %2947, ptr %5, align 8
  %2948 = extractvalue { ptr, i32 } %2946, 1
  store i32 %2948, ptr %6, align 4
  br label %3005

2949:                                             ; preds = %2912
  call void @llvm.lifetime.start.p0(i64 8, ptr %244) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %244)
          to label %2950 unwind label %2955

2950:                                             ; preds = %2949
  call void @llvm.lifetime.start.p0(i64 8, ptr %245) #8
  %2951 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %240)
          to label %2952 unwind label %2959

2952:                                             ; preds = %2950
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %245, i32 noundef 1, ptr noundef @.str.3, i32 noundef 96, ptr noundef %2951)
          to label %2953 unwind label %2959

2953:                                             ; preds = %2952
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %245, ptr noundef nonnull align 8 dereferenceable(8) %244)
          to label %2954 unwind label %2963

2954:                                             ; preds = %2953
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %245) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %244) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %244) #8
  br label %2969

2955:                                             ; preds = %2949
  %2956 = landingpad { ptr, i32 }
          cleanup
  %2957 = extractvalue { ptr, i32 } %2956, 0
  store ptr %2957, ptr %5, align 8
  %2958 = extractvalue { ptr, i32 } %2956, 1
  store i32 %2958, ptr %6, align 4
  br label %2968

2959:                                             ; preds = %2952, %2950
  %2960 = landingpad { ptr, i32 }
          cleanup
  %2961 = extractvalue { ptr, i32 } %2960, 0
  store ptr %2961, ptr %5, align 8
  %2962 = extractvalue { ptr, i32 } %2960, 1
  store i32 %2962, ptr %6, align 4
  br label %2967

2963:                                             ; preds = %2953
  %2964 = landingpad { ptr, i32 }
          cleanup
  %2965 = extractvalue { ptr, i32 } %2964, 0
  store ptr %2965, ptr %5, align 8
  %2966 = extractvalue { ptr, i32 } %2964, 1
  store i32 %2966, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %245) #8
  br label %2967

2967:                                             ; preds = %2963, %2959
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %244) #8
  br label %2968

2968:                                             ; preds = %2967, %2955
  call void @llvm.lifetime.end.p0(i64 8, ptr %244) #8
  br label %3005

2969:                                             ; preds = %2954, %2913
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %240) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %240) #8
  %2970 = load ptr, ptr %239, align 8, !tbaa !5
  %2971 = icmp eq ptr %2970, null
  br i1 %2971, label %2973, label %2972

2972:                                             ; preds = %2969
  call void @_ZdaPv(ptr noundef %2970) #10
  br label %2973

2973:                                             ; preds = %2972, %2969
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %237) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %236) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %236) #8
  br label %2974

2974:                                             ; preds = %2973
  br label %2975

2975:                                             ; preds = %2974
  br label %2976

2976:                                             ; preds = %2975
  call void @llvm.lifetime.start.p0(i64 392, ptr %246) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %246)
  %2977 = getelementptr inbounds i8, ptr %246, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2977, ptr noundef @.str.39, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %2978 unwind label %3010

2978:                                             ; preds = %2976
  call void @llvm.lifetime.start.p0(i64 4, ptr %247) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %248) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %248, ptr noundef nonnull align 8 dereferenceable(128) %246)
          to label %2979 unwind label %3014

2979:                                             ; preds = %2978
  %2980 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %248) #8
  %2981 = add i64 %2980, 3
  %2982 = trunc i64 %2981 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %248) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %248) #8
  store i32 %2982, ptr %247, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %249) #8
  %2983 = load i32, ptr %247, align 4, !tbaa !11
  %2984 = sext i32 %2983 to i64
  %2985 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2984) #9
          to label %2986 unwind label %3018

2986:                                             ; preds = %2979
  store ptr %2985, ptr %249, align 8, !tbaa !5
  %2987 = load ptr, ptr %249, align 8, !tbaa !5
  %2988 = load i32, ptr %247, align 4, !tbaa !11
  %2989 = sub nsw i32 %2988, 1
  %2990 = sext i32 %2989 to i64
  %2991 = getelementptr inbounds i8, ptr %2987, i64 %2990
  store i8 0, ptr %2991, align 1, !tbaa !13
  %2992 = load ptr, ptr %249, align 8, !tbaa !5
  %2993 = load i32, ptr %247, align 4, !tbaa !11
  %2994 = sub nsw i32 %2993, 2
  %2995 = sext i32 %2994 to i64
  %2996 = load double, ptr %3, align 8, !tbaa !9
  %2997 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2992, i64 noundef %2995, ptr noundef @.str.39, double noundef %2996) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %250) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %251) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %251, ptr noundef nonnull align 8 dereferenceable(128) %246)
          to label %2998 unwind label %3022

2998:                                             ; preds = %2986
  call void @llvm.lifetime.start.p0(i64 32, ptr %252) #8
  %2999 = load ptr, ptr %249, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %253) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %253) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %252, ptr noundef %2999, ptr noundef nonnull align 1 dereferenceable(1) %253)
          to label %3000 unwind label %3026

3000:                                             ; preds = %2998
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %250, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %251, ptr noundef nonnull align 8 dereferenceable(32) %252)
          to label %3001 unwind label %3030

3001:                                             ; preds = %3000
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %252) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %253) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %253) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %252) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %251) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %251) #8
  %3002 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %250)
          to label %3003 unwind label %3036

3003:                                             ; preds = %3001
  br i1 %3002, label %3004, label %3040

3004:                                             ; preds = %3003
  br label %3060

3005:                                             ; preds = %2968, %2945
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %240) #8
  br label %3006

3006:                                             ; preds = %3005, %2944
  call void @llvm.lifetime.end.p0(i64 16, ptr %240) #8
  br label %3007

3007:                                             ; preds = %3006, %2927
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #8
  br label %3008

3008:                                             ; preds = %3007, %2923
  call void @llvm.lifetime.end.p0(i64 4, ptr %237) #8
  br label %3009

3009:                                             ; preds = %3008, %2919
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %236) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %236) #8
  br label %7986

3010:                                             ; preds = %2976
  %3011 = landingpad { ptr, i32 }
          cleanup
  %3012 = extractvalue { ptr, i32 } %3011, 0
  store ptr %3012, ptr %5, align 8
  %3013 = extractvalue { ptr, i32 } %3011, 1
  store i32 %3013, ptr %6, align 4
  br label %3100

3014:                                             ; preds = %2978
  %3015 = landingpad { ptr, i32 }
          cleanup
  %3016 = extractvalue { ptr, i32 } %3015, 0
  store ptr %3016, ptr %5, align 8
  %3017 = extractvalue { ptr, i32 } %3015, 1
  store i32 %3017, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %248) #8
  br label %3099

3018:                                             ; preds = %2979
  %3019 = landingpad { ptr, i32 }
          cleanup
  %3020 = extractvalue { ptr, i32 } %3019, 0
  store ptr %3020, ptr %5, align 8
  %3021 = extractvalue { ptr, i32 } %3019, 1
  store i32 %3021, ptr %6, align 4
  br label %3098

3022:                                             ; preds = %2986
  %3023 = landingpad { ptr, i32 }
          cleanup
  %3024 = extractvalue { ptr, i32 } %3023, 0
  store ptr %3024, ptr %5, align 8
  %3025 = extractvalue { ptr, i32 } %3023, 1
  store i32 %3025, ptr %6, align 4
  br label %3035

3026:                                             ; preds = %2998
  %3027 = landingpad { ptr, i32 }
          cleanup
  %3028 = extractvalue { ptr, i32 } %3027, 0
  store ptr %3028, ptr %5, align 8
  %3029 = extractvalue { ptr, i32 } %3027, 1
  store i32 %3029, ptr %6, align 4
  br label %3034

3030:                                             ; preds = %3000
  %3031 = landingpad { ptr, i32 }
          cleanup
  %3032 = extractvalue { ptr, i32 } %3031, 0
  store ptr %3032, ptr %5, align 8
  %3033 = extractvalue { ptr, i32 } %3031, 1
  store i32 %3033, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %252) #8
  br label %3034

3034:                                             ; preds = %3030, %3026
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %253) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %253) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %252) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %251) #8
  br label %3035

3035:                                             ; preds = %3034, %3022
  call void @llvm.lifetime.end.p0(i64 32, ptr %251) #8
  br label %3097

3036:                                             ; preds = %3001
  %3037 = landingpad { ptr, i32 }
          cleanup
  %3038 = extractvalue { ptr, i32 } %3037, 0
  store ptr %3038, ptr %5, align 8
  %3039 = extractvalue { ptr, i32 } %3037, 1
  store i32 %3039, ptr %6, align 4
  br label %3096

3040:                                             ; preds = %3003
  call void @llvm.lifetime.start.p0(i64 8, ptr %254) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %254)
          to label %3041 unwind label %3046

3041:                                             ; preds = %3040
  call void @llvm.lifetime.start.p0(i64 8, ptr %255) #8
  %3042 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %250)
          to label %3043 unwind label %3050

3043:                                             ; preds = %3041
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %255, i32 noundef 1, ptr noundef @.str.3, i32 noundef 97, ptr noundef %3042)
          to label %3044 unwind label %3050

3044:                                             ; preds = %3043
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %255, ptr noundef nonnull align 8 dereferenceable(8) %254)
          to label %3045 unwind label %3054

3045:                                             ; preds = %3044
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %255) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %254) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %254) #8
  br label %3060

3046:                                             ; preds = %3040
  %3047 = landingpad { ptr, i32 }
          cleanup
  %3048 = extractvalue { ptr, i32 } %3047, 0
  store ptr %3048, ptr %5, align 8
  %3049 = extractvalue { ptr, i32 } %3047, 1
  store i32 %3049, ptr %6, align 4
  br label %3059

3050:                                             ; preds = %3043, %3041
  %3051 = landingpad { ptr, i32 }
          cleanup
  %3052 = extractvalue { ptr, i32 } %3051, 0
  store ptr %3052, ptr %5, align 8
  %3053 = extractvalue { ptr, i32 } %3051, 1
  store i32 %3053, ptr %6, align 4
  br label %3058

3054:                                             ; preds = %3044
  %3055 = landingpad { ptr, i32 }
          cleanup
  %3056 = extractvalue { ptr, i32 } %3055, 0
  store ptr %3056, ptr %5, align 8
  %3057 = extractvalue { ptr, i32 } %3055, 1
  store i32 %3057, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %255) #8
  br label %3058

3058:                                             ; preds = %3054, %3050
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %254) #8
  br label %3059

3059:                                             ; preds = %3058, %3046
  call void @llvm.lifetime.end.p0(i64 8, ptr %254) #8
  br label %3096

3060:                                             ; preds = %3045, %3004
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %250) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %250) #8
  %3061 = load ptr, ptr %249, align 8, !tbaa !5
  %3062 = icmp eq ptr %3061, null
  br i1 %3062, label %3064, label %3063

3063:                                             ; preds = %3060
  call void @_ZdaPv(ptr noundef %3061) #10
  br label %3064

3064:                                             ; preds = %3063, %3060
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %247) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %246) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %246) #8
  br label %3065

3065:                                             ; preds = %3064
  br label %3066

3066:                                             ; preds = %3065
  br label %3067

3067:                                             ; preds = %3066
  call void @llvm.lifetime.start.p0(i64 392, ptr %256) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %256)
  %3068 = getelementptr inbounds i8, ptr %256, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3068, ptr noundef @.str.40, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %3069 unwind label %3101

3069:                                             ; preds = %3067
  call void @llvm.lifetime.start.p0(i64 4, ptr %257) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %258) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %258, ptr noundef nonnull align 8 dereferenceable(128) %256)
          to label %3070 unwind label %3105

3070:                                             ; preds = %3069
  %3071 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %258) #8
  %3072 = add i64 %3071, 3
  %3073 = trunc i64 %3072 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %258) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %258) #8
  store i32 %3073, ptr %257, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %259) #8
  %3074 = load i32, ptr %257, align 4, !tbaa !11
  %3075 = sext i32 %3074 to i64
  %3076 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3075) #9
          to label %3077 unwind label %3109

3077:                                             ; preds = %3070
  store ptr %3076, ptr %259, align 8, !tbaa !5
  %3078 = load ptr, ptr %259, align 8, !tbaa !5
  %3079 = load i32, ptr %257, align 4, !tbaa !11
  %3080 = sub nsw i32 %3079, 1
  %3081 = sext i32 %3080 to i64
  %3082 = getelementptr inbounds i8, ptr %3078, i64 %3081
  store i8 0, ptr %3082, align 1, !tbaa !13
  %3083 = load ptr, ptr %259, align 8, !tbaa !5
  %3084 = load i32, ptr %257, align 4, !tbaa !11
  %3085 = sub nsw i32 %3084, 2
  %3086 = sext i32 %3085 to i64
  %3087 = load double, ptr %3, align 8, !tbaa !9
  %3088 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %3083, i64 noundef %3086, ptr noundef @.str.40, double noundef %3087) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %260) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %261) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %261, ptr noundef nonnull align 8 dereferenceable(128) %256)
          to label %3089 unwind label %3113

3089:                                             ; preds = %3077
  call void @llvm.lifetime.start.p0(i64 32, ptr %262) #8
  %3090 = load ptr, ptr %259, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %263) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %263) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %262, ptr noundef %3090, ptr noundef nonnull align 1 dereferenceable(1) %263)
          to label %3091 unwind label %3117

3091:                                             ; preds = %3089
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %260, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %261, ptr noundef nonnull align 8 dereferenceable(32) %262)
          to label %3092 unwind label %3121

3092:                                             ; preds = %3091
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %262) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %263) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %263) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %262) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %261) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %261) #8
  %3093 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %260)
          to label %3094 unwind label %3127

3094:                                             ; preds = %3092
  br i1 %3093, label %3095, label %3131

3095:                                             ; preds = %3094
  br label %3151

3096:                                             ; preds = %3059, %3036
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %250) #8
  br label %3097

3097:                                             ; preds = %3096, %3035
  call void @llvm.lifetime.end.p0(i64 16, ptr %250) #8
  br label %3098

3098:                                             ; preds = %3097, %3018
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #8
  br label %3099

3099:                                             ; preds = %3098, %3014
  call void @llvm.lifetime.end.p0(i64 4, ptr %247) #8
  br label %3100

3100:                                             ; preds = %3099, %3010
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %246) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %246) #8
  br label %7986

3101:                                             ; preds = %3067
  %3102 = landingpad { ptr, i32 }
          cleanup
  %3103 = extractvalue { ptr, i32 } %3102, 0
  store ptr %3103, ptr %5, align 8
  %3104 = extractvalue { ptr, i32 } %3102, 1
  store i32 %3104, ptr %6, align 4
  br label %3191

3105:                                             ; preds = %3069
  %3106 = landingpad { ptr, i32 }
          cleanup
  %3107 = extractvalue { ptr, i32 } %3106, 0
  store ptr %3107, ptr %5, align 8
  %3108 = extractvalue { ptr, i32 } %3106, 1
  store i32 %3108, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %258) #8
  br label %3190

3109:                                             ; preds = %3070
  %3110 = landingpad { ptr, i32 }
          cleanup
  %3111 = extractvalue { ptr, i32 } %3110, 0
  store ptr %3111, ptr %5, align 8
  %3112 = extractvalue { ptr, i32 } %3110, 1
  store i32 %3112, ptr %6, align 4
  br label %3189

3113:                                             ; preds = %3077
  %3114 = landingpad { ptr, i32 }
          cleanup
  %3115 = extractvalue { ptr, i32 } %3114, 0
  store ptr %3115, ptr %5, align 8
  %3116 = extractvalue { ptr, i32 } %3114, 1
  store i32 %3116, ptr %6, align 4
  br label %3126

3117:                                             ; preds = %3089
  %3118 = landingpad { ptr, i32 }
          cleanup
  %3119 = extractvalue { ptr, i32 } %3118, 0
  store ptr %3119, ptr %5, align 8
  %3120 = extractvalue { ptr, i32 } %3118, 1
  store i32 %3120, ptr %6, align 4
  br label %3125

3121:                                             ; preds = %3091
  %3122 = landingpad { ptr, i32 }
          cleanup
  %3123 = extractvalue { ptr, i32 } %3122, 0
  store ptr %3123, ptr %5, align 8
  %3124 = extractvalue { ptr, i32 } %3122, 1
  store i32 %3124, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %262) #8
  br label %3125

3125:                                             ; preds = %3121, %3117
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %263) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %263) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %262) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %261) #8
  br label %3126

3126:                                             ; preds = %3125, %3113
  call void @llvm.lifetime.end.p0(i64 32, ptr %261) #8
  br label %3188

3127:                                             ; preds = %3092
  %3128 = landingpad { ptr, i32 }
          cleanup
  %3129 = extractvalue { ptr, i32 } %3128, 0
  store ptr %3129, ptr %5, align 8
  %3130 = extractvalue { ptr, i32 } %3128, 1
  store i32 %3130, ptr %6, align 4
  br label %3187

3131:                                             ; preds = %3094
  call void @llvm.lifetime.start.p0(i64 8, ptr %264) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %264)
          to label %3132 unwind label %3137

3132:                                             ; preds = %3131
  call void @llvm.lifetime.start.p0(i64 8, ptr %265) #8
  %3133 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %260)
          to label %3134 unwind label %3141

3134:                                             ; preds = %3132
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %265, i32 noundef 1, ptr noundef @.str.3, i32 noundef 98, ptr noundef %3133)
          to label %3135 unwind label %3141

3135:                                             ; preds = %3134
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %265, ptr noundef nonnull align 8 dereferenceable(8) %264)
          to label %3136 unwind label %3145

3136:                                             ; preds = %3135
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %265) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %265) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %264) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %264) #8
  br label %3151

3137:                                             ; preds = %3131
  %3138 = landingpad { ptr, i32 }
          cleanup
  %3139 = extractvalue { ptr, i32 } %3138, 0
  store ptr %3139, ptr %5, align 8
  %3140 = extractvalue { ptr, i32 } %3138, 1
  store i32 %3140, ptr %6, align 4
  br label %3150

3141:                                             ; preds = %3134, %3132
  %3142 = landingpad { ptr, i32 }
          cleanup
  %3143 = extractvalue { ptr, i32 } %3142, 0
  store ptr %3143, ptr %5, align 8
  %3144 = extractvalue { ptr, i32 } %3142, 1
  store i32 %3144, ptr %6, align 4
  br label %3149

3145:                                             ; preds = %3135
  %3146 = landingpad { ptr, i32 }
          cleanup
  %3147 = extractvalue { ptr, i32 } %3146, 0
  store ptr %3147, ptr %5, align 8
  %3148 = extractvalue { ptr, i32 } %3146, 1
  store i32 %3148, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %265) #8
  br label %3149

3149:                                             ; preds = %3145, %3141
  call void @llvm.lifetime.end.p0(i64 8, ptr %265) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %264) #8
  br label %3150

3150:                                             ; preds = %3149, %3137
  call void @llvm.lifetime.end.p0(i64 8, ptr %264) #8
  br label %3187

3151:                                             ; preds = %3136, %3095
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %260) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %260) #8
  %3152 = load ptr, ptr %259, align 8, !tbaa !5
  %3153 = icmp eq ptr %3152, null
  br i1 %3153, label %3155, label %3154

3154:                                             ; preds = %3151
  call void @_ZdaPv(ptr noundef %3152) #10
  br label %3155

3155:                                             ; preds = %3154, %3151
  call void @llvm.lifetime.end.p0(i64 8, ptr %259) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %257) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %256) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %256) #8
  br label %3156

3156:                                             ; preds = %3155
  br label %3157

3157:                                             ; preds = %3156
  br label %3158

3158:                                             ; preds = %3157
  call void @llvm.lifetime.start.p0(i64 392, ptr %266) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %266)
  %3159 = getelementptr inbounds i8, ptr %266, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3159, ptr noundef @.str.41, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %3160 unwind label %3192

3160:                                             ; preds = %3158
  call void @llvm.lifetime.start.p0(i64 4, ptr %267) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %268) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %268, ptr noundef nonnull align 8 dereferenceable(128) %266)
          to label %3161 unwind label %3196

3161:                                             ; preds = %3160
  %3162 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %268) #8
  %3163 = add i64 %3162, 3
  %3164 = trunc i64 %3163 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %268) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %268) #8
  store i32 %3164, ptr %267, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %269) #8
  %3165 = load i32, ptr %267, align 4, !tbaa !11
  %3166 = sext i32 %3165 to i64
  %3167 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3166) #9
          to label %3168 unwind label %3200

3168:                                             ; preds = %3161
  store ptr %3167, ptr %269, align 8, !tbaa !5
  %3169 = load ptr, ptr %269, align 8, !tbaa !5
  %3170 = load i32, ptr %267, align 4, !tbaa !11
  %3171 = sub nsw i32 %3170, 1
  %3172 = sext i32 %3171 to i64
  %3173 = getelementptr inbounds i8, ptr %3169, i64 %3172
  store i8 0, ptr %3173, align 1, !tbaa !13
  %3174 = load ptr, ptr %269, align 8, !tbaa !5
  %3175 = load i32, ptr %267, align 4, !tbaa !11
  %3176 = sub nsw i32 %3175, 2
  %3177 = sext i32 %3176 to i64
  %3178 = load double, ptr %3, align 8, !tbaa !9
  %3179 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %3174, i64 noundef %3177, ptr noundef @.str.41, double noundef %3178) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %270) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %271) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %271, ptr noundef nonnull align 8 dereferenceable(128) %266)
          to label %3180 unwind label %3204

3180:                                             ; preds = %3168
  call void @llvm.lifetime.start.p0(i64 32, ptr %272) #8
  %3181 = load ptr, ptr %269, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %273) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %273) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %272, ptr noundef %3181, ptr noundef nonnull align 1 dereferenceable(1) %273)
          to label %3182 unwind label %3208

3182:                                             ; preds = %3180
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %270, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %271, ptr noundef nonnull align 8 dereferenceable(32) %272)
          to label %3183 unwind label %3212

3183:                                             ; preds = %3182
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %272) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %273) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %273) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %272) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %271) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %271) #8
  %3184 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %270)
          to label %3185 unwind label %3218

3185:                                             ; preds = %3183
  br i1 %3184, label %3186, label %3222

3186:                                             ; preds = %3185
  br label %3242

3187:                                             ; preds = %3150, %3127
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %260) #8
  br label %3188

3188:                                             ; preds = %3187, %3126
  call void @llvm.lifetime.end.p0(i64 16, ptr %260) #8
  br label %3189

3189:                                             ; preds = %3188, %3109
  call void @llvm.lifetime.end.p0(i64 8, ptr %259) #8
  br label %3190

3190:                                             ; preds = %3189, %3105
  call void @llvm.lifetime.end.p0(i64 4, ptr %257) #8
  br label %3191

3191:                                             ; preds = %3190, %3101
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %256) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %256) #8
  br label %7986

3192:                                             ; preds = %3158
  %3193 = landingpad { ptr, i32 }
          cleanup
  %3194 = extractvalue { ptr, i32 } %3193, 0
  store ptr %3194, ptr %5, align 8
  %3195 = extractvalue { ptr, i32 } %3193, 1
  store i32 %3195, ptr %6, align 4
  br label %3282

3196:                                             ; preds = %3160
  %3197 = landingpad { ptr, i32 }
          cleanup
  %3198 = extractvalue { ptr, i32 } %3197, 0
  store ptr %3198, ptr %5, align 8
  %3199 = extractvalue { ptr, i32 } %3197, 1
  store i32 %3199, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %268) #8
  br label %3281

3200:                                             ; preds = %3161
  %3201 = landingpad { ptr, i32 }
          cleanup
  %3202 = extractvalue { ptr, i32 } %3201, 0
  store ptr %3202, ptr %5, align 8
  %3203 = extractvalue { ptr, i32 } %3201, 1
  store i32 %3203, ptr %6, align 4
  br label %3280

3204:                                             ; preds = %3168
  %3205 = landingpad { ptr, i32 }
          cleanup
  %3206 = extractvalue { ptr, i32 } %3205, 0
  store ptr %3206, ptr %5, align 8
  %3207 = extractvalue { ptr, i32 } %3205, 1
  store i32 %3207, ptr %6, align 4
  br label %3217

3208:                                             ; preds = %3180
  %3209 = landingpad { ptr, i32 }
          cleanup
  %3210 = extractvalue { ptr, i32 } %3209, 0
  store ptr %3210, ptr %5, align 8
  %3211 = extractvalue { ptr, i32 } %3209, 1
  store i32 %3211, ptr %6, align 4
  br label %3216

3212:                                             ; preds = %3182
  %3213 = landingpad { ptr, i32 }
          cleanup
  %3214 = extractvalue { ptr, i32 } %3213, 0
  store ptr %3214, ptr %5, align 8
  %3215 = extractvalue { ptr, i32 } %3213, 1
  store i32 %3215, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %272) #8
  br label %3216

3216:                                             ; preds = %3212, %3208
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %273) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %273) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %272) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %271) #8
  br label %3217

3217:                                             ; preds = %3216, %3204
  call void @llvm.lifetime.end.p0(i64 32, ptr %271) #8
  br label %3279

3218:                                             ; preds = %3183
  %3219 = landingpad { ptr, i32 }
          cleanup
  %3220 = extractvalue { ptr, i32 } %3219, 0
  store ptr %3220, ptr %5, align 8
  %3221 = extractvalue { ptr, i32 } %3219, 1
  store i32 %3221, ptr %6, align 4
  br label %3278

3222:                                             ; preds = %3185
  call void @llvm.lifetime.start.p0(i64 8, ptr %274) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %274)
          to label %3223 unwind label %3228

3223:                                             ; preds = %3222
  call void @llvm.lifetime.start.p0(i64 8, ptr %275) #8
  %3224 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %270)
          to label %3225 unwind label %3232

3225:                                             ; preds = %3223
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %275, i32 noundef 1, ptr noundef @.str.3, i32 noundef 99, ptr noundef %3224)
          to label %3226 unwind label %3232

3226:                                             ; preds = %3225
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %275, ptr noundef nonnull align 8 dereferenceable(8) %274)
          to label %3227 unwind label %3236

3227:                                             ; preds = %3226
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %275) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %275) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %274) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %274) #8
  br label %3242

3228:                                             ; preds = %3222
  %3229 = landingpad { ptr, i32 }
          cleanup
  %3230 = extractvalue { ptr, i32 } %3229, 0
  store ptr %3230, ptr %5, align 8
  %3231 = extractvalue { ptr, i32 } %3229, 1
  store i32 %3231, ptr %6, align 4
  br label %3241

3232:                                             ; preds = %3225, %3223
  %3233 = landingpad { ptr, i32 }
          cleanup
  %3234 = extractvalue { ptr, i32 } %3233, 0
  store ptr %3234, ptr %5, align 8
  %3235 = extractvalue { ptr, i32 } %3233, 1
  store i32 %3235, ptr %6, align 4
  br label %3240

3236:                                             ; preds = %3226
  %3237 = landingpad { ptr, i32 }
          cleanup
  %3238 = extractvalue { ptr, i32 } %3237, 0
  store ptr %3238, ptr %5, align 8
  %3239 = extractvalue { ptr, i32 } %3237, 1
  store i32 %3239, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %275) #8
  br label %3240

3240:                                             ; preds = %3236, %3232
  call void @llvm.lifetime.end.p0(i64 8, ptr %275) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %274) #8
  br label %3241

3241:                                             ; preds = %3240, %3228
  call void @llvm.lifetime.end.p0(i64 8, ptr %274) #8
  br label %3278

3242:                                             ; preds = %3227, %3186
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %270) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %270) #8
  %3243 = load ptr, ptr %269, align 8, !tbaa !5
  %3244 = icmp eq ptr %3243, null
  br i1 %3244, label %3246, label %3245

3245:                                             ; preds = %3242
  call void @_ZdaPv(ptr noundef %3243) #10
  br label %3246

3246:                                             ; preds = %3245, %3242
  call void @llvm.lifetime.end.p0(i64 8, ptr %269) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %267) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %266) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %266) #8
  br label %3247

3247:                                             ; preds = %3246
  br label %3248

3248:                                             ; preds = %3247
  store double 0x3E91CED52219BEA5, ptr %3, align 8, !tbaa !9
  br label %3249

3249:                                             ; preds = %3248
  call void @llvm.lifetime.start.p0(i64 392, ptr %276) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %276)
  %3250 = getelementptr inbounds i8, ptr %276, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3250, ptr noundef @.str.16, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %3251 unwind label %3283

3251:                                             ; preds = %3249
  call void @llvm.lifetime.start.p0(i64 4, ptr %277) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %278) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %278, ptr noundef nonnull align 8 dereferenceable(128) %276)
          to label %3252 unwind label %3287

3252:                                             ; preds = %3251
  %3253 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %278) #8
  %3254 = add i64 %3253, 3
  %3255 = trunc i64 %3254 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %278) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %278) #8
  store i32 %3255, ptr %277, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %279) #8
  %3256 = load i32, ptr %277, align 4, !tbaa !11
  %3257 = sext i32 %3256 to i64
  %3258 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3257) #9
          to label %3259 unwind label %3291

3259:                                             ; preds = %3252
  store ptr %3258, ptr %279, align 8, !tbaa !5
  %3260 = load ptr, ptr %279, align 8, !tbaa !5
  %3261 = load i32, ptr %277, align 4, !tbaa !11
  %3262 = sub nsw i32 %3261, 1
  %3263 = sext i32 %3262 to i64
  %3264 = getelementptr inbounds i8, ptr %3260, i64 %3263
  store i8 0, ptr %3264, align 1, !tbaa !13
  %3265 = load ptr, ptr %279, align 8, !tbaa !5
  %3266 = load i32, ptr %277, align 4, !tbaa !11
  %3267 = sub nsw i32 %3266, 2
  %3268 = sext i32 %3267 to i64
  %3269 = load double, ptr %3, align 8, !tbaa !9
  %3270 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %3265, i64 noundef %3268, ptr noundef @.str.16, double noundef %3269) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %280) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %281) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %281, ptr noundef nonnull align 8 dereferenceable(128) %276)
          to label %3271 unwind label %3295

3271:                                             ; preds = %3259
  call void @llvm.lifetime.start.p0(i64 32, ptr %282) #8
  %3272 = load ptr, ptr %279, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %283) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %283) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %282, ptr noundef %3272, ptr noundef nonnull align 1 dereferenceable(1) %283)
          to label %3273 unwind label %3299

3273:                                             ; preds = %3271
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %280, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %281, ptr noundef nonnull align 8 dereferenceable(32) %282)
          to label %3274 unwind label %3303

3274:                                             ; preds = %3273
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %282) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %283) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %283) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %282) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %281) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %281) #8
  %3275 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %280)
          to label %3276 unwind label %3309

3276:                                             ; preds = %3274
  br i1 %3275, label %3277, label %3313

3277:                                             ; preds = %3276
  br label %3333

3278:                                             ; preds = %3241, %3218
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %270) #8
  br label %3279

3279:                                             ; preds = %3278, %3217
  call void @llvm.lifetime.end.p0(i64 16, ptr %270) #8
  br label %3280

3280:                                             ; preds = %3279, %3200
  call void @llvm.lifetime.end.p0(i64 8, ptr %269) #8
  br label %3281

3281:                                             ; preds = %3280, %3196
  call void @llvm.lifetime.end.p0(i64 4, ptr %267) #8
  br label %3282

3282:                                             ; preds = %3281, %3192
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %266) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %266) #8
  br label %7986

3283:                                             ; preds = %3249
  %3284 = landingpad { ptr, i32 }
          cleanup
  %3285 = extractvalue { ptr, i32 } %3284, 0
  store ptr %3285, ptr %5, align 8
  %3286 = extractvalue { ptr, i32 } %3284, 1
  store i32 %3286, ptr %6, align 4
  br label %3373

3287:                                             ; preds = %3251
  %3288 = landingpad { ptr, i32 }
          cleanup
  %3289 = extractvalue { ptr, i32 } %3288, 0
  store ptr %3289, ptr %5, align 8
  %3290 = extractvalue { ptr, i32 } %3288, 1
  store i32 %3290, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %278) #8
  br label %3372

3291:                                             ; preds = %3252
  %3292 = landingpad { ptr, i32 }
          cleanup
  %3293 = extractvalue { ptr, i32 } %3292, 0
  store ptr %3293, ptr %5, align 8
  %3294 = extractvalue { ptr, i32 } %3292, 1
  store i32 %3294, ptr %6, align 4
  br label %3371

3295:                                             ; preds = %3259
  %3296 = landingpad { ptr, i32 }
          cleanup
  %3297 = extractvalue { ptr, i32 } %3296, 0
  store ptr %3297, ptr %5, align 8
  %3298 = extractvalue { ptr, i32 } %3296, 1
  store i32 %3298, ptr %6, align 4
  br label %3308

3299:                                             ; preds = %3271
  %3300 = landingpad { ptr, i32 }
          cleanup
  %3301 = extractvalue { ptr, i32 } %3300, 0
  store ptr %3301, ptr %5, align 8
  %3302 = extractvalue { ptr, i32 } %3300, 1
  store i32 %3302, ptr %6, align 4
  br label %3307

3303:                                             ; preds = %3273
  %3304 = landingpad { ptr, i32 }
          cleanup
  %3305 = extractvalue { ptr, i32 } %3304, 0
  store ptr %3305, ptr %5, align 8
  %3306 = extractvalue { ptr, i32 } %3304, 1
  store i32 %3306, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %282) #8
  br label %3307

3307:                                             ; preds = %3303, %3299
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %283) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %283) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %282) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %281) #8
  br label %3308

3308:                                             ; preds = %3307, %3295
  call void @llvm.lifetime.end.p0(i64 32, ptr %281) #8
  br label %3370

3309:                                             ; preds = %3274
  %3310 = landingpad { ptr, i32 }
          cleanup
  %3311 = extractvalue { ptr, i32 } %3310, 0
  store ptr %3311, ptr %5, align 8
  %3312 = extractvalue { ptr, i32 } %3310, 1
  store i32 %3312, ptr %6, align 4
  br label %3369

3313:                                             ; preds = %3276
  call void @llvm.lifetime.start.p0(i64 8, ptr %284) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %284)
          to label %3314 unwind label %3319

3314:                                             ; preds = %3313
  call void @llvm.lifetime.start.p0(i64 8, ptr %285) #8
  %3315 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %280)
          to label %3316 unwind label %3323

3316:                                             ; preds = %3314
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %285, i32 noundef 1, ptr noundef @.str.3, i32 noundef 102, ptr noundef %3315)
          to label %3317 unwind label %3323

3317:                                             ; preds = %3316
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef nonnull align 8 dereferenceable(8) %284)
          to label %3318 unwind label %3327

3318:                                             ; preds = %3317
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %285) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %284) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %284) #8
  br label %3333

3319:                                             ; preds = %3313
  %3320 = landingpad { ptr, i32 }
          cleanup
  %3321 = extractvalue { ptr, i32 } %3320, 0
  store ptr %3321, ptr %5, align 8
  %3322 = extractvalue { ptr, i32 } %3320, 1
  store i32 %3322, ptr %6, align 4
  br label %3332

3323:                                             ; preds = %3316, %3314
  %3324 = landingpad { ptr, i32 }
          cleanup
  %3325 = extractvalue { ptr, i32 } %3324, 0
  store ptr %3325, ptr %5, align 8
  %3326 = extractvalue { ptr, i32 } %3324, 1
  store i32 %3326, ptr %6, align 4
  br label %3331

3327:                                             ; preds = %3317
  %3328 = landingpad { ptr, i32 }
          cleanup
  %3329 = extractvalue { ptr, i32 } %3328, 0
  store ptr %3329, ptr %5, align 8
  %3330 = extractvalue { ptr, i32 } %3328, 1
  store i32 %3330, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %285) #8
  br label %3331

3331:                                             ; preds = %3327, %3323
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %284) #8
  br label %3332

3332:                                             ; preds = %3331, %3319
  call void @llvm.lifetime.end.p0(i64 8, ptr %284) #8
  br label %3369

3333:                                             ; preds = %3318, %3277
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %280) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %280) #8
  %3334 = load ptr, ptr %279, align 8, !tbaa !5
  %3335 = icmp eq ptr %3334, null
  br i1 %3335, label %3337, label %3336

3336:                                             ; preds = %3333
  call void @_ZdaPv(ptr noundef %3334) #10
  br label %3337

3337:                                             ; preds = %3336, %3333
  call void @llvm.lifetime.end.p0(i64 8, ptr %279) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %277) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %276) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %276) #8
  br label %3338

3338:                                             ; preds = %3337
  br label %3339

3339:                                             ; preds = %3338
  br label %3340

3340:                                             ; preds = %3339
  call void @llvm.lifetime.start.p0(i64 392, ptr %286) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %286)
  %3341 = getelementptr inbounds i8, ptr %286, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3341, ptr noundef @.str.17, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %3342 unwind label %3374

3342:                                             ; preds = %3340
  call void @llvm.lifetime.start.p0(i64 4, ptr %287) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %288) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %288, ptr noundef nonnull align 8 dereferenceable(128) %286)
          to label %3343 unwind label %3378

3343:                                             ; preds = %3342
  %3344 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %288) #8
  %3345 = add i64 %3344, 3
  %3346 = trunc i64 %3345 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %288) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %288) #8
  store i32 %3346, ptr %287, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %289) #8
  %3347 = load i32, ptr %287, align 4, !tbaa !11
  %3348 = sext i32 %3347 to i64
  %3349 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3348) #9
          to label %3350 unwind label %3382

3350:                                             ; preds = %3343
  store ptr %3349, ptr %289, align 8, !tbaa !5
  %3351 = load ptr, ptr %289, align 8, !tbaa !5
  %3352 = load i32, ptr %287, align 4, !tbaa !11
  %3353 = sub nsw i32 %3352, 1
  %3354 = sext i32 %3353 to i64
  %3355 = getelementptr inbounds i8, ptr %3351, i64 %3354
  store i8 0, ptr %3355, align 1, !tbaa !13
  %3356 = load ptr, ptr %289, align 8, !tbaa !5
  %3357 = load i32, ptr %287, align 4, !tbaa !11
  %3358 = sub nsw i32 %3357, 2
  %3359 = sext i32 %3358 to i64
  %3360 = load double, ptr %3, align 8, !tbaa !9
  %3361 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %3356, i64 noundef %3359, ptr noundef @.str.17, double noundef %3360) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %290) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %291) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %291, ptr noundef nonnull align 8 dereferenceable(128) %286)
          to label %3362 unwind label %3386

3362:                                             ; preds = %3350
  call void @llvm.lifetime.start.p0(i64 32, ptr %292) #8
  %3363 = load ptr, ptr %289, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %293) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %293) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %292, ptr noundef %3363, ptr noundef nonnull align 1 dereferenceable(1) %293)
          to label %3364 unwind label %3390

3364:                                             ; preds = %3362
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %290, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %291, ptr noundef nonnull align 8 dereferenceable(32) %292)
          to label %3365 unwind label %3394

3365:                                             ; preds = %3364
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %292) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %293) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %293) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %292) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %291) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %291) #8
  %3366 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %290)
          to label %3367 unwind label %3400

3367:                                             ; preds = %3365
  br i1 %3366, label %3368, label %3404

3368:                                             ; preds = %3367
  br label %3424

3369:                                             ; preds = %3332, %3309
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %280) #8
  br label %3370

3370:                                             ; preds = %3369, %3308
  call void @llvm.lifetime.end.p0(i64 16, ptr %280) #8
  br label %3371

3371:                                             ; preds = %3370, %3291
  call void @llvm.lifetime.end.p0(i64 8, ptr %279) #8
  br label %3372

3372:                                             ; preds = %3371, %3287
  call void @llvm.lifetime.end.p0(i64 4, ptr %277) #8
  br label %3373

3373:                                             ; preds = %3372, %3283
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %276) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %276) #8
  br label %7986

3374:                                             ; preds = %3340
  %3375 = landingpad { ptr, i32 }
          cleanup
  %3376 = extractvalue { ptr, i32 } %3375, 0
  store ptr %3376, ptr %5, align 8
  %3377 = extractvalue { ptr, i32 } %3375, 1
  store i32 %3377, ptr %6, align 4
  br label %3464

3378:                                             ; preds = %3342
  %3379 = landingpad { ptr, i32 }
          cleanup
  %3380 = extractvalue { ptr, i32 } %3379, 0
  store ptr %3380, ptr %5, align 8
  %3381 = extractvalue { ptr, i32 } %3379, 1
  store i32 %3381, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %288) #8
  br label %3463

3382:                                             ; preds = %3343
  %3383 = landingpad { ptr, i32 }
          cleanup
  %3384 = extractvalue { ptr, i32 } %3383, 0
  store ptr %3384, ptr %5, align 8
  %3385 = extractvalue { ptr, i32 } %3383, 1
  store i32 %3385, ptr %6, align 4
  br label %3462

3386:                                             ; preds = %3350
  %3387 = landingpad { ptr, i32 }
          cleanup
  %3388 = extractvalue { ptr, i32 } %3387, 0
  store ptr %3388, ptr %5, align 8
  %3389 = extractvalue { ptr, i32 } %3387, 1
  store i32 %3389, ptr %6, align 4
  br label %3399

3390:                                             ; preds = %3362
  %3391 = landingpad { ptr, i32 }
          cleanup
  %3392 = extractvalue { ptr, i32 } %3391, 0
  store ptr %3392, ptr %5, align 8
  %3393 = extractvalue { ptr, i32 } %3391, 1
  store i32 %3393, ptr %6, align 4
  br label %3398

3394:                                             ; preds = %3364
  %3395 = landingpad { ptr, i32 }
          cleanup
  %3396 = extractvalue { ptr, i32 } %3395, 0
  store ptr %3396, ptr %5, align 8
  %3397 = extractvalue { ptr, i32 } %3395, 1
  store i32 %3397, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %292) #8
  br label %3398

3398:                                             ; preds = %3394, %3390
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %293) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %293) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %292) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %291) #8
  br label %3399

3399:                                             ; preds = %3398, %3386
  call void @llvm.lifetime.end.p0(i64 32, ptr %291) #8
  br label %3461

3400:                                             ; preds = %3365
  %3401 = landingpad { ptr, i32 }
          cleanup
  %3402 = extractvalue { ptr, i32 } %3401, 0
  store ptr %3402, ptr %5, align 8
  %3403 = extractvalue { ptr, i32 } %3401, 1
  store i32 %3403, ptr %6, align 4
  br label %3460

3404:                                             ; preds = %3367
  call void @llvm.lifetime.start.p0(i64 8, ptr %294) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %294)
          to label %3405 unwind label %3410

3405:                                             ; preds = %3404
  call void @llvm.lifetime.start.p0(i64 8, ptr %295) #8
  %3406 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %290)
          to label %3407 unwind label %3414

3407:                                             ; preds = %3405
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %295, i32 noundef 1, ptr noundef @.str.3, i32 noundef 103, ptr noundef %3406)
          to label %3408 unwind label %3414

3408:                                             ; preds = %3407
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %295, ptr noundef nonnull align 8 dereferenceable(8) %294)
          to label %3409 unwind label %3418

3409:                                             ; preds = %3408
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %295) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %295) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %294) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #8
  br label %3424

3410:                                             ; preds = %3404
  %3411 = landingpad { ptr, i32 }
          cleanup
  %3412 = extractvalue { ptr, i32 } %3411, 0
  store ptr %3412, ptr %5, align 8
  %3413 = extractvalue { ptr, i32 } %3411, 1
  store i32 %3413, ptr %6, align 4
  br label %3423

3414:                                             ; preds = %3407, %3405
  %3415 = landingpad { ptr, i32 }
          cleanup
  %3416 = extractvalue { ptr, i32 } %3415, 0
  store ptr %3416, ptr %5, align 8
  %3417 = extractvalue { ptr, i32 } %3415, 1
  store i32 %3417, ptr %6, align 4
  br label %3422

3418:                                             ; preds = %3408
  %3419 = landingpad { ptr, i32 }
          cleanup
  %3420 = extractvalue { ptr, i32 } %3419, 0
  store ptr %3420, ptr %5, align 8
  %3421 = extractvalue { ptr, i32 } %3419, 1
  store i32 %3421, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %295) #8
  br label %3422

3422:                                             ; preds = %3418, %3414
  call void @llvm.lifetime.end.p0(i64 8, ptr %295) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %294) #8
  br label %3423

3423:                                             ; preds = %3422, %3410
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #8
  br label %3460

3424:                                             ; preds = %3409, %3368
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %290) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %290) #8
  %3425 = load ptr, ptr %289, align 8, !tbaa !5
  %3426 = icmp eq ptr %3425, null
  br i1 %3426, label %3428, label %3427

3427:                                             ; preds = %3424
  call void @_ZdaPv(ptr noundef %3425) #10
  br label %3428

3428:                                             ; preds = %3427, %3424
  call void @llvm.lifetime.end.p0(i64 8, ptr %289) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %287) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %286) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %286) #8
  br label %3429

3429:                                             ; preds = %3428
  br label %3430

3430:                                             ; preds = %3429
  br label %3431

3431:                                             ; preds = %3430
  call void @llvm.lifetime.start.p0(i64 392, ptr %296) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %296)
  %3432 = getelementptr inbounds i8, ptr %296, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3432, ptr noundef @.str.18, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %3433 unwind label %3465

3433:                                             ; preds = %3431
  call void @llvm.lifetime.start.p0(i64 4, ptr %297) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %298) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %298, ptr noundef nonnull align 8 dereferenceable(128) %296)
          to label %3434 unwind label %3469

3434:                                             ; preds = %3433
  %3435 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %298) #8
  %3436 = add i64 %3435, 3
  %3437 = trunc i64 %3436 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %298) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %298) #8
  store i32 %3437, ptr %297, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %299) #8
  %3438 = load i32, ptr %297, align 4, !tbaa !11
  %3439 = sext i32 %3438 to i64
  %3440 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3439) #9
          to label %3441 unwind label %3473

3441:                                             ; preds = %3434
  store ptr %3440, ptr %299, align 8, !tbaa !5
  %3442 = load ptr, ptr %299, align 8, !tbaa !5
  %3443 = load i32, ptr %297, align 4, !tbaa !11
  %3444 = sub nsw i32 %3443, 1
  %3445 = sext i32 %3444 to i64
  %3446 = getelementptr inbounds i8, ptr %3442, i64 %3445
  store i8 0, ptr %3446, align 1, !tbaa !13
  %3447 = load ptr, ptr %299, align 8, !tbaa !5
  %3448 = load i32, ptr %297, align 4, !tbaa !11
  %3449 = sub nsw i32 %3448, 2
  %3450 = sext i32 %3449 to i64
  %3451 = load double, ptr %3, align 8, !tbaa !9
  %3452 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %3447, i64 noundef %3450, ptr noundef @.str.18, double noundef %3451) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %300) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %301) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %301, ptr noundef nonnull align 8 dereferenceable(128) %296)
          to label %3453 unwind label %3477

3453:                                             ; preds = %3441
  call void @llvm.lifetime.start.p0(i64 32, ptr %302) #8
  %3454 = load ptr, ptr %299, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %303) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %303) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %302, ptr noundef %3454, ptr noundef nonnull align 1 dereferenceable(1) %303)
          to label %3455 unwind label %3481

3455:                                             ; preds = %3453
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %300, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %301, ptr noundef nonnull align 8 dereferenceable(32) %302)
          to label %3456 unwind label %3485

3456:                                             ; preds = %3455
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %302) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %303) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %303) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %302) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %301) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %301) #8
  %3457 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %300)
          to label %3458 unwind label %3491

3458:                                             ; preds = %3456
  br i1 %3457, label %3459, label %3495

3459:                                             ; preds = %3458
  br label %3515

3460:                                             ; preds = %3423, %3400
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %290) #8
  br label %3461

3461:                                             ; preds = %3460, %3399
  call void @llvm.lifetime.end.p0(i64 16, ptr %290) #8
  br label %3462

3462:                                             ; preds = %3461, %3382
  call void @llvm.lifetime.end.p0(i64 8, ptr %289) #8
  br label %3463

3463:                                             ; preds = %3462, %3378
  call void @llvm.lifetime.end.p0(i64 4, ptr %287) #8
  br label %3464

3464:                                             ; preds = %3463, %3374
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %286) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %286) #8
  br label %7986

3465:                                             ; preds = %3431
  %3466 = landingpad { ptr, i32 }
          cleanup
  %3467 = extractvalue { ptr, i32 } %3466, 0
  store ptr %3467, ptr %5, align 8
  %3468 = extractvalue { ptr, i32 } %3466, 1
  store i32 %3468, ptr %6, align 4
  br label %3555

3469:                                             ; preds = %3433
  %3470 = landingpad { ptr, i32 }
          cleanup
  %3471 = extractvalue { ptr, i32 } %3470, 0
  store ptr %3471, ptr %5, align 8
  %3472 = extractvalue { ptr, i32 } %3470, 1
  store i32 %3472, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %298) #8
  br label %3554

3473:                                             ; preds = %3434
  %3474 = landingpad { ptr, i32 }
          cleanup
  %3475 = extractvalue { ptr, i32 } %3474, 0
  store ptr %3475, ptr %5, align 8
  %3476 = extractvalue { ptr, i32 } %3474, 1
  store i32 %3476, ptr %6, align 4
  br label %3553

3477:                                             ; preds = %3441
  %3478 = landingpad { ptr, i32 }
          cleanup
  %3479 = extractvalue { ptr, i32 } %3478, 0
  store ptr %3479, ptr %5, align 8
  %3480 = extractvalue { ptr, i32 } %3478, 1
  store i32 %3480, ptr %6, align 4
  br label %3490

3481:                                             ; preds = %3453
  %3482 = landingpad { ptr, i32 }
          cleanup
  %3483 = extractvalue { ptr, i32 } %3482, 0
  store ptr %3483, ptr %5, align 8
  %3484 = extractvalue { ptr, i32 } %3482, 1
  store i32 %3484, ptr %6, align 4
  br label %3489

3485:                                             ; preds = %3455
  %3486 = landingpad { ptr, i32 }
          cleanup
  %3487 = extractvalue { ptr, i32 } %3486, 0
  store ptr %3487, ptr %5, align 8
  %3488 = extractvalue { ptr, i32 } %3486, 1
  store i32 %3488, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %302) #8
  br label %3489

3489:                                             ; preds = %3485, %3481
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %303) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %303) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %302) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %301) #8
  br label %3490

3490:                                             ; preds = %3489, %3477
  call void @llvm.lifetime.end.p0(i64 32, ptr %301) #8
  br label %3552

3491:                                             ; preds = %3456
  %3492 = landingpad { ptr, i32 }
          cleanup
  %3493 = extractvalue { ptr, i32 } %3492, 0
  store ptr %3493, ptr %5, align 8
  %3494 = extractvalue { ptr, i32 } %3492, 1
  store i32 %3494, ptr %6, align 4
  br label %3551

3495:                                             ; preds = %3458
  call void @llvm.lifetime.start.p0(i64 8, ptr %304) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %304)
          to label %3496 unwind label %3501

3496:                                             ; preds = %3495
  call void @llvm.lifetime.start.p0(i64 8, ptr %305) #8
  %3497 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %300)
          to label %3498 unwind label %3505

3498:                                             ; preds = %3496
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %305, i32 noundef 1, ptr noundef @.str.3, i32 noundef 104, ptr noundef %3497)
          to label %3499 unwind label %3505

3499:                                             ; preds = %3498
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %305, ptr noundef nonnull align 8 dereferenceable(8) %304)
          to label %3500 unwind label %3509

3500:                                             ; preds = %3499
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %305) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %305) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %304) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %304) #8
  br label %3515

3501:                                             ; preds = %3495
  %3502 = landingpad { ptr, i32 }
          cleanup
  %3503 = extractvalue { ptr, i32 } %3502, 0
  store ptr %3503, ptr %5, align 8
  %3504 = extractvalue { ptr, i32 } %3502, 1
  store i32 %3504, ptr %6, align 4
  br label %3514

3505:                                             ; preds = %3498, %3496
  %3506 = landingpad { ptr, i32 }
          cleanup
  %3507 = extractvalue { ptr, i32 } %3506, 0
  store ptr %3507, ptr %5, align 8
  %3508 = extractvalue { ptr, i32 } %3506, 1
  store i32 %3508, ptr %6, align 4
  br label %3513

3509:                                             ; preds = %3499
  %3510 = landingpad { ptr, i32 }
          cleanup
  %3511 = extractvalue { ptr, i32 } %3510, 0
  store ptr %3511, ptr %5, align 8
  %3512 = extractvalue { ptr, i32 } %3510, 1
  store i32 %3512, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %305) #8
  br label %3513

3513:                                             ; preds = %3509, %3505
  call void @llvm.lifetime.end.p0(i64 8, ptr %305) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %304) #8
  br label %3514

3514:                                             ; preds = %3513, %3501
  call void @llvm.lifetime.end.p0(i64 8, ptr %304) #8
  br label %3551

3515:                                             ; preds = %3500, %3459
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %300) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %300) #8
  %3516 = load ptr, ptr %299, align 8, !tbaa !5
  %3517 = icmp eq ptr %3516, null
  br i1 %3517, label %3519, label %3518

3518:                                             ; preds = %3515
  call void @_ZdaPv(ptr noundef %3516) #10
  br label %3519

3519:                                             ; preds = %3518, %3515
  call void @llvm.lifetime.end.p0(i64 8, ptr %299) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %297) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %296) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %296) #8
  br label %3520

3520:                                             ; preds = %3519
  br label %3521

3521:                                             ; preds = %3520
  br label %3522

3522:                                             ; preds = %3521
  call void @llvm.lifetime.start.p0(i64 392, ptr %306) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %306)
  %3523 = getelementptr inbounds i8, ptr %306, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3523, ptr noundef @.str.19, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %3524 unwind label %3556

3524:                                             ; preds = %3522
  call void @llvm.lifetime.start.p0(i64 4, ptr %307) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %308) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %308, ptr noundef nonnull align 8 dereferenceable(128) %306)
          to label %3525 unwind label %3560

3525:                                             ; preds = %3524
  %3526 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %308) #8
  %3527 = add i64 %3526, 3
  %3528 = trunc i64 %3527 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %308) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %308) #8
  store i32 %3528, ptr %307, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %309) #8
  %3529 = load i32, ptr %307, align 4, !tbaa !11
  %3530 = sext i32 %3529 to i64
  %3531 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3530) #9
          to label %3532 unwind label %3564

3532:                                             ; preds = %3525
  store ptr %3531, ptr %309, align 8, !tbaa !5
  %3533 = load ptr, ptr %309, align 8, !tbaa !5
  %3534 = load i32, ptr %307, align 4, !tbaa !11
  %3535 = sub nsw i32 %3534, 1
  %3536 = sext i32 %3535 to i64
  %3537 = getelementptr inbounds i8, ptr %3533, i64 %3536
  store i8 0, ptr %3537, align 1, !tbaa !13
  %3538 = load ptr, ptr %309, align 8, !tbaa !5
  %3539 = load i32, ptr %307, align 4, !tbaa !11
  %3540 = sub nsw i32 %3539, 2
  %3541 = sext i32 %3540 to i64
  %3542 = load double, ptr %3, align 8, !tbaa !9
  %3543 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %3538, i64 noundef %3541, ptr noundef @.str.19, double noundef %3542) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %310) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %311) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %311, ptr noundef nonnull align 8 dereferenceable(128) %306)
          to label %3544 unwind label %3568

3544:                                             ; preds = %3532
  call void @llvm.lifetime.start.p0(i64 32, ptr %312) #8
  %3545 = load ptr, ptr %309, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %313) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %313) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %312, ptr noundef %3545, ptr noundef nonnull align 1 dereferenceable(1) %313)
          to label %3546 unwind label %3572

3546:                                             ; preds = %3544
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %310, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %311, ptr noundef nonnull align 8 dereferenceable(32) %312)
          to label %3547 unwind label %3576

3547:                                             ; preds = %3546
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %312) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %313) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %313) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %312) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %311) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %311) #8
  %3548 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %310)
          to label %3549 unwind label %3582

3549:                                             ; preds = %3547
  br i1 %3548, label %3550, label %3586

3550:                                             ; preds = %3549
  br label %3606

3551:                                             ; preds = %3514, %3491
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %300) #8
  br label %3552

3552:                                             ; preds = %3551, %3490
  call void @llvm.lifetime.end.p0(i64 16, ptr %300) #8
  br label %3553

3553:                                             ; preds = %3552, %3473
  call void @llvm.lifetime.end.p0(i64 8, ptr %299) #8
  br label %3554

3554:                                             ; preds = %3553, %3469
  call void @llvm.lifetime.end.p0(i64 4, ptr %297) #8
  br label %3555

3555:                                             ; preds = %3554, %3465
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %296) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %296) #8
  br label %7986

3556:                                             ; preds = %3522
  %3557 = landingpad { ptr, i32 }
          cleanup
  %3558 = extractvalue { ptr, i32 } %3557, 0
  store ptr %3558, ptr %5, align 8
  %3559 = extractvalue { ptr, i32 } %3557, 1
  store i32 %3559, ptr %6, align 4
  br label %3646

3560:                                             ; preds = %3524
  %3561 = landingpad { ptr, i32 }
          cleanup
  %3562 = extractvalue { ptr, i32 } %3561, 0
  store ptr %3562, ptr %5, align 8
  %3563 = extractvalue { ptr, i32 } %3561, 1
  store i32 %3563, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %308) #8
  br label %3645

3564:                                             ; preds = %3525
  %3565 = landingpad { ptr, i32 }
          cleanup
  %3566 = extractvalue { ptr, i32 } %3565, 0
  store ptr %3566, ptr %5, align 8
  %3567 = extractvalue { ptr, i32 } %3565, 1
  store i32 %3567, ptr %6, align 4
  br label %3644

3568:                                             ; preds = %3532
  %3569 = landingpad { ptr, i32 }
          cleanup
  %3570 = extractvalue { ptr, i32 } %3569, 0
  store ptr %3570, ptr %5, align 8
  %3571 = extractvalue { ptr, i32 } %3569, 1
  store i32 %3571, ptr %6, align 4
  br label %3581

3572:                                             ; preds = %3544
  %3573 = landingpad { ptr, i32 }
          cleanup
  %3574 = extractvalue { ptr, i32 } %3573, 0
  store ptr %3574, ptr %5, align 8
  %3575 = extractvalue { ptr, i32 } %3573, 1
  store i32 %3575, ptr %6, align 4
  br label %3580

3576:                                             ; preds = %3546
  %3577 = landingpad { ptr, i32 }
          cleanup
  %3578 = extractvalue { ptr, i32 } %3577, 0
  store ptr %3578, ptr %5, align 8
  %3579 = extractvalue { ptr, i32 } %3577, 1
  store i32 %3579, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %312) #8
  br label %3580

3580:                                             ; preds = %3576, %3572
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %313) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %313) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %312) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %311) #8
  br label %3581

3581:                                             ; preds = %3580, %3568
  call void @llvm.lifetime.end.p0(i64 32, ptr %311) #8
  br label %3643

3582:                                             ; preds = %3547
  %3583 = landingpad { ptr, i32 }
          cleanup
  %3584 = extractvalue { ptr, i32 } %3583, 0
  store ptr %3584, ptr %5, align 8
  %3585 = extractvalue { ptr, i32 } %3583, 1
  store i32 %3585, ptr %6, align 4
  br label %3642

3586:                                             ; preds = %3549
  call void @llvm.lifetime.start.p0(i64 8, ptr %314) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %314)
          to label %3587 unwind label %3592

3587:                                             ; preds = %3586
  call void @llvm.lifetime.start.p0(i64 8, ptr %315) #8
  %3588 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %310)
          to label %3589 unwind label %3596

3589:                                             ; preds = %3587
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %315, i32 noundef 1, ptr noundef @.str.3, i32 noundef 105, ptr noundef %3588)
          to label %3590 unwind label %3596

3590:                                             ; preds = %3589
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %315, ptr noundef nonnull align 8 dereferenceable(8) %314)
          to label %3591 unwind label %3600

3591:                                             ; preds = %3590
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %315) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %315) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %314) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %314) #8
  br label %3606

3592:                                             ; preds = %3586
  %3593 = landingpad { ptr, i32 }
          cleanup
  %3594 = extractvalue { ptr, i32 } %3593, 0
  store ptr %3594, ptr %5, align 8
  %3595 = extractvalue { ptr, i32 } %3593, 1
  store i32 %3595, ptr %6, align 4
  br label %3605

3596:                                             ; preds = %3589, %3587
  %3597 = landingpad { ptr, i32 }
          cleanup
  %3598 = extractvalue { ptr, i32 } %3597, 0
  store ptr %3598, ptr %5, align 8
  %3599 = extractvalue { ptr, i32 } %3597, 1
  store i32 %3599, ptr %6, align 4
  br label %3604

3600:                                             ; preds = %3590
  %3601 = landingpad { ptr, i32 }
          cleanup
  %3602 = extractvalue { ptr, i32 } %3601, 0
  store ptr %3602, ptr %5, align 8
  %3603 = extractvalue { ptr, i32 } %3601, 1
  store i32 %3603, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %315) #8
  br label %3604

3604:                                             ; preds = %3600, %3596
  call void @llvm.lifetime.end.p0(i64 8, ptr %315) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %314) #8
  br label %3605

3605:                                             ; preds = %3604, %3592
  call void @llvm.lifetime.end.p0(i64 8, ptr %314) #8
  br label %3642

3606:                                             ; preds = %3591, %3550
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %310) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %310) #8
  %3607 = load ptr, ptr %309, align 8, !tbaa !5
  %3608 = icmp eq ptr %3607, null
  br i1 %3608, label %3610, label %3609

3609:                                             ; preds = %3606
  call void @_ZdaPv(ptr noundef %3607) #10
  br label %3610

3610:                                             ; preds = %3609, %3606
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %307) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %306) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %306) #8
  br label %3611

3611:                                             ; preds = %3610
  br label %3612

3612:                                             ; preds = %3611
  br label %3613

3613:                                             ; preds = %3612
  call void @llvm.lifetime.start.p0(i64 392, ptr %316) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %316)
  %3614 = getelementptr inbounds i8, ptr %316, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3614, ptr noundef @.str.20, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %3615 unwind label %3647

3615:                                             ; preds = %3613
  call void @llvm.lifetime.start.p0(i64 4, ptr %317) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %318) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %318, ptr noundef nonnull align 8 dereferenceable(128) %316)
          to label %3616 unwind label %3651

3616:                                             ; preds = %3615
  %3617 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %318) #8
  %3618 = add i64 %3617, 3
  %3619 = trunc i64 %3618 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %318) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %318) #8
  store i32 %3619, ptr %317, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %319) #8
  %3620 = load i32, ptr %317, align 4, !tbaa !11
  %3621 = sext i32 %3620 to i64
  %3622 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3621) #9
          to label %3623 unwind label %3655

3623:                                             ; preds = %3616
  store ptr %3622, ptr %319, align 8, !tbaa !5
  %3624 = load ptr, ptr %319, align 8, !tbaa !5
  %3625 = load i32, ptr %317, align 4, !tbaa !11
  %3626 = sub nsw i32 %3625, 1
  %3627 = sext i32 %3626 to i64
  %3628 = getelementptr inbounds i8, ptr %3624, i64 %3627
  store i8 0, ptr %3628, align 1, !tbaa !13
  %3629 = load ptr, ptr %319, align 8, !tbaa !5
  %3630 = load i32, ptr %317, align 4, !tbaa !11
  %3631 = sub nsw i32 %3630, 2
  %3632 = sext i32 %3631 to i64
  %3633 = load double, ptr %3, align 8, !tbaa !9
  %3634 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %3629, i64 noundef %3632, ptr noundef @.str.20, double noundef %3633) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %320) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %321) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %321, ptr noundef nonnull align 8 dereferenceable(128) %316)
          to label %3635 unwind label %3659

3635:                                             ; preds = %3623
  call void @llvm.lifetime.start.p0(i64 32, ptr %322) #8
  %3636 = load ptr, ptr %319, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %323) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %323) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %322, ptr noundef %3636, ptr noundef nonnull align 1 dereferenceable(1) %323)
          to label %3637 unwind label %3663

3637:                                             ; preds = %3635
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %320, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %321, ptr noundef nonnull align 8 dereferenceable(32) %322)
          to label %3638 unwind label %3667

3638:                                             ; preds = %3637
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %322) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %323) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %323) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %322) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %321) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %321) #8
  %3639 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %320)
          to label %3640 unwind label %3673

3640:                                             ; preds = %3638
  br i1 %3639, label %3641, label %3677

3641:                                             ; preds = %3640
  br label %3697

3642:                                             ; preds = %3605, %3582
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %310) #8
  br label %3643

3643:                                             ; preds = %3642, %3581
  call void @llvm.lifetime.end.p0(i64 16, ptr %310) #8
  br label %3644

3644:                                             ; preds = %3643, %3564
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #8
  br label %3645

3645:                                             ; preds = %3644, %3560
  call void @llvm.lifetime.end.p0(i64 4, ptr %307) #8
  br label %3646

3646:                                             ; preds = %3645, %3556
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %306) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %306) #8
  br label %7986

3647:                                             ; preds = %3613
  %3648 = landingpad { ptr, i32 }
          cleanup
  %3649 = extractvalue { ptr, i32 } %3648, 0
  store ptr %3649, ptr %5, align 8
  %3650 = extractvalue { ptr, i32 } %3648, 1
  store i32 %3650, ptr %6, align 4
  br label %3737

3651:                                             ; preds = %3615
  %3652 = landingpad { ptr, i32 }
          cleanup
  %3653 = extractvalue { ptr, i32 } %3652, 0
  store ptr %3653, ptr %5, align 8
  %3654 = extractvalue { ptr, i32 } %3652, 1
  store i32 %3654, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %318) #8
  br label %3736

3655:                                             ; preds = %3616
  %3656 = landingpad { ptr, i32 }
          cleanup
  %3657 = extractvalue { ptr, i32 } %3656, 0
  store ptr %3657, ptr %5, align 8
  %3658 = extractvalue { ptr, i32 } %3656, 1
  store i32 %3658, ptr %6, align 4
  br label %3735

3659:                                             ; preds = %3623
  %3660 = landingpad { ptr, i32 }
          cleanup
  %3661 = extractvalue { ptr, i32 } %3660, 0
  store ptr %3661, ptr %5, align 8
  %3662 = extractvalue { ptr, i32 } %3660, 1
  store i32 %3662, ptr %6, align 4
  br label %3672

3663:                                             ; preds = %3635
  %3664 = landingpad { ptr, i32 }
          cleanup
  %3665 = extractvalue { ptr, i32 } %3664, 0
  store ptr %3665, ptr %5, align 8
  %3666 = extractvalue { ptr, i32 } %3664, 1
  store i32 %3666, ptr %6, align 4
  br label %3671

3667:                                             ; preds = %3637
  %3668 = landingpad { ptr, i32 }
          cleanup
  %3669 = extractvalue { ptr, i32 } %3668, 0
  store ptr %3669, ptr %5, align 8
  %3670 = extractvalue { ptr, i32 } %3668, 1
  store i32 %3670, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %322) #8
  br label %3671

3671:                                             ; preds = %3667, %3663
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %323) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %323) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %322) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %321) #8
  br label %3672

3672:                                             ; preds = %3671, %3659
  call void @llvm.lifetime.end.p0(i64 32, ptr %321) #8
  br label %3734

3673:                                             ; preds = %3638
  %3674 = landingpad { ptr, i32 }
          cleanup
  %3675 = extractvalue { ptr, i32 } %3674, 0
  store ptr %3675, ptr %5, align 8
  %3676 = extractvalue { ptr, i32 } %3674, 1
  store i32 %3676, ptr %6, align 4
  br label %3733

3677:                                             ; preds = %3640
  call void @llvm.lifetime.start.p0(i64 8, ptr %324) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %324)
          to label %3678 unwind label %3683

3678:                                             ; preds = %3677
  call void @llvm.lifetime.start.p0(i64 8, ptr %325) #8
  %3679 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %320)
          to label %3680 unwind label %3687

3680:                                             ; preds = %3678
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %325, i32 noundef 1, ptr noundef @.str.3, i32 noundef 106, ptr noundef %3679)
          to label %3681 unwind label %3687

3681:                                             ; preds = %3680
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %325, ptr noundef nonnull align 8 dereferenceable(8) %324)
          to label %3682 unwind label %3691

3682:                                             ; preds = %3681
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %325) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %325) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %324) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %324) #8
  br label %3697

3683:                                             ; preds = %3677
  %3684 = landingpad { ptr, i32 }
          cleanup
  %3685 = extractvalue { ptr, i32 } %3684, 0
  store ptr %3685, ptr %5, align 8
  %3686 = extractvalue { ptr, i32 } %3684, 1
  store i32 %3686, ptr %6, align 4
  br label %3696

3687:                                             ; preds = %3680, %3678
  %3688 = landingpad { ptr, i32 }
          cleanup
  %3689 = extractvalue { ptr, i32 } %3688, 0
  store ptr %3689, ptr %5, align 8
  %3690 = extractvalue { ptr, i32 } %3688, 1
  store i32 %3690, ptr %6, align 4
  br label %3695

3691:                                             ; preds = %3681
  %3692 = landingpad { ptr, i32 }
          cleanup
  %3693 = extractvalue { ptr, i32 } %3692, 0
  store ptr %3693, ptr %5, align 8
  %3694 = extractvalue { ptr, i32 } %3692, 1
  store i32 %3694, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %325) #8
  br label %3695

3695:                                             ; preds = %3691, %3687
  call void @llvm.lifetime.end.p0(i64 8, ptr %325) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %324) #8
  br label %3696

3696:                                             ; preds = %3695, %3683
  call void @llvm.lifetime.end.p0(i64 8, ptr %324) #8
  br label %3733

3697:                                             ; preds = %3682, %3641
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %320) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %320) #8
  %3698 = load ptr, ptr %319, align 8, !tbaa !5
  %3699 = icmp eq ptr %3698, null
  br i1 %3699, label %3701, label %3700

3700:                                             ; preds = %3697
  call void @_ZdaPv(ptr noundef %3698) #10
  br label %3701

3701:                                             ; preds = %3700, %3697
  call void @llvm.lifetime.end.p0(i64 8, ptr %319) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %317) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %316) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %316) #8
  br label %3702

3702:                                             ; preds = %3701
  br label %3703

3703:                                             ; preds = %3702
  br label %3704

3704:                                             ; preds = %3703
  call void @llvm.lifetime.start.p0(i64 392, ptr %326) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %326)
  %3705 = getelementptr inbounds i8, ptr %326, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3705, ptr noundef @.str.21, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %3706 unwind label %3738

3706:                                             ; preds = %3704
  call void @llvm.lifetime.start.p0(i64 4, ptr %327) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %328) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %328, ptr noundef nonnull align 8 dereferenceable(128) %326)
          to label %3707 unwind label %3742

3707:                                             ; preds = %3706
  %3708 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %328) #8
  %3709 = add i64 %3708, 3
  %3710 = trunc i64 %3709 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %328) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %328) #8
  store i32 %3710, ptr %327, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %329) #8
  %3711 = load i32, ptr %327, align 4, !tbaa !11
  %3712 = sext i32 %3711 to i64
  %3713 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3712) #9
          to label %3714 unwind label %3746

3714:                                             ; preds = %3707
  store ptr %3713, ptr %329, align 8, !tbaa !5
  %3715 = load ptr, ptr %329, align 8, !tbaa !5
  %3716 = load i32, ptr %327, align 4, !tbaa !11
  %3717 = sub nsw i32 %3716, 1
  %3718 = sext i32 %3717 to i64
  %3719 = getelementptr inbounds i8, ptr %3715, i64 %3718
  store i8 0, ptr %3719, align 1, !tbaa !13
  %3720 = load ptr, ptr %329, align 8, !tbaa !5
  %3721 = load i32, ptr %327, align 4, !tbaa !11
  %3722 = sub nsw i32 %3721, 2
  %3723 = sext i32 %3722 to i64
  %3724 = load double, ptr %3, align 8, !tbaa !9
  %3725 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %3720, i64 noundef %3723, ptr noundef @.str.21, double noundef %3724) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %330) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %331) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %331, ptr noundef nonnull align 8 dereferenceable(128) %326)
          to label %3726 unwind label %3750

3726:                                             ; preds = %3714
  call void @llvm.lifetime.start.p0(i64 32, ptr %332) #8
  %3727 = load ptr, ptr %329, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %333) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %333) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %332, ptr noundef %3727, ptr noundef nonnull align 1 dereferenceable(1) %333)
          to label %3728 unwind label %3754

3728:                                             ; preds = %3726
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %330, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %331, ptr noundef nonnull align 8 dereferenceable(32) %332)
          to label %3729 unwind label %3758

3729:                                             ; preds = %3728
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %332) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %333) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %333) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %332) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %331) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %331) #8
  %3730 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %330)
          to label %3731 unwind label %3764

3731:                                             ; preds = %3729
  br i1 %3730, label %3732, label %3768

3732:                                             ; preds = %3731
  br label %3788

3733:                                             ; preds = %3696, %3673
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %320) #8
  br label %3734

3734:                                             ; preds = %3733, %3672
  call void @llvm.lifetime.end.p0(i64 16, ptr %320) #8
  br label %3735

3735:                                             ; preds = %3734, %3655
  call void @llvm.lifetime.end.p0(i64 8, ptr %319) #8
  br label %3736

3736:                                             ; preds = %3735, %3651
  call void @llvm.lifetime.end.p0(i64 4, ptr %317) #8
  br label %3737

3737:                                             ; preds = %3736, %3647
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %316) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %316) #8
  br label %7986

3738:                                             ; preds = %3704
  %3739 = landingpad { ptr, i32 }
          cleanup
  %3740 = extractvalue { ptr, i32 } %3739, 0
  store ptr %3740, ptr %5, align 8
  %3741 = extractvalue { ptr, i32 } %3739, 1
  store i32 %3741, ptr %6, align 4
  br label %3828

3742:                                             ; preds = %3706
  %3743 = landingpad { ptr, i32 }
          cleanup
  %3744 = extractvalue { ptr, i32 } %3743, 0
  store ptr %3744, ptr %5, align 8
  %3745 = extractvalue { ptr, i32 } %3743, 1
  store i32 %3745, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %328) #8
  br label %3827

3746:                                             ; preds = %3707
  %3747 = landingpad { ptr, i32 }
          cleanup
  %3748 = extractvalue { ptr, i32 } %3747, 0
  store ptr %3748, ptr %5, align 8
  %3749 = extractvalue { ptr, i32 } %3747, 1
  store i32 %3749, ptr %6, align 4
  br label %3826

3750:                                             ; preds = %3714
  %3751 = landingpad { ptr, i32 }
          cleanup
  %3752 = extractvalue { ptr, i32 } %3751, 0
  store ptr %3752, ptr %5, align 8
  %3753 = extractvalue { ptr, i32 } %3751, 1
  store i32 %3753, ptr %6, align 4
  br label %3763

3754:                                             ; preds = %3726
  %3755 = landingpad { ptr, i32 }
          cleanup
  %3756 = extractvalue { ptr, i32 } %3755, 0
  store ptr %3756, ptr %5, align 8
  %3757 = extractvalue { ptr, i32 } %3755, 1
  store i32 %3757, ptr %6, align 4
  br label %3762

3758:                                             ; preds = %3728
  %3759 = landingpad { ptr, i32 }
          cleanup
  %3760 = extractvalue { ptr, i32 } %3759, 0
  store ptr %3760, ptr %5, align 8
  %3761 = extractvalue { ptr, i32 } %3759, 1
  store i32 %3761, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %332) #8
  br label %3762

3762:                                             ; preds = %3758, %3754
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %333) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %333) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %332) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %331) #8
  br label %3763

3763:                                             ; preds = %3762, %3750
  call void @llvm.lifetime.end.p0(i64 32, ptr %331) #8
  br label %3825

3764:                                             ; preds = %3729
  %3765 = landingpad { ptr, i32 }
          cleanup
  %3766 = extractvalue { ptr, i32 } %3765, 0
  store ptr %3766, ptr %5, align 8
  %3767 = extractvalue { ptr, i32 } %3765, 1
  store i32 %3767, ptr %6, align 4
  br label %3824

3768:                                             ; preds = %3731
  call void @llvm.lifetime.start.p0(i64 8, ptr %334) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %334)
          to label %3769 unwind label %3774

3769:                                             ; preds = %3768
  call void @llvm.lifetime.start.p0(i64 8, ptr %335) #8
  %3770 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %330)
          to label %3771 unwind label %3778

3771:                                             ; preds = %3769
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %335, i32 noundef 1, ptr noundef @.str.3, i32 noundef 107, ptr noundef %3770)
          to label %3772 unwind label %3778

3772:                                             ; preds = %3771
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %335, ptr noundef nonnull align 8 dereferenceable(8) %334)
          to label %3773 unwind label %3782

3773:                                             ; preds = %3772
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %335) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %335) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %334) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %334) #8
  br label %3788

3774:                                             ; preds = %3768
  %3775 = landingpad { ptr, i32 }
          cleanup
  %3776 = extractvalue { ptr, i32 } %3775, 0
  store ptr %3776, ptr %5, align 8
  %3777 = extractvalue { ptr, i32 } %3775, 1
  store i32 %3777, ptr %6, align 4
  br label %3787

3778:                                             ; preds = %3771, %3769
  %3779 = landingpad { ptr, i32 }
          cleanup
  %3780 = extractvalue { ptr, i32 } %3779, 0
  store ptr %3780, ptr %5, align 8
  %3781 = extractvalue { ptr, i32 } %3779, 1
  store i32 %3781, ptr %6, align 4
  br label %3786

3782:                                             ; preds = %3772
  %3783 = landingpad { ptr, i32 }
          cleanup
  %3784 = extractvalue { ptr, i32 } %3783, 0
  store ptr %3784, ptr %5, align 8
  %3785 = extractvalue { ptr, i32 } %3783, 1
  store i32 %3785, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %335) #8
  br label %3786

3786:                                             ; preds = %3782, %3778
  call void @llvm.lifetime.end.p0(i64 8, ptr %335) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %334) #8
  br label %3787

3787:                                             ; preds = %3786, %3774
  call void @llvm.lifetime.end.p0(i64 8, ptr %334) #8
  br label %3824

3788:                                             ; preds = %3773, %3732
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %330) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %330) #8
  %3789 = load ptr, ptr %329, align 8, !tbaa !5
  %3790 = icmp eq ptr %3789, null
  br i1 %3790, label %3792, label %3791

3791:                                             ; preds = %3788
  call void @_ZdaPv(ptr noundef %3789) #10
  br label %3792

3792:                                             ; preds = %3791, %3788
  call void @llvm.lifetime.end.p0(i64 8, ptr %329) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %327) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %326) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %326) #8
  br label %3793

3793:                                             ; preds = %3792
  br label %3794

3794:                                             ; preds = %3793
  br label %3795

3795:                                             ; preds = %3794
  call void @llvm.lifetime.start.p0(i64 392, ptr %336) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %336)
  %3796 = getelementptr inbounds i8, ptr %336, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3796, ptr noundef @.str.22, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %3797 unwind label %3829

3797:                                             ; preds = %3795
  call void @llvm.lifetime.start.p0(i64 4, ptr %337) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %338) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %338, ptr noundef nonnull align 8 dereferenceable(128) %336)
          to label %3798 unwind label %3833

3798:                                             ; preds = %3797
  %3799 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %338) #8
  %3800 = add i64 %3799, 3
  %3801 = trunc i64 %3800 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %338) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %338) #8
  store i32 %3801, ptr %337, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %339) #8
  %3802 = load i32, ptr %337, align 4, !tbaa !11
  %3803 = sext i32 %3802 to i64
  %3804 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3803) #9
          to label %3805 unwind label %3837

3805:                                             ; preds = %3798
  store ptr %3804, ptr %339, align 8, !tbaa !5
  %3806 = load ptr, ptr %339, align 8, !tbaa !5
  %3807 = load i32, ptr %337, align 4, !tbaa !11
  %3808 = sub nsw i32 %3807, 1
  %3809 = sext i32 %3808 to i64
  %3810 = getelementptr inbounds i8, ptr %3806, i64 %3809
  store i8 0, ptr %3810, align 1, !tbaa !13
  %3811 = load ptr, ptr %339, align 8, !tbaa !5
  %3812 = load i32, ptr %337, align 4, !tbaa !11
  %3813 = sub nsw i32 %3812, 2
  %3814 = sext i32 %3813 to i64
  %3815 = load double, ptr %3, align 8, !tbaa !9
  %3816 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %3811, i64 noundef %3814, ptr noundef @.str.22, double noundef %3815) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %340) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %341) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %341, ptr noundef nonnull align 8 dereferenceable(128) %336)
          to label %3817 unwind label %3841

3817:                                             ; preds = %3805
  call void @llvm.lifetime.start.p0(i64 32, ptr %342) #8
  %3818 = load ptr, ptr %339, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %343) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %343) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %342, ptr noundef %3818, ptr noundef nonnull align 1 dereferenceable(1) %343)
          to label %3819 unwind label %3845

3819:                                             ; preds = %3817
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %340, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %341, ptr noundef nonnull align 8 dereferenceable(32) %342)
          to label %3820 unwind label %3849

3820:                                             ; preds = %3819
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %342) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %343) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %343) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %342) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %341) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %341) #8
  %3821 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %340)
          to label %3822 unwind label %3855

3822:                                             ; preds = %3820
  br i1 %3821, label %3823, label %3859

3823:                                             ; preds = %3822
  br label %3879

3824:                                             ; preds = %3787, %3764
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %330) #8
  br label %3825

3825:                                             ; preds = %3824, %3763
  call void @llvm.lifetime.end.p0(i64 16, ptr %330) #8
  br label %3826

3826:                                             ; preds = %3825, %3746
  call void @llvm.lifetime.end.p0(i64 8, ptr %329) #8
  br label %3827

3827:                                             ; preds = %3826, %3742
  call void @llvm.lifetime.end.p0(i64 4, ptr %327) #8
  br label %3828

3828:                                             ; preds = %3827, %3738
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %326) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %326) #8
  br label %7986

3829:                                             ; preds = %3795
  %3830 = landingpad { ptr, i32 }
          cleanup
  %3831 = extractvalue { ptr, i32 } %3830, 0
  store ptr %3831, ptr %5, align 8
  %3832 = extractvalue { ptr, i32 } %3830, 1
  store i32 %3832, ptr %6, align 4
  br label %3919

3833:                                             ; preds = %3797
  %3834 = landingpad { ptr, i32 }
          cleanup
  %3835 = extractvalue { ptr, i32 } %3834, 0
  store ptr %3835, ptr %5, align 8
  %3836 = extractvalue { ptr, i32 } %3834, 1
  store i32 %3836, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %338) #8
  br label %3918

3837:                                             ; preds = %3798
  %3838 = landingpad { ptr, i32 }
          cleanup
  %3839 = extractvalue { ptr, i32 } %3838, 0
  store ptr %3839, ptr %5, align 8
  %3840 = extractvalue { ptr, i32 } %3838, 1
  store i32 %3840, ptr %6, align 4
  br label %3917

3841:                                             ; preds = %3805
  %3842 = landingpad { ptr, i32 }
          cleanup
  %3843 = extractvalue { ptr, i32 } %3842, 0
  store ptr %3843, ptr %5, align 8
  %3844 = extractvalue { ptr, i32 } %3842, 1
  store i32 %3844, ptr %6, align 4
  br label %3854

3845:                                             ; preds = %3817
  %3846 = landingpad { ptr, i32 }
          cleanup
  %3847 = extractvalue { ptr, i32 } %3846, 0
  store ptr %3847, ptr %5, align 8
  %3848 = extractvalue { ptr, i32 } %3846, 1
  store i32 %3848, ptr %6, align 4
  br label %3853

3849:                                             ; preds = %3819
  %3850 = landingpad { ptr, i32 }
          cleanup
  %3851 = extractvalue { ptr, i32 } %3850, 0
  store ptr %3851, ptr %5, align 8
  %3852 = extractvalue { ptr, i32 } %3850, 1
  store i32 %3852, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %342) #8
  br label %3853

3853:                                             ; preds = %3849, %3845
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %343) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %343) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %342) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %341) #8
  br label %3854

3854:                                             ; preds = %3853, %3841
  call void @llvm.lifetime.end.p0(i64 32, ptr %341) #8
  br label %3916

3855:                                             ; preds = %3820
  %3856 = landingpad { ptr, i32 }
          cleanup
  %3857 = extractvalue { ptr, i32 } %3856, 0
  store ptr %3857, ptr %5, align 8
  %3858 = extractvalue { ptr, i32 } %3856, 1
  store i32 %3858, ptr %6, align 4
  br label %3915

3859:                                             ; preds = %3822
  call void @llvm.lifetime.start.p0(i64 8, ptr %344) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %344)
          to label %3860 unwind label %3865

3860:                                             ; preds = %3859
  call void @llvm.lifetime.start.p0(i64 8, ptr %345) #8
  %3861 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %340)
          to label %3862 unwind label %3869

3862:                                             ; preds = %3860
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %345, i32 noundef 1, ptr noundef @.str.3, i32 noundef 108, ptr noundef %3861)
          to label %3863 unwind label %3869

3863:                                             ; preds = %3862
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %345, ptr noundef nonnull align 8 dereferenceable(8) %344)
          to label %3864 unwind label %3873

3864:                                             ; preds = %3863
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %345) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %345) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %344) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %344) #8
  br label %3879

3865:                                             ; preds = %3859
  %3866 = landingpad { ptr, i32 }
          cleanup
  %3867 = extractvalue { ptr, i32 } %3866, 0
  store ptr %3867, ptr %5, align 8
  %3868 = extractvalue { ptr, i32 } %3866, 1
  store i32 %3868, ptr %6, align 4
  br label %3878

3869:                                             ; preds = %3862, %3860
  %3870 = landingpad { ptr, i32 }
          cleanup
  %3871 = extractvalue { ptr, i32 } %3870, 0
  store ptr %3871, ptr %5, align 8
  %3872 = extractvalue { ptr, i32 } %3870, 1
  store i32 %3872, ptr %6, align 4
  br label %3877

3873:                                             ; preds = %3863
  %3874 = landingpad { ptr, i32 }
          cleanup
  %3875 = extractvalue { ptr, i32 } %3874, 0
  store ptr %3875, ptr %5, align 8
  %3876 = extractvalue { ptr, i32 } %3874, 1
  store i32 %3876, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %345) #8
  br label %3877

3877:                                             ; preds = %3873, %3869
  call void @llvm.lifetime.end.p0(i64 8, ptr %345) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %344) #8
  br label %3878

3878:                                             ; preds = %3877, %3865
  call void @llvm.lifetime.end.p0(i64 8, ptr %344) #8
  br label %3915

3879:                                             ; preds = %3864, %3823
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %340) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %340) #8
  %3880 = load ptr, ptr %339, align 8, !tbaa !5
  %3881 = icmp eq ptr %3880, null
  br i1 %3881, label %3883, label %3882

3882:                                             ; preds = %3879
  call void @_ZdaPv(ptr noundef %3880) #10
  br label %3883

3883:                                             ; preds = %3882, %3879
  call void @llvm.lifetime.end.p0(i64 8, ptr %339) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %337) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %336) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %336) #8
  br label %3884

3884:                                             ; preds = %3883
  br label %3885

3885:                                             ; preds = %3884
  br label %3886

3886:                                             ; preds = %3885
  call void @llvm.lifetime.start.p0(i64 392, ptr %346) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %346)
  %3887 = getelementptr inbounds i8, ptr %346, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3887, ptr noundef @.str.24, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %3888 unwind label %3920

3888:                                             ; preds = %3886
  call void @llvm.lifetime.start.p0(i64 4, ptr %347) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %348) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %348, ptr noundef nonnull align 8 dereferenceable(128) %346)
          to label %3889 unwind label %3924

3889:                                             ; preds = %3888
  %3890 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %348) #8
  %3891 = add i64 %3890, 3
  %3892 = trunc i64 %3891 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %348) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %348) #8
  store i32 %3892, ptr %347, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %349) #8
  %3893 = load i32, ptr %347, align 4, !tbaa !11
  %3894 = sext i32 %3893 to i64
  %3895 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3894) #9
          to label %3896 unwind label %3928

3896:                                             ; preds = %3889
  store ptr %3895, ptr %349, align 8, !tbaa !5
  %3897 = load ptr, ptr %349, align 8, !tbaa !5
  %3898 = load i32, ptr %347, align 4, !tbaa !11
  %3899 = sub nsw i32 %3898, 1
  %3900 = sext i32 %3899 to i64
  %3901 = getelementptr inbounds i8, ptr %3897, i64 %3900
  store i8 0, ptr %3901, align 1, !tbaa !13
  %3902 = load ptr, ptr %349, align 8, !tbaa !5
  %3903 = load i32, ptr %347, align 4, !tbaa !11
  %3904 = sub nsw i32 %3903, 2
  %3905 = sext i32 %3904 to i64
  %3906 = load double, ptr %3, align 8, !tbaa !9
  %3907 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %3902, i64 noundef %3905, ptr noundef @.str.24, double noundef %3906) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %350) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %351) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %351, ptr noundef nonnull align 8 dereferenceable(128) %346)
          to label %3908 unwind label %3932

3908:                                             ; preds = %3896
  call void @llvm.lifetime.start.p0(i64 32, ptr %352) #8
  %3909 = load ptr, ptr %349, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %353) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %353) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %352, ptr noundef %3909, ptr noundef nonnull align 1 dereferenceable(1) %353)
          to label %3910 unwind label %3936

3910:                                             ; preds = %3908
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %350, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %351, ptr noundef nonnull align 8 dereferenceable(32) %352)
          to label %3911 unwind label %3940

3911:                                             ; preds = %3910
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %352) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %353) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %353) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %352) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %351) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %351) #8
  %3912 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %350)
          to label %3913 unwind label %3946

3913:                                             ; preds = %3911
  br i1 %3912, label %3914, label %3950

3914:                                             ; preds = %3913
  br label %3970

3915:                                             ; preds = %3878, %3855
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %340) #8
  br label %3916

3916:                                             ; preds = %3915, %3854
  call void @llvm.lifetime.end.p0(i64 16, ptr %340) #8
  br label %3917

3917:                                             ; preds = %3916, %3837
  call void @llvm.lifetime.end.p0(i64 8, ptr %339) #8
  br label %3918

3918:                                             ; preds = %3917, %3833
  call void @llvm.lifetime.end.p0(i64 4, ptr %337) #8
  br label %3919

3919:                                             ; preds = %3918, %3829
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %336) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %336) #8
  br label %7986

3920:                                             ; preds = %3886
  %3921 = landingpad { ptr, i32 }
          cleanup
  %3922 = extractvalue { ptr, i32 } %3921, 0
  store ptr %3922, ptr %5, align 8
  %3923 = extractvalue { ptr, i32 } %3921, 1
  store i32 %3923, ptr %6, align 4
  br label %4010

3924:                                             ; preds = %3888
  %3925 = landingpad { ptr, i32 }
          cleanup
  %3926 = extractvalue { ptr, i32 } %3925, 0
  store ptr %3926, ptr %5, align 8
  %3927 = extractvalue { ptr, i32 } %3925, 1
  store i32 %3927, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %348) #8
  br label %4009

3928:                                             ; preds = %3889
  %3929 = landingpad { ptr, i32 }
          cleanup
  %3930 = extractvalue { ptr, i32 } %3929, 0
  store ptr %3930, ptr %5, align 8
  %3931 = extractvalue { ptr, i32 } %3929, 1
  store i32 %3931, ptr %6, align 4
  br label %4008

3932:                                             ; preds = %3896
  %3933 = landingpad { ptr, i32 }
          cleanup
  %3934 = extractvalue { ptr, i32 } %3933, 0
  store ptr %3934, ptr %5, align 8
  %3935 = extractvalue { ptr, i32 } %3933, 1
  store i32 %3935, ptr %6, align 4
  br label %3945

3936:                                             ; preds = %3908
  %3937 = landingpad { ptr, i32 }
          cleanup
  %3938 = extractvalue { ptr, i32 } %3937, 0
  store ptr %3938, ptr %5, align 8
  %3939 = extractvalue { ptr, i32 } %3937, 1
  store i32 %3939, ptr %6, align 4
  br label %3944

3940:                                             ; preds = %3910
  %3941 = landingpad { ptr, i32 }
          cleanup
  %3942 = extractvalue { ptr, i32 } %3941, 0
  store ptr %3942, ptr %5, align 8
  %3943 = extractvalue { ptr, i32 } %3941, 1
  store i32 %3943, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %352) #8
  br label %3944

3944:                                             ; preds = %3940, %3936
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %353) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %353) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %352) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %351) #8
  br label %3945

3945:                                             ; preds = %3944, %3932
  call void @llvm.lifetime.end.p0(i64 32, ptr %351) #8
  br label %4007

3946:                                             ; preds = %3911
  %3947 = landingpad { ptr, i32 }
          cleanup
  %3948 = extractvalue { ptr, i32 } %3947, 0
  store ptr %3948, ptr %5, align 8
  %3949 = extractvalue { ptr, i32 } %3947, 1
  store i32 %3949, ptr %6, align 4
  br label %4006

3950:                                             ; preds = %3913
  call void @llvm.lifetime.start.p0(i64 8, ptr %354) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %354)
          to label %3951 unwind label %3956

3951:                                             ; preds = %3950
  call void @llvm.lifetime.start.p0(i64 8, ptr %355) #8
  %3952 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %350)
          to label %3953 unwind label %3960

3953:                                             ; preds = %3951
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %355, i32 noundef 1, ptr noundef @.str.3, i32 noundef 109, ptr noundef %3952)
          to label %3954 unwind label %3960

3954:                                             ; preds = %3953
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %355, ptr noundef nonnull align 8 dereferenceable(8) %354)
          to label %3955 unwind label %3964

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

3956:                                             ; preds = %3950
  %3957 = landingpad { ptr, i32 }
          cleanup
  %3958 = extractvalue { ptr, i32 } %3957, 0
  store ptr %3958, ptr %5, align 8
  %3959 = extractvalue { ptr, i32 } %3957, 1
  store i32 %3959, ptr %6, align 4
  br label %3969

3960:                                             ; preds = %3953, %3951
  %3961 = landingpad { ptr, i32 }
          cleanup
  %3962 = extractvalue { ptr, i32 } %3961, 0
  store ptr %3962, ptr %5, align 8
  %3963 = extractvalue { ptr, i32 } %3961, 1
  store i32 %3963, ptr %6, align 4
  br label %3968

3964:                                             ; preds = %3954
  %3965 = landingpad { ptr, i32 }
          cleanup
  %3966 = extractvalue { ptr, i32 } %3965, 0
  store ptr %3966, ptr %5, align 8
  %3967 = extractvalue { ptr, i32 } %3965, 1
  store i32 %3967, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %355) #8
  br label %3968

3968:                                             ; preds = %3964, %3960
  call void @llvm.lifetime.end.p0(i64 8, ptr %355) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %354) #8
  br label %3969

3969:                                             ; preds = %3968, %3956
  call void @llvm.lifetime.end.p0(i64 8, ptr %354) #8
  br label %4006

3970:                                             ; preds = %3955, %3914
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %350) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %350) #8
  %3971 = load ptr, ptr %349, align 8, !tbaa !5
  %3972 = icmp eq ptr %3971, null
  br i1 %3972, label %3974, label %3973

3973:                                             ; preds = %3970
  call void @_ZdaPv(ptr noundef %3971) #10
  br label %3974

3974:                                             ; preds = %3973, %3970
  call void @llvm.lifetime.end.p0(i64 8, ptr %349) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %347) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %346) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %346) #8
  br label %3975

3975:                                             ; preds = %3974
  br label %3976

3976:                                             ; preds = %3975
  br label %3977

3977:                                             ; preds = %3976
  call void @llvm.lifetime.start.p0(i64 392, ptr %356) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %356)
  %3978 = getelementptr inbounds i8, ptr %356, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3978, ptr noundef @.str.25, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %3979 unwind label %4011

3979:                                             ; preds = %3977
  call void @llvm.lifetime.start.p0(i64 4, ptr %357) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %358) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %358, ptr noundef nonnull align 8 dereferenceable(128) %356)
          to label %3980 unwind label %4015

3980:                                             ; preds = %3979
  %3981 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %358) #8
  %3982 = add i64 %3981, 3
  %3983 = trunc i64 %3982 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %358) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %358) #8
  store i32 %3983, ptr %357, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %359) #8
  %3984 = load i32, ptr %357, align 4, !tbaa !11
  %3985 = sext i32 %3984 to i64
  %3986 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3985) #9
          to label %3987 unwind label %4019

3987:                                             ; preds = %3980
  store ptr %3986, ptr %359, align 8, !tbaa !5
  %3988 = load ptr, ptr %359, align 8, !tbaa !5
  %3989 = load i32, ptr %357, align 4, !tbaa !11
  %3990 = sub nsw i32 %3989, 1
  %3991 = sext i32 %3990 to i64
  %3992 = getelementptr inbounds i8, ptr %3988, i64 %3991
  store i8 0, ptr %3992, align 1, !tbaa !13
  %3993 = load ptr, ptr %359, align 8, !tbaa !5
  %3994 = load i32, ptr %357, align 4, !tbaa !11
  %3995 = sub nsw i32 %3994, 2
  %3996 = sext i32 %3995 to i64
  %3997 = load double, ptr %3, align 8, !tbaa !9
  %3998 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %3993, i64 noundef %3996, ptr noundef @.str.25, double noundef %3997) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %360) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %361) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %361, ptr noundef nonnull align 8 dereferenceable(128) %356)
          to label %3999 unwind label %4023

3999:                                             ; preds = %3987
  call void @llvm.lifetime.start.p0(i64 32, ptr %362) #8
  %4000 = load ptr, ptr %359, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %363) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %363) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %362, ptr noundef %4000, ptr noundef nonnull align 1 dereferenceable(1) %363)
          to label %4001 unwind label %4027

4001:                                             ; preds = %3999
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %360, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %361, ptr noundef nonnull align 8 dereferenceable(32) %362)
          to label %4002 unwind label %4031

4002:                                             ; preds = %4001
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %362) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %363) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %363) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %362) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %361) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %361) #8
  %4003 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %360)
          to label %4004 unwind label %4037

4004:                                             ; preds = %4002
  br i1 %4003, label %4005, label %4041

4005:                                             ; preds = %4004
  br label %4061

4006:                                             ; preds = %3969, %3946
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %350) #8
  br label %4007

4007:                                             ; preds = %4006, %3945
  call void @llvm.lifetime.end.p0(i64 16, ptr %350) #8
  br label %4008

4008:                                             ; preds = %4007, %3928
  call void @llvm.lifetime.end.p0(i64 8, ptr %349) #8
  br label %4009

4009:                                             ; preds = %4008, %3924
  call void @llvm.lifetime.end.p0(i64 4, ptr %347) #8
  br label %4010

4010:                                             ; preds = %4009, %3920
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %346) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %346) #8
  br label %7986

4011:                                             ; preds = %3977
  %4012 = landingpad { ptr, i32 }
          cleanup
  %4013 = extractvalue { ptr, i32 } %4012, 0
  store ptr %4013, ptr %5, align 8
  %4014 = extractvalue { ptr, i32 } %4012, 1
  store i32 %4014, ptr %6, align 4
  br label %4101

4015:                                             ; preds = %3979
  %4016 = landingpad { ptr, i32 }
          cleanup
  %4017 = extractvalue { ptr, i32 } %4016, 0
  store ptr %4017, ptr %5, align 8
  %4018 = extractvalue { ptr, i32 } %4016, 1
  store i32 %4018, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %358) #8
  br label %4100

4019:                                             ; preds = %3980
  %4020 = landingpad { ptr, i32 }
          cleanup
  %4021 = extractvalue { ptr, i32 } %4020, 0
  store ptr %4021, ptr %5, align 8
  %4022 = extractvalue { ptr, i32 } %4020, 1
  store i32 %4022, ptr %6, align 4
  br label %4099

4023:                                             ; preds = %3987
  %4024 = landingpad { ptr, i32 }
          cleanup
  %4025 = extractvalue { ptr, i32 } %4024, 0
  store ptr %4025, ptr %5, align 8
  %4026 = extractvalue { ptr, i32 } %4024, 1
  store i32 %4026, ptr %6, align 4
  br label %4036

4027:                                             ; preds = %3999
  %4028 = landingpad { ptr, i32 }
          cleanup
  %4029 = extractvalue { ptr, i32 } %4028, 0
  store ptr %4029, ptr %5, align 8
  %4030 = extractvalue { ptr, i32 } %4028, 1
  store i32 %4030, ptr %6, align 4
  br label %4035

4031:                                             ; preds = %4001
  %4032 = landingpad { ptr, i32 }
          cleanup
  %4033 = extractvalue { ptr, i32 } %4032, 0
  store ptr %4033, ptr %5, align 8
  %4034 = extractvalue { ptr, i32 } %4032, 1
  store i32 %4034, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %362) #8
  br label %4035

4035:                                             ; preds = %4031, %4027
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %363) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %363) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %362) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %361) #8
  br label %4036

4036:                                             ; preds = %4035, %4023
  call void @llvm.lifetime.end.p0(i64 32, ptr %361) #8
  br label %4098

4037:                                             ; preds = %4002
  %4038 = landingpad { ptr, i32 }
          cleanup
  %4039 = extractvalue { ptr, i32 } %4038, 0
  store ptr %4039, ptr %5, align 8
  %4040 = extractvalue { ptr, i32 } %4038, 1
  store i32 %4040, ptr %6, align 4
  br label %4097

4041:                                             ; preds = %4004
  call void @llvm.lifetime.start.p0(i64 8, ptr %364) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %364)
          to label %4042 unwind label %4047

4042:                                             ; preds = %4041
  call void @llvm.lifetime.start.p0(i64 8, ptr %365) #8
  %4043 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %360)
          to label %4044 unwind label %4051

4044:                                             ; preds = %4042
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %365, i32 noundef 1, ptr noundef @.str.3, i32 noundef 110, ptr noundef %4043)
          to label %4045 unwind label %4051

4045:                                             ; preds = %4044
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %365, ptr noundef nonnull align 8 dereferenceable(8) %364)
          to label %4046 unwind label %4055

4046:                                             ; preds = %4045
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %365) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %365) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %364) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %364) #8
  br label %4061

4047:                                             ; preds = %4041
  %4048 = landingpad { ptr, i32 }
          cleanup
  %4049 = extractvalue { ptr, i32 } %4048, 0
  store ptr %4049, ptr %5, align 8
  %4050 = extractvalue { ptr, i32 } %4048, 1
  store i32 %4050, ptr %6, align 4
  br label %4060

4051:                                             ; preds = %4044, %4042
  %4052 = landingpad { ptr, i32 }
          cleanup
  %4053 = extractvalue { ptr, i32 } %4052, 0
  store ptr %4053, ptr %5, align 8
  %4054 = extractvalue { ptr, i32 } %4052, 1
  store i32 %4054, ptr %6, align 4
  br label %4059

4055:                                             ; preds = %4045
  %4056 = landingpad { ptr, i32 }
          cleanup
  %4057 = extractvalue { ptr, i32 } %4056, 0
  store ptr %4057, ptr %5, align 8
  %4058 = extractvalue { ptr, i32 } %4056, 1
  store i32 %4058, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %365) #8
  br label %4059

4059:                                             ; preds = %4055, %4051
  call void @llvm.lifetime.end.p0(i64 8, ptr %365) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %364) #8
  br label %4060

4060:                                             ; preds = %4059, %4047
  call void @llvm.lifetime.end.p0(i64 8, ptr %364) #8
  br label %4097

4061:                                             ; preds = %4046, %4005
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %360) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %360) #8
  %4062 = load ptr, ptr %359, align 8, !tbaa !5
  %4063 = icmp eq ptr %4062, null
  br i1 %4063, label %4065, label %4064

4064:                                             ; preds = %4061
  call void @_ZdaPv(ptr noundef %4062) #10
  br label %4065

4065:                                             ; preds = %4064, %4061
  call void @llvm.lifetime.end.p0(i64 8, ptr %359) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %357) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %356) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %356) #8
  br label %4066

4066:                                             ; preds = %4065
  br label %4067

4067:                                             ; preds = %4066
  br label %4068

4068:                                             ; preds = %4067
  call void @llvm.lifetime.start.p0(i64 392, ptr %366) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %366)
  %4069 = getelementptr inbounds i8, ptr %366, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4069, ptr noundef @.str.26, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %4070 unwind label %4102

4070:                                             ; preds = %4068
  call void @llvm.lifetime.start.p0(i64 4, ptr %367) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %368) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %368, ptr noundef nonnull align 8 dereferenceable(128) %366)
          to label %4071 unwind label %4106

4071:                                             ; preds = %4070
  %4072 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %368) #8
  %4073 = add i64 %4072, 3
  %4074 = trunc i64 %4073 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %368) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %368) #8
  store i32 %4074, ptr %367, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %369) #8
  %4075 = load i32, ptr %367, align 4, !tbaa !11
  %4076 = sext i32 %4075 to i64
  %4077 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4076) #9
          to label %4078 unwind label %4110

4078:                                             ; preds = %4071
  store ptr %4077, ptr %369, align 8, !tbaa !5
  %4079 = load ptr, ptr %369, align 8, !tbaa !5
  %4080 = load i32, ptr %367, align 4, !tbaa !11
  %4081 = sub nsw i32 %4080, 1
  %4082 = sext i32 %4081 to i64
  %4083 = getelementptr inbounds i8, ptr %4079, i64 %4082
  store i8 0, ptr %4083, align 1, !tbaa !13
  %4084 = load ptr, ptr %369, align 8, !tbaa !5
  %4085 = load i32, ptr %367, align 4, !tbaa !11
  %4086 = sub nsw i32 %4085, 2
  %4087 = sext i32 %4086 to i64
  %4088 = load double, ptr %3, align 8, !tbaa !9
  %4089 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %4084, i64 noundef %4087, ptr noundef @.str.26, double noundef %4088) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %370) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %371) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %371, ptr noundef nonnull align 8 dereferenceable(128) %366)
          to label %4090 unwind label %4114

4090:                                             ; preds = %4078
  call void @llvm.lifetime.start.p0(i64 32, ptr %372) #8
  %4091 = load ptr, ptr %369, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %373) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %373) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %372, ptr noundef %4091, ptr noundef nonnull align 1 dereferenceable(1) %373)
          to label %4092 unwind label %4118

4092:                                             ; preds = %4090
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %370, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %371, ptr noundef nonnull align 8 dereferenceable(32) %372)
          to label %4093 unwind label %4122

4093:                                             ; preds = %4092
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %372) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %373) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %373) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %372) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %371) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %371) #8
  %4094 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %370)
          to label %4095 unwind label %4128

4095:                                             ; preds = %4093
  br i1 %4094, label %4096, label %4132

4096:                                             ; preds = %4095
  br label %4152

4097:                                             ; preds = %4060, %4037
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %360) #8
  br label %4098

4098:                                             ; preds = %4097, %4036
  call void @llvm.lifetime.end.p0(i64 16, ptr %360) #8
  br label %4099

4099:                                             ; preds = %4098, %4019
  call void @llvm.lifetime.end.p0(i64 8, ptr %359) #8
  br label %4100

4100:                                             ; preds = %4099, %4015
  call void @llvm.lifetime.end.p0(i64 4, ptr %357) #8
  br label %4101

4101:                                             ; preds = %4100, %4011
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %356) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %356) #8
  br label %7986

4102:                                             ; preds = %4068
  %4103 = landingpad { ptr, i32 }
          cleanup
  %4104 = extractvalue { ptr, i32 } %4103, 0
  store ptr %4104, ptr %5, align 8
  %4105 = extractvalue { ptr, i32 } %4103, 1
  store i32 %4105, ptr %6, align 4
  br label %4192

4106:                                             ; preds = %4070
  %4107 = landingpad { ptr, i32 }
          cleanup
  %4108 = extractvalue { ptr, i32 } %4107, 0
  store ptr %4108, ptr %5, align 8
  %4109 = extractvalue { ptr, i32 } %4107, 1
  store i32 %4109, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %368) #8
  br label %4191

4110:                                             ; preds = %4071
  %4111 = landingpad { ptr, i32 }
          cleanup
  %4112 = extractvalue { ptr, i32 } %4111, 0
  store ptr %4112, ptr %5, align 8
  %4113 = extractvalue { ptr, i32 } %4111, 1
  store i32 %4113, ptr %6, align 4
  br label %4190

4114:                                             ; preds = %4078
  %4115 = landingpad { ptr, i32 }
          cleanup
  %4116 = extractvalue { ptr, i32 } %4115, 0
  store ptr %4116, ptr %5, align 8
  %4117 = extractvalue { ptr, i32 } %4115, 1
  store i32 %4117, ptr %6, align 4
  br label %4127

4118:                                             ; preds = %4090
  %4119 = landingpad { ptr, i32 }
          cleanup
  %4120 = extractvalue { ptr, i32 } %4119, 0
  store ptr %4120, ptr %5, align 8
  %4121 = extractvalue { ptr, i32 } %4119, 1
  store i32 %4121, ptr %6, align 4
  br label %4126

4122:                                             ; preds = %4092
  %4123 = landingpad { ptr, i32 }
          cleanup
  %4124 = extractvalue { ptr, i32 } %4123, 0
  store ptr %4124, ptr %5, align 8
  %4125 = extractvalue { ptr, i32 } %4123, 1
  store i32 %4125, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %372) #8
  br label %4126

4126:                                             ; preds = %4122, %4118
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %373) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %373) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %372) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %371) #8
  br label %4127

4127:                                             ; preds = %4126, %4114
  call void @llvm.lifetime.end.p0(i64 32, ptr %371) #8
  br label %4189

4128:                                             ; preds = %4093
  %4129 = landingpad { ptr, i32 }
          cleanup
  %4130 = extractvalue { ptr, i32 } %4129, 0
  store ptr %4130, ptr %5, align 8
  %4131 = extractvalue { ptr, i32 } %4129, 1
  store i32 %4131, ptr %6, align 4
  br label %4188

4132:                                             ; preds = %4095
  call void @llvm.lifetime.start.p0(i64 8, ptr %374) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %374)
          to label %4133 unwind label %4138

4133:                                             ; preds = %4132
  call void @llvm.lifetime.start.p0(i64 8, ptr %375) #8
  %4134 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %370)
          to label %4135 unwind label %4142

4135:                                             ; preds = %4133
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %375, i32 noundef 1, ptr noundef @.str.3, i32 noundef 111, ptr noundef %4134)
          to label %4136 unwind label %4142

4136:                                             ; preds = %4135
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %375, ptr noundef nonnull align 8 dereferenceable(8) %374)
          to label %4137 unwind label %4146

4137:                                             ; preds = %4136
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %375) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %375) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %374) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %374) #8
  br label %4152

4138:                                             ; preds = %4132
  %4139 = landingpad { ptr, i32 }
          cleanup
  %4140 = extractvalue { ptr, i32 } %4139, 0
  store ptr %4140, ptr %5, align 8
  %4141 = extractvalue { ptr, i32 } %4139, 1
  store i32 %4141, ptr %6, align 4
  br label %4151

4142:                                             ; preds = %4135, %4133
  %4143 = landingpad { ptr, i32 }
          cleanup
  %4144 = extractvalue { ptr, i32 } %4143, 0
  store ptr %4144, ptr %5, align 8
  %4145 = extractvalue { ptr, i32 } %4143, 1
  store i32 %4145, ptr %6, align 4
  br label %4150

4146:                                             ; preds = %4136
  %4147 = landingpad { ptr, i32 }
          cleanup
  %4148 = extractvalue { ptr, i32 } %4147, 0
  store ptr %4148, ptr %5, align 8
  %4149 = extractvalue { ptr, i32 } %4147, 1
  store i32 %4149, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %375) #8
  br label %4150

4150:                                             ; preds = %4146, %4142
  call void @llvm.lifetime.end.p0(i64 8, ptr %375) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %374) #8
  br label %4151

4151:                                             ; preds = %4150, %4138
  call void @llvm.lifetime.end.p0(i64 8, ptr %374) #8
  br label %4188

4152:                                             ; preds = %4137, %4096
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %370) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %370) #8
  %4153 = load ptr, ptr %369, align 8, !tbaa !5
  %4154 = icmp eq ptr %4153, null
  br i1 %4154, label %4156, label %4155

4155:                                             ; preds = %4152
  call void @_ZdaPv(ptr noundef %4153) #10
  br label %4156

4156:                                             ; preds = %4155, %4152
  call void @llvm.lifetime.end.p0(i64 8, ptr %369) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %367) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %366) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %366) #8
  br label %4157

4157:                                             ; preds = %4156
  br label %4158

4158:                                             ; preds = %4157
  br label %4159

4159:                                             ; preds = %4158
  call void @llvm.lifetime.start.p0(i64 392, ptr %376) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %376)
  %4160 = getelementptr inbounds i8, ptr %376, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4160, ptr noundef @.str.27, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %4161 unwind label %4193

4161:                                             ; preds = %4159
  call void @llvm.lifetime.start.p0(i64 4, ptr %377) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %378) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %378, ptr noundef nonnull align 8 dereferenceable(128) %376)
          to label %4162 unwind label %4197

4162:                                             ; preds = %4161
  %4163 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %378) #8
  %4164 = add i64 %4163, 3
  %4165 = trunc i64 %4164 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %378) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %378) #8
  store i32 %4165, ptr %377, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %379) #8
  %4166 = load i32, ptr %377, align 4, !tbaa !11
  %4167 = sext i32 %4166 to i64
  %4168 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4167) #9
          to label %4169 unwind label %4201

4169:                                             ; preds = %4162
  store ptr %4168, ptr %379, align 8, !tbaa !5
  %4170 = load ptr, ptr %379, align 8, !tbaa !5
  %4171 = load i32, ptr %377, align 4, !tbaa !11
  %4172 = sub nsw i32 %4171, 1
  %4173 = sext i32 %4172 to i64
  %4174 = getelementptr inbounds i8, ptr %4170, i64 %4173
  store i8 0, ptr %4174, align 1, !tbaa !13
  %4175 = load ptr, ptr %379, align 8, !tbaa !5
  %4176 = load i32, ptr %377, align 4, !tbaa !11
  %4177 = sub nsw i32 %4176, 2
  %4178 = sext i32 %4177 to i64
  %4179 = load double, ptr %3, align 8, !tbaa !9
  %4180 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %4175, i64 noundef %4178, ptr noundef @.str.27, double noundef %4179) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %380) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %381) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %381, ptr noundef nonnull align 8 dereferenceable(128) %376)
          to label %4181 unwind label %4205

4181:                                             ; preds = %4169
  call void @llvm.lifetime.start.p0(i64 32, ptr %382) #8
  %4182 = load ptr, ptr %379, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %383) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %383) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %382, ptr noundef %4182, ptr noundef nonnull align 1 dereferenceable(1) %383)
          to label %4183 unwind label %4209

4183:                                             ; preds = %4181
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %380, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %381, ptr noundef nonnull align 8 dereferenceable(32) %382)
          to label %4184 unwind label %4213

4184:                                             ; preds = %4183
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %382) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %383) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %383) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %382) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %381) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %381) #8
  %4185 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %380)
          to label %4186 unwind label %4219

4186:                                             ; preds = %4184
  br i1 %4185, label %4187, label %4223

4187:                                             ; preds = %4186
  br label %4243

4188:                                             ; preds = %4151, %4128
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %370) #8
  br label %4189

4189:                                             ; preds = %4188, %4127
  call void @llvm.lifetime.end.p0(i64 16, ptr %370) #8
  br label %4190

4190:                                             ; preds = %4189, %4110
  call void @llvm.lifetime.end.p0(i64 8, ptr %369) #8
  br label %4191

4191:                                             ; preds = %4190, %4106
  call void @llvm.lifetime.end.p0(i64 4, ptr %367) #8
  br label %4192

4192:                                             ; preds = %4191, %4102
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %366) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %366) #8
  br label %7986

4193:                                             ; preds = %4159
  %4194 = landingpad { ptr, i32 }
          cleanup
  %4195 = extractvalue { ptr, i32 } %4194, 0
  store ptr %4195, ptr %5, align 8
  %4196 = extractvalue { ptr, i32 } %4194, 1
  store i32 %4196, ptr %6, align 4
  br label %4283

4197:                                             ; preds = %4161
  %4198 = landingpad { ptr, i32 }
          cleanup
  %4199 = extractvalue { ptr, i32 } %4198, 0
  store ptr %4199, ptr %5, align 8
  %4200 = extractvalue { ptr, i32 } %4198, 1
  store i32 %4200, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %378) #8
  br label %4282

4201:                                             ; preds = %4162
  %4202 = landingpad { ptr, i32 }
          cleanup
  %4203 = extractvalue { ptr, i32 } %4202, 0
  store ptr %4203, ptr %5, align 8
  %4204 = extractvalue { ptr, i32 } %4202, 1
  store i32 %4204, ptr %6, align 4
  br label %4281

4205:                                             ; preds = %4169
  %4206 = landingpad { ptr, i32 }
          cleanup
  %4207 = extractvalue { ptr, i32 } %4206, 0
  store ptr %4207, ptr %5, align 8
  %4208 = extractvalue { ptr, i32 } %4206, 1
  store i32 %4208, ptr %6, align 4
  br label %4218

4209:                                             ; preds = %4181
  %4210 = landingpad { ptr, i32 }
          cleanup
  %4211 = extractvalue { ptr, i32 } %4210, 0
  store ptr %4211, ptr %5, align 8
  %4212 = extractvalue { ptr, i32 } %4210, 1
  store i32 %4212, ptr %6, align 4
  br label %4217

4213:                                             ; preds = %4183
  %4214 = landingpad { ptr, i32 }
          cleanup
  %4215 = extractvalue { ptr, i32 } %4214, 0
  store ptr %4215, ptr %5, align 8
  %4216 = extractvalue { ptr, i32 } %4214, 1
  store i32 %4216, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %382) #8
  br label %4217

4217:                                             ; preds = %4213, %4209
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %383) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %383) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %382) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %381) #8
  br label %4218

4218:                                             ; preds = %4217, %4205
  call void @llvm.lifetime.end.p0(i64 32, ptr %381) #8
  br label %4280

4219:                                             ; preds = %4184
  %4220 = landingpad { ptr, i32 }
          cleanup
  %4221 = extractvalue { ptr, i32 } %4220, 0
  store ptr %4221, ptr %5, align 8
  %4222 = extractvalue { ptr, i32 } %4220, 1
  store i32 %4222, ptr %6, align 4
  br label %4279

4223:                                             ; preds = %4186
  call void @llvm.lifetime.start.p0(i64 8, ptr %384) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %384)
          to label %4224 unwind label %4229

4224:                                             ; preds = %4223
  call void @llvm.lifetime.start.p0(i64 8, ptr %385) #8
  %4225 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %380)
          to label %4226 unwind label %4233

4226:                                             ; preds = %4224
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %385, i32 noundef 1, ptr noundef @.str.3, i32 noundef 112, ptr noundef %4225)
          to label %4227 unwind label %4233

4227:                                             ; preds = %4226
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %385, ptr noundef nonnull align 8 dereferenceable(8) %384)
          to label %4228 unwind label %4237

4228:                                             ; preds = %4227
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %385) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %385) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %384) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %384) #8
  br label %4243

4229:                                             ; preds = %4223
  %4230 = landingpad { ptr, i32 }
          cleanup
  %4231 = extractvalue { ptr, i32 } %4230, 0
  store ptr %4231, ptr %5, align 8
  %4232 = extractvalue { ptr, i32 } %4230, 1
  store i32 %4232, ptr %6, align 4
  br label %4242

4233:                                             ; preds = %4226, %4224
  %4234 = landingpad { ptr, i32 }
          cleanup
  %4235 = extractvalue { ptr, i32 } %4234, 0
  store ptr %4235, ptr %5, align 8
  %4236 = extractvalue { ptr, i32 } %4234, 1
  store i32 %4236, ptr %6, align 4
  br label %4241

4237:                                             ; preds = %4227
  %4238 = landingpad { ptr, i32 }
          cleanup
  %4239 = extractvalue { ptr, i32 } %4238, 0
  store ptr %4239, ptr %5, align 8
  %4240 = extractvalue { ptr, i32 } %4238, 1
  store i32 %4240, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %385) #8
  br label %4241

4241:                                             ; preds = %4237, %4233
  call void @llvm.lifetime.end.p0(i64 8, ptr %385) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %384) #8
  br label %4242

4242:                                             ; preds = %4241, %4229
  call void @llvm.lifetime.end.p0(i64 8, ptr %384) #8
  br label %4279

4243:                                             ; preds = %4228, %4187
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %380) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %380) #8
  %4244 = load ptr, ptr %379, align 8, !tbaa !5
  %4245 = icmp eq ptr %4244, null
  br i1 %4245, label %4247, label %4246

4246:                                             ; preds = %4243
  call void @_ZdaPv(ptr noundef %4244) #10
  br label %4247

4247:                                             ; preds = %4246, %4243
  call void @llvm.lifetime.end.p0(i64 8, ptr %379) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %377) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %376) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %376) #8
  br label %4248

4248:                                             ; preds = %4247
  br label %4249

4249:                                             ; preds = %4248
  br label %4250

4250:                                             ; preds = %4249
  call void @llvm.lifetime.start.p0(i64 392, ptr %386) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %386)
  %4251 = getelementptr inbounds i8, ptr %386, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4251, ptr noundef @.str.28, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %4252 unwind label %4284

4252:                                             ; preds = %4250
  call void @llvm.lifetime.start.p0(i64 4, ptr %387) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %388) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %388, ptr noundef nonnull align 8 dereferenceable(128) %386)
          to label %4253 unwind label %4288

4253:                                             ; preds = %4252
  %4254 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %388) #8
  %4255 = add i64 %4254, 3
  %4256 = trunc i64 %4255 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %388) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %388) #8
  store i32 %4256, ptr %387, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %389) #8
  %4257 = load i32, ptr %387, align 4, !tbaa !11
  %4258 = sext i32 %4257 to i64
  %4259 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4258) #9
          to label %4260 unwind label %4292

4260:                                             ; preds = %4253
  store ptr %4259, ptr %389, align 8, !tbaa !5
  %4261 = load ptr, ptr %389, align 8, !tbaa !5
  %4262 = load i32, ptr %387, align 4, !tbaa !11
  %4263 = sub nsw i32 %4262, 1
  %4264 = sext i32 %4263 to i64
  %4265 = getelementptr inbounds i8, ptr %4261, i64 %4264
  store i8 0, ptr %4265, align 1, !tbaa !13
  %4266 = load ptr, ptr %389, align 8, !tbaa !5
  %4267 = load i32, ptr %387, align 4, !tbaa !11
  %4268 = sub nsw i32 %4267, 2
  %4269 = sext i32 %4268 to i64
  %4270 = load double, ptr %3, align 8, !tbaa !9
  %4271 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %4266, i64 noundef %4269, ptr noundef @.str.28, double noundef %4270) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %390) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %391) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %391, ptr noundef nonnull align 8 dereferenceable(128) %386)
          to label %4272 unwind label %4296

4272:                                             ; preds = %4260
  call void @llvm.lifetime.start.p0(i64 32, ptr %392) #8
  %4273 = load ptr, ptr %389, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %393) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %393) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %392, ptr noundef %4273, ptr noundef nonnull align 1 dereferenceable(1) %393)
          to label %4274 unwind label %4300

4274:                                             ; preds = %4272
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %390, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %391, ptr noundef nonnull align 8 dereferenceable(32) %392)
          to label %4275 unwind label %4304

4275:                                             ; preds = %4274
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %392) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %393) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %393) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %392) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %391) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %391) #8
  %4276 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %390)
          to label %4277 unwind label %4310

4277:                                             ; preds = %4275
  br i1 %4276, label %4278, label %4314

4278:                                             ; preds = %4277
  br label %4334

4279:                                             ; preds = %4242, %4219
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %380) #8
  br label %4280

4280:                                             ; preds = %4279, %4218
  call void @llvm.lifetime.end.p0(i64 16, ptr %380) #8
  br label %4281

4281:                                             ; preds = %4280, %4201
  call void @llvm.lifetime.end.p0(i64 8, ptr %379) #8
  br label %4282

4282:                                             ; preds = %4281, %4197
  call void @llvm.lifetime.end.p0(i64 4, ptr %377) #8
  br label %4283

4283:                                             ; preds = %4282, %4193
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %376) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %376) #8
  br label %7986

4284:                                             ; preds = %4250
  %4285 = landingpad { ptr, i32 }
          cleanup
  %4286 = extractvalue { ptr, i32 } %4285, 0
  store ptr %4286, ptr %5, align 8
  %4287 = extractvalue { ptr, i32 } %4285, 1
  store i32 %4287, ptr %6, align 4
  br label %4374

4288:                                             ; preds = %4252
  %4289 = landingpad { ptr, i32 }
          cleanup
  %4290 = extractvalue { ptr, i32 } %4289, 0
  store ptr %4290, ptr %5, align 8
  %4291 = extractvalue { ptr, i32 } %4289, 1
  store i32 %4291, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %388) #8
  br label %4373

4292:                                             ; preds = %4253
  %4293 = landingpad { ptr, i32 }
          cleanup
  %4294 = extractvalue { ptr, i32 } %4293, 0
  store ptr %4294, ptr %5, align 8
  %4295 = extractvalue { ptr, i32 } %4293, 1
  store i32 %4295, ptr %6, align 4
  br label %4372

4296:                                             ; preds = %4260
  %4297 = landingpad { ptr, i32 }
          cleanup
  %4298 = extractvalue { ptr, i32 } %4297, 0
  store ptr %4298, ptr %5, align 8
  %4299 = extractvalue { ptr, i32 } %4297, 1
  store i32 %4299, ptr %6, align 4
  br label %4309

4300:                                             ; preds = %4272
  %4301 = landingpad { ptr, i32 }
          cleanup
  %4302 = extractvalue { ptr, i32 } %4301, 0
  store ptr %4302, ptr %5, align 8
  %4303 = extractvalue { ptr, i32 } %4301, 1
  store i32 %4303, ptr %6, align 4
  br label %4308

4304:                                             ; preds = %4274
  %4305 = landingpad { ptr, i32 }
          cleanup
  %4306 = extractvalue { ptr, i32 } %4305, 0
  store ptr %4306, ptr %5, align 8
  %4307 = extractvalue { ptr, i32 } %4305, 1
  store i32 %4307, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %392) #8
  br label %4308

4308:                                             ; preds = %4304, %4300
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %393) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %393) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %392) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %391) #8
  br label %4309

4309:                                             ; preds = %4308, %4296
  call void @llvm.lifetime.end.p0(i64 32, ptr %391) #8
  br label %4371

4310:                                             ; preds = %4275
  %4311 = landingpad { ptr, i32 }
          cleanup
  %4312 = extractvalue { ptr, i32 } %4311, 0
  store ptr %4312, ptr %5, align 8
  %4313 = extractvalue { ptr, i32 } %4311, 1
  store i32 %4313, ptr %6, align 4
  br label %4370

4314:                                             ; preds = %4277
  call void @llvm.lifetime.start.p0(i64 8, ptr %394) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %394)
          to label %4315 unwind label %4320

4315:                                             ; preds = %4314
  call void @llvm.lifetime.start.p0(i64 8, ptr %395) #8
  %4316 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %390)
          to label %4317 unwind label %4324

4317:                                             ; preds = %4315
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %395, i32 noundef 1, ptr noundef @.str.3, i32 noundef 113, ptr noundef %4316)
          to label %4318 unwind label %4324

4318:                                             ; preds = %4317
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %395, ptr noundef nonnull align 8 dereferenceable(8) %394)
          to label %4319 unwind label %4328

4319:                                             ; preds = %4318
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %395) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %395) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %394) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %394) #8
  br label %4334

4320:                                             ; preds = %4314
  %4321 = landingpad { ptr, i32 }
          cleanup
  %4322 = extractvalue { ptr, i32 } %4321, 0
  store ptr %4322, ptr %5, align 8
  %4323 = extractvalue { ptr, i32 } %4321, 1
  store i32 %4323, ptr %6, align 4
  br label %4333

4324:                                             ; preds = %4317, %4315
  %4325 = landingpad { ptr, i32 }
          cleanup
  %4326 = extractvalue { ptr, i32 } %4325, 0
  store ptr %4326, ptr %5, align 8
  %4327 = extractvalue { ptr, i32 } %4325, 1
  store i32 %4327, ptr %6, align 4
  br label %4332

4328:                                             ; preds = %4318
  %4329 = landingpad { ptr, i32 }
          cleanup
  %4330 = extractvalue { ptr, i32 } %4329, 0
  store ptr %4330, ptr %5, align 8
  %4331 = extractvalue { ptr, i32 } %4329, 1
  store i32 %4331, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %395) #8
  br label %4332

4332:                                             ; preds = %4328, %4324
  call void @llvm.lifetime.end.p0(i64 8, ptr %395) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %394) #8
  br label %4333

4333:                                             ; preds = %4332, %4320
  call void @llvm.lifetime.end.p0(i64 8, ptr %394) #8
  br label %4370

4334:                                             ; preds = %4319, %4278
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %390) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %390) #8
  %4335 = load ptr, ptr %389, align 8, !tbaa !5
  %4336 = icmp eq ptr %4335, null
  br i1 %4336, label %4338, label %4337

4337:                                             ; preds = %4334
  call void @_ZdaPv(ptr noundef %4335) #10
  br label %4338

4338:                                             ; preds = %4337, %4334
  call void @llvm.lifetime.end.p0(i64 8, ptr %389) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %387) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %386) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %386) #8
  br label %4339

4339:                                             ; preds = %4338
  br label %4340

4340:                                             ; preds = %4339
  br label %4341

4341:                                             ; preds = %4340
  call void @llvm.lifetime.start.p0(i64 392, ptr %396) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %396)
  %4342 = getelementptr inbounds i8, ptr %396, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4342, ptr noundef @.str.29, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %4343 unwind label %4375

4343:                                             ; preds = %4341
  call void @llvm.lifetime.start.p0(i64 4, ptr %397) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %398) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %398, ptr noundef nonnull align 8 dereferenceable(128) %396)
          to label %4344 unwind label %4379

4344:                                             ; preds = %4343
  %4345 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %398) #8
  %4346 = add i64 %4345, 3
  %4347 = trunc i64 %4346 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %398) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %398) #8
  store i32 %4347, ptr %397, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %399) #8
  %4348 = load i32, ptr %397, align 4, !tbaa !11
  %4349 = sext i32 %4348 to i64
  %4350 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4349) #9
          to label %4351 unwind label %4383

4351:                                             ; preds = %4344
  store ptr %4350, ptr %399, align 8, !tbaa !5
  %4352 = load ptr, ptr %399, align 8, !tbaa !5
  %4353 = load i32, ptr %397, align 4, !tbaa !11
  %4354 = sub nsw i32 %4353, 1
  %4355 = sext i32 %4354 to i64
  %4356 = getelementptr inbounds i8, ptr %4352, i64 %4355
  store i8 0, ptr %4356, align 1, !tbaa !13
  %4357 = load ptr, ptr %399, align 8, !tbaa !5
  %4358 = load i32, ptr %397, align 4, !tbaa !11
  %4359 = sub nsw i32 %4358, 2
  %4360 = sext i32 %4359 to i64
  %4361 = load double, ptr %3, align 8, !tbaa !9
  %4362 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %4357, i64 noundef %4360, ptr noundef @.str.29, double noundef %4361) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %400) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %401) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %401, ptr noundef nonnull align 8 dereferenceable(128) %396)
          to label %4363 unwind label %4387

4363:                                             ; preds = %4351
  call void @llvm.lifetime.start.p0(i64 32, ptr %402) #8
  %4364 = load ptr, ptr %399, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %403) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %403) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %402, ptr noundef %4364, ptr noundef nonnull align 1 dereferenceable(1) %403)
          to label %4365 unwind label %4391

4365:                                             ; preds = %4363
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %400, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %401, ptr noundef nonnull align 8 dereferenceable(32) %402)
          to label %4366 unwind label %4395

4366:                                             ; preds = %4365
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %402) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %403) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %403) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %402) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %401) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %401) #8
  %4367 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %400)
          to label %4368 unwind label %4401

4368:                                             ; preds = %4366
  br i1 %4367, label %4369, label %4405

4369:                                             ; preds = %4368
  br label %4425

4370:                                             ; preds = %4333, %4310
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %390) #8
  br label %4371

4371:                                             ; preds = %4370, %4309
  call void @llvm.lifetime.end.p0(i64 16, ptr %390) #8
  br label %4372

4372:                                             ; preds = %4371, %4292
  call void @llvm.lifetime.end.p0(i64 8, ptr %389) #8
  br label %4373

4373:                                             ; preds = %4372, %4288
  call void @llvm.lifetime.end.p0(i64 4, ptr %387) #8
  br label %4374

4374:                                             ; preds = %4373, %4284
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %386) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %386) #8
  br label %7986

4375:                                             ; preds = %4341
  %4376 = landingpad { ptr, i32 }
          cleanup
  %4377 = extractvalue { ptr, i32 } %4376, 0
  store ptr %4377, ptr %5, align 8
  %4378 = extractvalue { ptr, i32 } %4376, 1
  store i32 %4378, ptr %6, align 4
  br label %4465

4379:                                             ; preds = %4343
  %4380 = landingpad { ptr, i32 }
          cleanup
  %4381 = extractvalue { ptr, i32 } %4380, 0
  store ptr %4381, ptr %5, align 8
  %4382 = extractvalue { ptr, i32 } %4380, 1
  store i32 %4382, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %398) #8
  br label %4464

4383:                                             ; preds = %4344
  %4384 = landingpad { ptr, i32 }
          cleanup
  %4385 = extractvalue { ptr, i32 } %4384, 0
  store ptr %4385, ptr %5, align 8
  %4386 = extractvalue { ptr, i32 } %4384, 1
  store i32 %4386, ptr %6, align 4
  br label %4463

4387:                                             ; preds = %4351
  %4388 = landingpad { ptr, i32 }
          cleanup
  %4389 = extractvalue { ptr, i32 } %4388, 0
  store ptr %4389, ptr %5, align 8
  %4390 = extractvalue { ptr, i32 } %4388, 1
  store i32 %4390, ptr %6, align 4
  br label %4400

4391:                                             ; preds = %4363
  %4392 = landingpad { ptr, i32 }
          cleanup
  %4393 = extractvalue { ptr, i32 } %4392, 0
  store ptr %4393, ptr %5, align 8
  %4394 = extractvalue { ptr, i32 } %4392, 1
  store i32 %4394, ptr %6, align 4
  br label %4399

4395:                                             ; preds = %4365
  %4396 = landingpad { ptr, i32 }
          cleanup
  %4397 = extractvalue { ptr, i32 } %4396, 0
  store ptr %4397, ptr %5, align 8
  %4398 = extractvalue { ptr, i32 } %4396, 1
  store i32 %4398, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %402) #8
  br label %4399

4399:                                             ; preds = %4395, %4391
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %403) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %403) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %402) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %401) #8
  br label %4400

4400:                                             ; preds = %4399, %4387
  call void @llvm.lifetime.end.p0(i64 32, ptr %401) #8
  br label %4462

4401:                                             ; preds = %4366
  %4402 = landingpad { ptr, i32 }
          cleanup
  %4403 = extractvalue { ptr, i32 } %4402, 0
  store ptr %4403, ptr %5, align 8
  %4404 = extractvalue { ptr, i32 } %4402, 1
  store i32 %4404, ptr %6, align 4
  br label %4461

4405:                                             ; preds = %4368
  call void @llvm.lifetime.start.p0(i64 8, ptr %404) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %404)
          to label %4406 unwind label %4411

4406:                                             ; preds = %4405
  call void @llvm.lifetime.start.p0(i64 8, ptr %405) #8
  %4407 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %400)
          to label %4408 unwind label %4415

4408:                                             ; preds = %4406
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %405, i32 noundef 1, ptr noundef @.str.3, i32 noundef 114, ptr noundef %4407)
          to label %4409 unwind label %4415

4409:                                             ; preds = %4408
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %405, ptr noundef nonnull align 8 dereferenceable(8) %404)
          to label %4410 unwind label %4419

4410:                                             ; preds = %4409
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %405) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %405) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %404) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %404) #8
  br label %4425

4411:                                             ; preds = %4405
  %4412 = landingpad { ptr, i32 }
          cleanup
  %4413 = extractvalue { ptr, i32 } %4412, 0
  store ptr %4413, ptr %5, align 8
  %4414 = extractvalue { ptr, i32 } %4412, 1
  store i32 %4414, ptr %6, align 4
  br label %4424

4415:                                             ; preds = %4408, %4406
  %4416 = landingpad { ptr, i32 }
          cleanup
  %4417 = extractvalue { ptr, i32 } %4416, 0
  store ptr %4417, ptr %5, align 8
  %4418 = extractvalue { ptr, i32 } %4416, 1
  store i32 %4418, ptr %6, align 4
  br label %4423

4419:                                             ; preds = %4409
  %4420 = landingpad { ptr, i32 }
          cleanup
  %4421 = extractvalue { ptr, i32 } %4420, 0
  store ptr %4421, ptr %5, align 8
  %4422 = extractvalue { ptr, i32 } %4420, 1
  store i32 %4422, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %405) #8
  br label %4423

4423:                                             ; preds = %4419, %4415
  call void @llvm.lifetime.end.p0(i64 8, ptr %405) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %404) #8
  br label %4424

4424:                                             ; preds = %4423, %4411
  call void @llvm.lifetime.end.p0(i64 8, ptr %404) #8
  br label %4461

4425:                                             ; preds = %4410, %4369
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %400) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %400) #8
  %4426 = load ptr, ptr %399, align 8, !tbaa !5
  %4427 = icmp eq ptr %4426, null
  br i1 %4427, label %4429, label %4428

4428:                                             ; preds = %4425
  call void @_ZdaPv(ptr noundef %4426) #10
  br label %4429

4429:                                             ; preds = %4428, %4425
  call void @llvm.lifetime.end.p0(i64 8, ptr %399) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %397) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %396) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %396) #8
  br label %4430

4430:                                             ; preds = %4429
  br label %4431

4431:                                             ; preds = %4430
  br label %4432

4432:                                             ; preds = %4431
  call void @llvm.lifetime.start.p0(i64 392, ptr %406) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %406)
  %4433 = getelementptr inbounds i8, ptr %406, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4433, ptr noundef @.str.30, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %4434 unwind label %4466

4434:                                             ; preds = %4432
  call void @llvm.lifetime.start.p0(i64 4, ptr %407) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %408) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %408, ptr noundef nonnull align 8 dereferenceable(128) %406)
          to label %4435 unwind label %4470

4435:                                             ; preds = %4434
  %4436 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %408) #8
  %4437 = add i64 %4436, 3
  %4438 = trunc i64 %4437 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %408) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %408) #8
  store i32 %4438, ptr %407, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %409) #8
  %4439 = load i32, ptr %407, align 4, !tbaa !11
  %4440 = sext i32 %4439 to i64
  %4441 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4440) #9
          to label %4442 unwind label %4474

4442:                                             ; preds = %4435
  store ptr %4441, ptr %409, align 8, !tbaa !5
  %4443 = load ptr, ptr %409, align 8, !tbaa !5
  %4444 = load i32, ptr %407, align 4, !tbaa !11
  %4445 = sub nsw i32 %4444, 1
  %4446 = sext i32 %4445 to i64
  %4447 = getelementptr inbounds i8, ptr %4443, i64 %4446
  store i8 0, ptr %4447, align 1, !tbaa !13
  %4448 = load ptr, ptr %409, align 8, !tbaa !5
  %4449 = load i32, ptr %407, align 4, !tbaa !11
  %4450 = sub nsw i32 %4449, 2
  %4451 = sext i32 %4450 to i64
  %4452 = load double, ptr %3, align 8, !tbaa !9
  %4453 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %4448, i64 noundef %4451, ptr noundef @.str.30, double noundef %4452) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %410) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %411) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %411, ptr noundef nonnull align 8 dereferenceable(128) %406)
          to label %4454 unwind label %4478

4454:                                             ; preds = %4442
  call void @llvm.lifetime.start.p0(i64 32, ptr %412) #8
  %4455 = load ptr, ptr %409, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %413) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %413) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %412, ptr noundef %4455, ptr noundef nonnull align 1 dereferenceable(1) %413)
          to label %4456 unwind label %4482

4456:                                             ; preds = %4454
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %410, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %411, ptr noundef nonnull align 8 dereferenceable(32) %412)
          to label %4457 unwind label %4486

4457:                                             ; preds = %4456
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %412) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %413) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %413) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %412) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %411) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %411) #8
  %4458 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %410)
          to label %4459 unwind label %4492

4459:                                             ; preds = %4457
  br i1 %4458, label %4460, label %4496

4460:                                             ; preds = %4459
  br label %4516

4461:                                             ; preds = %4424, %4401
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %400) #8
  br label %4462

4462:                                             ; preds = %4461, %4400
  call void @llvm.lifetime.end.p0(i64 16, ptr %400) #8
  br label %4463

4463:                                             ; preds = %4462, %4383
  call void @llvm.lifetime.end.p0(i64 8, ptr %399) #8
  br label %4464

4464:                                             ; preds = %4463, %4379
  call void @llvm.lifetime.end.p0(i64 4, ptr %397) #8
  br label %4465

4465:                                             ; preds = %4464, %4375
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %396) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %396) #8
  br label %7986

4466:                                             ; preds = %4432
  %4467 = landingpad { ptr, i32 }
          cleanup
  %4468 = extractvalue { ptr, i32 } %4467, 0
  store ptr %4468, ptr %5, align 8
  %4469 = extractvalue { ptr, i32 } %4467, 1
  store i32 %4469, ptr %6, align 4
  br label %4556

4470:                                             ; preds = %4434
  %4471 = landingpad { ptr, i32 }
          cleanup
  %4472 = extractvalue { ptr, i32 } %4471, 0
  store ptr %4472, ptr %5, align 8
  %4473 = extractvalue { ptr, i32 } %4471, 1
  store i32 %4473, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %408) #8
  br label %4555

4474:                                             ; preds = %4435
  %4475 = landingpad { ptr, i32 }
          cleanup
  %4476 = extractvalue { ptr, i32 } %4475, 0
  store ptr %4476, ptr %5, align 8
  %4477 = extractvalue { ptr, i32 } %4475, 1
  store i32 %4477, ptr %6, align 4
  br label %4554

4478:                                             ; preds = %4442
  %4479 = landingpad { ptr, i32 }
          cleanup
  %4480 = extractvalue { ptr, i32 } %4479, 0
  store ptr %4480, ptr %5, align 8
  %4481 = extractvalue { ptr, i32 } %4479, 1
  store i32 %4481, ptr %6, align 4
  br label %4491

4482:                                             ; preds = %4454
  %4483 = landingpad { ptr, i32 }
          cleanup
  %4484 = extractvalue { ptr, i32 } %4483, 0
  store ptr %4484, ptr %5, align 8
  %4485 = extractvalue { ptr, i32 } %4483, 1
  store i32 %4485, ptr %6, align 4
  br label %4490

4486:                                             ; preds = %4456
  %4487 = landingpad { ptr, i32 }
          cleanup
  %4488 = extractvalue { ptr, i32 } %4487, 0
  store ptr %4488, ptr %5, align 8
  %4489 = extractvalue { ptr, i32 } %4487, 1
  store i32 %4489, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %412) #8
  br label %4490

4490:                                             ; preds = %4486, %4482
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %413) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %413) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %412) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %411) #8
  br label %4491

4491:                                             ; preds = %4490, %4478
  call void @llvm.lifetime.end.p0(i64 32, ptr %411) #8
  br label %4553

4492:                                             ; preds = %4457
  %4493 = landingpad { ptr, i32 }
          cleanup
  %4494 = extractvalue { ptr, i32 } %4493, 0
  store ptr %4494, ptr %5, align 8
  %4495 = extractvalue { ptr, i32 } %4493, 1
  store i32 %4495, ptr %6, align 4
  br label %4552

4496:                                             ; preds = %4459
  call void @llvm.lifetime.start.p0(i64 8, ptr %414) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %414)
          to label %4497 unwind label %4502

4497:                                             ; preds = %4496
  call void @llvm.lifetime.start.p0(i64 8, ptr %415) #8
  %4498 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %410)
          to label %4499 unwind label %4506

4499:                                             ; preds = %4497
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %415, i32 noundef 1, ptr noundef @.str.3, i32 noundef 115, ptr noundef %4498)
          to label %4500 unwind label %4506

4500:                                             ; preds = %4499
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %415, ptr noundef nonnull align 8 dereferenceable(8) %414)
          to label %4501 unwind label %4510

4501:                                             ; preds = %4500
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %415) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %415) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %414) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %414) #8
  br label %4516

4502:                                             ; preds = %4496
  %4503 = landingpad { ptr, i32 }
          cleanup
  %4504 = extractvalue { ptr, i32 } %4503, 0
  store ptr %4504, ptr %5, align 8
  %4505 = extractvalue { ptr, i32 } %4503, 1
  store i32 %4505, ptr %6, align 4
  br label %4515

4506:                                             ; preds = %4499, %4497
  %4507 = landingpad { ptr, i32 }
          cleanup
  %4508 = extractvalue { ptr, i32 } %4507, 0
  store ptr %4508, ptr %5, align 8
  %4509 = extractvalue { ptr, i32 } %4507, 1
  store i32 %4509, ptr %6, align 4
  br label %4514

4510:                                             ; preds = %4500
  %4511 = landingpad { ptr, i32 }
          cleanup
  %4512 = extractvalue { ptr, i32 } %4511, 0
  store ptr %4512, ptr %5, align 8
  %4513 = extractvalue { ptr, i32 } %4511, 1
  store i32 %4513, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %415) #8
  br label %4514

4514:                                             ; preds = %4510, %4506
  call void @llvm.lifetime.end.p0(i64 8, ptr %415) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %414) #8
  br label %4515

4515:                                             ; preds = %4514, %4502
  call void @llvm.lifetime.end.p0(i64 8, ptr %414) #8
  br label %4552

4516:                                             ; preds = %4501, %4460
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %410) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %410) #8
  %4517 = load ptr, ptr %409, align 8, !tbaa !5
  %4518 = icmp eq ptr %4517, null
  br i1 %4518, label %4520, label %4519

4519:                                             ; preds = %4516
  call void @_ZdaPv(ptr noundef %4517) #10
  br label %4520

4520:                                             ; preds = %4519, %4516
  call void @llvm.lifetime.end.p0(i64 8, ptr %409) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %407) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %406) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %406) #8
  br label %4521

4521:                                             ; preds = %4520
  br label %4522

4522:                                             ; preds = %4521
  br label %4523

4523:                                             ; preds = %4522
  call void @llvm.lifetime.start.p0(i64 392, ptr %416) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %416)
  %4524 = getelementptr inbounds i8, ptr %416, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4524, ptr noundef @.str.31, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %4525 unwind label %4557

4525:                                             ; preds = %4523
  call void @llvm.lifetime.start.p0(i64 4, ptr %417) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %418) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %418, ptr noundef nonnull align 8 dereferenceable(128) %416)
          to label %4526 unwind label %4561

4526:                                             ; preds = %4525
  %4527 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %418) #8
  %4528 = add i64 %4527, 3
  %4529 = trunc i64 %4528 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %418) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %418) #8
  store i32 %4529, ptr %417, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %419) #8
  %4530 = load i32, ptr %417, align 4, !tbaa !11
  %4531 = sext i32 %4530 to i64
  %4532 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4531) #9
          to label %4533 unwind label %4565

4533:                                             ; preds = %4526
  store ptr %4532, ptr %419, align 8, !tbaa !5
  %4534 = load ptr, ptr %419, align 8, !tbaa !5
  %4535 = load i32, ptr %417, align 4, !tbaa !11
  %4536 = sub nsw i32 %4535, 1
  %4537 = sext i32 %4536 to i64
  %4538 = getelementptr inbounds i8, ptr %4534, i64 %4537
  store i8 0, ptr %4538, align 1, !tbaa !13
  %4539 = load ptr, ptr %419, align 8, !tbaa !5
  %4540 = load i32, ptr %417, align 4, !tbaa !11
  %4541 = sub nsw i32 %4540, 2
  %4542 = sext i32 %4541 to i64
  %4543 = load double, ptr %3, align 8, !tbaa !9
  %4544 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %4539, i64 noundef %4542, ptr noundef @.str.31, double noundef %4543) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %420) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %421) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %421, ptr noundef nonnull align 8 dereferenceable(128) %416)
          to label %4545 unwind label %4569

4545:                                             ; preds = %4533
  call void @llvm.lifetime.start.p0(i64 32, ptr %422) #8
  %4546 = load ptr, ptr %419, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %423) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %423) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %422, ptr noundef %4546, ptr noundef nonnull align 1 dereferenceable(1) %423)
          to label %4547 unwind label %4573

4547:                                             ; preds = %4545
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %420, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %421, ptr noundef nonnull align 8 dereferenceable(32) %422)
          to label %4548 unwind label %4577

4548:                                             ; preds = %4547
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %422) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %423) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %423) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %422) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %421) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %421) #8
  %4549 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %420)
          to label %4550 unwind label %4583

4550:                                             ; preds = %4548
  br i1 %4549, label %4551, label %4587

4551:                                             ; preds = %4550
  br label %4607

4552:                                             ; preds = %4515, %4492
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %410) #8
  br label %4553

4553:                                             ; preds = %4552, %4491
  call void @llvm.lifetime.end.p0(i64 16, ptr %410) #8
  br label %4554

4554:                                             ; preds = %4553, %4474
  call void @llvm.lifetime.end.p0(i64 8, ptr %409) #8
  br label %4555

4555:                                             ; preds = %4554, %4470
  call void @llvm.lifetime.end.p0(i64 4, ptr %407) #8
  br label %4556

4556:                                             ; preds = %4555, %4466
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %406) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %406) #8
  br label %7986

4557:                                             ; preds = %4523
  %4558 = landingpad { ptr, i32 }
          cleanup
  %4559 = extractvalue { ptr, i32 } %4558, 0
  store ptr %4559, ptr %5, align 8
  %4560 = extractvalue { ptr, i32 } %4558, 1
  store i32 %4560, ptr %6, align 4
  br label %4647

4561:                                             ; preds = %4525
  %4562 = landingpad { ptr, i32 }
          cleanup
  %4563 = extractvalue { ptr, i32 } %4562, 0
  store ptr %4563, ptr %5, align 8
  %4564 = extractvalue { ptr, i32 } %4562, 1
  store i32 %4564, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %418) #8
  br label %4646

4565:                                             ; preds = %4526
  %4566 = landingpad { ptr, i32 }
          cleanup
  %4567 = extractvalue { ptr, i32 } %4566, 0
  store ptr %4567, ptr %5, align 8
  %4568 = extractvalue { ptr, i32 } %4566, 1
  store i32 %4568, ptr %6, align 4
  br label %4645

4569:                                             ; preds = %4533
  %4570 = landingpad { ptr, i32 }
          cleanup
  %4571 = extractvalue { ptr, i32 } %4570, 0
  store ptr %4571, ptr %5, align 8
  %4572 = extractvalue { ptr, i32 } %4570, 1
  store i32 %4572, ptr %6, align 4
  br label %4582

4573:                                             ; preds = %4545
  %4574 = landingpad { ptr, i32 }
          cleanup
  %4575 = extractvalue { ptr, i32 } %4574, 0
  store ptr %4575, ptr %5, align 8
  %4576 = extractvalue { ptr, i32 } %4574, 1
  store i32 %4576, ptr %6, align 4
  br label %4581

4577:                                             ; preds = %4547
  %4578 = landingpad { ptr, i32 }
          cleanup
  %4579 = extractvalue { ptr, i32 } %4578, 0
  store ptr %4579, ptr %5, align 8
  %4580 = extractvalue { ptr, i32 } %4578, 1
  store i32 %4580, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %422) #8
  br label %4581

4581:                                             ; preds = %4577, %4573
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %423) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %423) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %422) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %421) #8
  br label %4582

4582:                                             ; preds = %4581, %4569
  call void @llvm.lifetime.end.p0(i64 32, ptr %421) #8
  br label %4644

4583:                                             ; preds = %4548
  %4584 = landingpad { ptr, i32 }
          cleanup
  %4585 = extractvalue { ptr, i32 } %4584, 0
  store ptr %4585, ptr %5, align 8
  %4586 = extractvalue { ptr, i32 } %4584, 1
  store i32 %4586, ptr %6, align 4
  br label %4643

4587:                                             ; preds = %4550
  call void @llvm.lifetime.start.p0(i64 8, ptr %424) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %424)
          to label %4588 unwind label %4593

4588:                                             ; preds = %4587
  call void @llvm.lifetime.start.p0(i64 8, ptr %425) #8
  %4589 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %420)
          to label %4590 unwind label %4597

4590:                                             ; preds = %4588
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %425, i32 noundef 1, ptr noundef @.str.3, i32 noundef 116, ptr noundef %4589)
          to label %4591 unwind label %4597

4591:                                             ; preds = %4590
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %425, ptr noundef nonnull align 8 dereferenceable(8) %424)
          to label %4592 unwind label %4601

4592:                                             ; preds = %4591
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %425) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %425) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %424) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %424) #8
  br label %4607

4593:                                             ; preds = %4587
  %4594 = landingpad { ptr, i32 }
          cleanup
  %4595 = extractvalue { ptr, i32 } %4594, 0
  store ptr %4595, ptr %5, align 8
  %4596 = extractvalue { ptr, i32 } %4594, 1
  store i32 %4596, ptr %6, align 4
  br label %4606

4597:                                             ; preds = %4590, %4588
  %4598 = landingpad { ptr, i32 }
          cleanup
  %4599 = extractvalue { ptr, i32 } %4598, 0
  store ptr %4599, ptr %5, align 8
  %4600 = extractvalue { ptr, i32 } %4598, 1
  store i32 %4600, ptr %6, align 4
  br label %4605

4601:                                             ; preds = %4591
  %4602 = landingpad { ptr, i32 }
          cleanup
  %4603 = extractvalue { ptr, i32 } %4602, 0
  store ptr %4603, ptr %5, align 8
  %4604 = extractvalue { ptr, i32 } %4602, 1
  store i32 %4604, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %425) #8
  br label %4605

4605:                                             ; preds = %4601, %4597
  call void @llvm.lifetime.end.p0(i64 8, ptr %425) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %424) #8
  br label %4606

4606:                                             ; preds = %4605, %4593
  call void @llvm.lifetime.end.p0(i64 8, ptr %424) #8
  br label %4643

4607:                                             ; preds = %4592, %4551
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %420) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %420) #8
  %4608 = load ptr, ptr %419, align 8, !tbaa !5
  %4609 = icmp eq ptr %4608, null
  br i1 %4609, label %4611, label %4610

4610:                                             ; preds = %4607
  call void @_ZdaPv(ptr noundef %4608) #10
  br label %4611

4611:                                             ; preds = %4610, %4607
  call void @llvm.lifetime.end.p0(i64 8, ptr %419) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %417) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %416) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %416) #8
  br label %4612

4612:                                             ; preds = %4611
  br label %4613

4613:                                             ; preds = %4612
  br label %4614

4614:                                             ; preds = %4613
  call void @llvm.lifetime.start.p0(i64 392, ptr %426) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %426)
  %4615 = getelementptr inbounds i8, ptr %426, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4615, ptr noundef @.str.16, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %4616 unwind label %4648

4616:                                             ; preds = %4614
  call void @llvm.lifetime.start.p0(i64 4, ptr %427) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %428) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %428, ptr noundef nonnull align 8 dereferenceable(128) %426)
          to label %4617 unwind label %4652

4617:                                             ; preds = %4616
  %4618 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %428) #8
  %4619 = add i64 %4618, 3
  %4620 = trunc i64 %4619 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %428) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %428) #8
  store i32 %4620, ptr %427, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %429) #8
  %4621 = load i32, ptr %427, align 4, !tbaa !11
  %4622 = sext i32 %4621 to i64
  %4623 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4622) #9
          to label %4624 unwind label %4656

4624:                                             ; preds = %4617
  store ptr %4623, ptr %429, align 8, !tbaa !5
  %4625 = load ptr, ptr %429, align 8, !tbaa !5
  %4626 = load i32, ptr %427, align 4, !tbaa !11
  %4627 = sub nsw i32 %4626, 1
  %4628 = sext i32 %4627 to i64
  %4629 = getelementptr inbounds i8, ptr %4625, i64 %4628
  store i8 0, ptr %4629, align 1, !tbaa !13
  %4630 = load ptr, ptr %429, align 8, !tbaa !5
  %4631 = load i32, ptr %427, align 4, !tbaa !11
  %4632 = sub nsw i32 %4631, 2
  %4633 = sext i32 %4632 to i64
  %4634 = load double, ptr %3, align 8, !tbaa !9
  %4635 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %4630, i64 noundef %4633, ptr noundef @.str.16, double noundef %4634) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %430) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %431) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %431, ptr noundef nonnull align 8 dereferenceable(128) %426)
          to label %4636 unwind label %4660

4636:                                             ; preds = %4624
  call void @llvm.lifetime.start.p0(i64 32, ptr %432) #8
  %4637 = load ptr, ptr %429, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %433) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %433) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %432, ptr noundef %4637, ptr noundef nonnull align 1 dereferenceable(1) %433)
          to label %4638 unwind label %4664

4638:                                             ; preds = %4636
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %430, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %431, ptr noundef nonnull align 8 dereferenceable(32) %432)
          to label %4639 unwind label %4668

4639:                                             ; preds = %4638
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %432) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %433) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %433) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %432) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %431) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %431) #8
  %4640 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %430)
          to label %4641 unwind label %4674

4641:                                             ; preds = %4639
  br i1 %4640, label %4642, label %4678

4642:                                             ; preds = %4641
  br label %4698

4643:                                             ; preds = %4606, %4583
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %420) #8
  br label %4644

4644:                                             ; preds = %4643, %4582
  call void @llvm.lifetime.end.p0(i64 16, ptr %420) #8
  br label %4645

4645:                                             ; preds = %4644, %4565
  call void @llvm.lifetime.end.p0(i64 8, ptr %419) #8
  br label %4646

4646:                                             ; preds = %4645, %4561
  call void @llvm.lifetime.end.p0(i64 4, ptr %417) #8
  br label %4647

4647:                                             ; preds = %4646, %4557
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %416) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %416) #8
  br label %7986

4648:                                             ; preds = %4614
  %4649 = landingpad { ptr, i32 }
          cleanup
  %4650 = extractvalue { ptr, i32 } %4649, 0
  store ptr %4650, ptr %5, align 8
  %4651 = extractvalue { ptr, i32 } %4649, 1
  store i32 %4651, ptr %6, align 4
  br label %4738

4652:                                             ; preds = %4616
  %4653 = landingpad { ptr, i32 }
          cleanup
  %4654 = extractvalue { ptr, i32 } %4653, 0
  store ptr %4654, ptr %5, align 8
  %4655 = extractvalue { ptr, i32 } %4653, 1
  store i32 %4655, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %428) #8
  br label %4737

4656:                                             ; preds = %4617
  %4657 = landingpad { ptr, i32 }
          cleanup
  %4658 = extractvalue { ptr, i32 } %4657, 0
  store ptr %4658, ptr %5, align 8
  %4659 = extractvalue { ptr, i32 } %4657, 1
  store i32 %4659, ptr %6, align 4
  br label %4736

4660:                                             ; preds = %4624
  %4661 = landingpad { ptr, i32 }
          cleanup
  %4662 = extractvalue { ptr, i32 } %4661, 0
  store ptr %4662, ptr %5, align 8
  %4663 = extractvalue { ptr, i32 } %4661, 1
  store i32 %4663, ptr %6, align 4
  br label %4673

4664:                                             ; preds = %4636
  %4665 = landingpad { ptr, i32 }
          cleanup
  %4666 = extractvalue { ptr, i32 } %4665, 0
  store ptr %4666, ptr %5, align 8
  %4667 = extractvalue { ptr, i32 } %4665, 1
  store i32 %4667, ptr %6, align 4
  br label %4672

4668:                                             ; preds = %4638
  %4669 = landingpad { ptr, i32 }
          cleanup
  %4670 = extractvalue { ptr, i32 } %4669, 0
  store ptr %4670, ptr %5, align 8
  %4671 = extractvalue { ptr, i32 } %4669, 1
  store i32 %4671, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %432) #8
  br label %4672

4672:                                             ; preds = %4668, %4664
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %433) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %433) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %432) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %431) #8
  br label %4673

4673:                                             ; preds = %4672, %4660
  call void @llvm.lifetime.end.p0(i64 32, ptr %431) #8
  br label %4735

4674:                                             ; preds = %4639
  %4675 = landingpad { ptr, i32 }
          cleanup
  %4676 = extractvalue { ptr, i32 } %4675, 0
  store ptr %4676, ptr %5, align 8
  %4677 = extractvalue { ptr, i32 } %4675, 1
  store i32 %4677, ptr %6, align 4
  br label %4734

4678:                                             ; preds = %4641
  call void @llvm.lifetime.start.p0(i64 8, ptr %434) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %434)
          to label %4679 unwind label %4684

4679:                                             ; preds = %4678
  call void @llvm.lifetime.start.p0(i64 8, ptr %435) #8
  %4680 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %430)
          to label %4681 unwind label %4688

4681:                                             ; preds = %4679
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %435, i32 noundef 1, ptr noundef @.str.3, i32 noundef 117, ptr noundef %4680)
          to label %4682 unwind label %4688

4682:                                             ; preds = %4681
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %435, ptr noundef nonnull align 8 dereferenceable(8) %434)
          to label %4683 unwind label %4692

4683:                                             ; preds = %4682
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %435) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %435) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %434) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %434) #8
  br label %4698

4684:                                             ; preds = %4678
  %4685 = landingpad { ptr, i32 }
          cleanup
  %4686 = extractvalue { ptr, i32 } %4685, 0
  store ptr %4686, ptr %5, align 8
  %4687 = extractvalue { ptr, i32 } %4685, 1
  store i32 %4687, ptr %6, align 4
  br label %4697

4688:                                             ; preds = %4681, %4679
  %4689 = landingpad { ptr, i32 }
          cleanup
  %4690 = extractvalue { ptr, i32 } %4689, 0
  store ptr %4690, ptr %5, align 8
  %4691 = extractvalue { ptr, i32 } %4689, 1
  store i32 %4691, ptr %6, align 4
  br label %4696

4692:                                             ; preds = %4682
  %4693 = landingpad { ptr, i32 }
          cleanup
  %4694 = extractvalue { ptr, i32 } %4693, 0
  store ptr %4694, ptr %5, align 8
  %4695 = extractvalue { ptr, i32 } %4693, 1
  store i32 %4695, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %435) #8
  br label %4696

4696:                                             ; preds = %4692, %4688
  call void @llvm.lifetime.end.p0(i64 8, ptr %435) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %434) #8
  br label %4697

4697:                                             ; preds = %4696, %4684
  call void @llvm.lifetime.end.p0(i64 8, ptr %434) #8
  br label %4734

4698:                                             ; preds = %4683, %4642
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %430) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %430) #8
  %4699 = load ptr, ptr %429, align 8, !tbaa !5
  %4700 = icmp eq ptr %4699, null
  br i1 %4700, label %4702, label %4701

4701:                                             ; preds = %4698
  call void @_ZdaPv(ptr noundef %4699) #10
  br label %4702

4702:                                             ; preds = %4701, %4698
  call void @llvm.lifetime.end.p0(i64 8, ptr %429) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %427) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %426) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %426) #8
  br label %4703

4703:                                             ; preds = %4702
  br label %4704

4704:                                             ; preds = %4703
  br label %4705

4705:                                             ; preds = %4704
  call void @llvm.lifetime.start.p0(i64 392, ptr %436) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %436)
  %4706 = getelementptr inbounds i8, ptr %436, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4706, ptr noundef @.str.32, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %4707 unwind label %4739

4707:                                             ; preds = %4705
  call void @llvm.lifetime.start.p0(i64 4, ptr %437) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %438) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %438, ptr noundef nonnull align 8 dereferenceable(128) %436)
          to label %4708 unwind label %4743

4708:                                             ; preds = %4707
  %4709 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %438) #8
  %4710 = add i64 %4709, 3
  %4711 = trunc i64 %4710 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %438) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %438) #8
  store i32 %4711, ptr %437, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %439) #8
  %4712 = load i32, ptr %437, align 4, !tbaa !11
  %4713 = sext i32 %4712 to i64
  %4714 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4713) #9
          to label %4715 unwind label %4747

4715:                                             ; preds = %4708
  store ptr %4714, ptr %439, align 8, !tbaa !5
  %4716 = load ptr, ptr %439, align 8, !tbaa !5
  %4717 = load i32, ptr %437, align 4, !tbaa !11
  %4718 = sub nsw i32 %4717, 1
  %4719 = sext i32 %4718 to i64
  %4720 = getelementptr inbounds i8, ptr %4716, i64 %4719
  store i8 0, ptr %4720, align 1, !tbaa !13
  %4721 = load ptr, ptr %439, align 8, !tbaa !5
  %4722 = load i32, ptr %437, align 4, !tbaa !11
  %4723 = sub nsw i32 %4722, 2
  %4724 = sext i32 %4723 to i64
  %4725 = load double, ptr %3, align 8, !tbaa !9
  %4726 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %4721, i64 noundef %4724, ptr noundef @.str.32, double noundef %4725) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %440) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %441) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %441, ptr noundef nonnull align 8 dereferenceable(128) %436)
          to label %4727 unwind label %4751

4727:                                             ; preds = %4715
  call void @llvm.lifetime.start.p0(i64 32, ptr %442) #8
  %4728 = load ptr, ptr %439, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %443) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %443) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %442, ptr noundef %4728, ptr noundef nonnull align 1 dereferenceable(1) %443)
          to label %4729 unwind label %4755

4729:                                             ; preds = %4727
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %440, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %441, ptr noundef nonnull align 8 dereferenceable(32) %442)
          to label %4730 unwind label %4759

4730:                                             ; preds = %4729
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %442) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %443) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %443) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %442) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %441) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %441) #8
  %4731 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %440)
          to label %4732 unwind label %4765

4732:                                             ; preds = %4730
  br i1 %4731, label %4733, label %4769

4733:                                             ; preds = %4732
  br label %4789

4734:                                             ; preds = %4697, %4674
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %430) #8
  br label %4735

4735:                                             ; preds = %4734, %4673
  call void @llvm.lifetime.end.p0(i64 16, ptr %430) #8
  br label %4736

4736:                                             ; preds = %4735, %4656
  call void @llvm.lifetime.end.p0(i64 8, ptr %429) #8
  br label %4737

4737:                                             ; preds = %4736, %4652
  call void @llvm.lifetime.end.p0(i64 4, ptr %427) #8
  br label %4738

4738:                                             ; preds = %4737, %4648
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %426) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %426) #8
  br label %7986

4739:                                             ; preds = %4705
  %4740 = landingpad { ptr, i32 }
          cleanup
  %4741 = extractvalue { ptr, i32 } %4740, 0
  store ptr %4741, ptr %5, align 8
  %4742 = extractvalue { ptr, i32 } %4740, 1
  store i32 %4742, ptr %6, align 4
  br label %4829

4743:                                             ; preds = %4707
  %4744 = landingpad { ptr, i32 }
          cleanup
  %4745 = extractvalue { ptr, i32 } %4744, 0
  store ptr %4745, ptr %5, align 8
  %4746 = extractvalue { ptr, i32 } %4744, 1
  store i32 %4746, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %438) #8
  br label %4828

4747:                                             ; preds = %4708
  %4748 = landingpad { ptr, i32 }
          cleanup
  %4749 = extractvalue { ptr, i32 } %4748, 0
  store ptr %4749, ptr %5, align 8
  %4750 = extractvalue { ptr, i32 } %4748, 1
  store i32 %4750, ptr %6, align 4
  br label %4827

4751:                                             ; preds = %4715
  %4752 = landingpad { ptr, i32 }
          cleanup
  %4753 = extractvalue { ptr, i32 } %4752, 0
  store ptr %4753, ptr %5, align 8
  %4754 = extractvalue { ptr, i32 } %4752, 1
  store i32 %4754, ptr %6, align 4
  br label %4764

4755:                                             ; preds = %4727
  %4756 = landingpad { ptr, i32 }
          cleanup
  %4757 = extractvalue { ptr, i32 } %4756, 0
  store ptr %4757, ptr %5, align 8
  %4758 = extractvalue { ptr, i32 } %4756, 1
  store i32 %4758, ptr %6, align 4
  br label %4763

4759:                                             ; preds = %4729
  %4760 = landingpad { ptr, i32 }
          cleanup
  %4761 = extractvalue { ptr, i32 } %4760, 0
  store ptr %4761, ptr %5, align 8
  %4762 = extractvalue { ptr, i32 } %4760, 1
  store i32 %4762, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %442) #8
  br label %4763

4763:                                             ; preds = %4759, %4755
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %443) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %443) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %442) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %441) #8
  br label %4764

4764:                                             ; preds = %4763, %4751
  call void @llvm.lifetime.end.p0(i64 32, ptr %441) #8
  br label %4826

4765:                                             ; preds = %4730
  %4766 = landingpad { ptr, i32 }
          cleanup
  %4767 = extractvalue { ptr, i32 } %4766, 0
  store ptr %4767, ptr %5, align 8
  %4768 = extractvalue { ptr, i32 } %4766, 1
  store i32 %4768, ptr %6, align 4
  br label %4825

4769:                                             ; preds = %4732
  call void @llvm.lifetime.start.p0(i64 8, ptr %444) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %444)
          to label %4770 unwind label %4775

4770:                                             ; preds = %4769
  call void @llvm.lifetime.start.p0(i64 8, ptr %445) #8
  %4771 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %440)
          to label %4772 unwind label %4779

4772:                                             ; preds = %4770
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %445, i32 noundef 1, ptr noundef @.str.3, i32 noundef 118, ptr noundef %4771)
          to label %4773 unwind label %4779

4773:                                             ; preds = %4772
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %445, ptr noundef nonnull align 8 dereferenceable(8) %444)
          to label %4774 unwind label %4783

4774:                                             ; preds = %4773
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %445) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %445) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %444) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %444) #8
  br label %4789

4775:                                             ; preds = %4769
  %4776 = landingpad { ptr, i32 }
          cleanup
  %4777 = extractvalue { ptr, i32 } %4776, 0
  store ptr %4777, ptr %5, align 8
  %4778 = extractvalue { ptr, i32 } %4776, 1
  store i32 %4778, ptr %6, align 4
  br label %4788

4779:                                             ; preds = %4772, %4770
  %4780 = landingpad { ptr, i32 }
          cleanup
  %4781 = extractvalue { ptr, i32 } %4780, 0
  store ptr %4781, ptr %5, align 8
  %4782 = extractvalue { ptr, i32 } %4780, 1
  store i32 %4782, ptr %6, align 4
  br label %4787

4783:                                             ; preds = %4773
  %4784 = landingpad { ptr, i32 }
          cleanup
  %4785 = extractvalue { ptr, i32 } %4784, 0
  store ptr %4785, ptr %5, align 8
  %4786 = extractvalue { ptr, i32 } %4784, 1
  store i32 %4786, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %445) #8
  br label %4787

4787:                                             ; preds = %4783, %4779
  call void @llvm.lifetime.end.p0(i64 8, ptr %445) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %444) #8
  br label %4788

4788:                                             ; preds = %4787, %4775
  call void @llvm.lifetime.end.p0(i64 8, ptr %444) #8
  br label %4825

4789:                                             ; preds = %4774, %4733
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %440) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %440) #8
  %4790 = load ptr, ptr %439, align 8, !tbaa !5
  %4791 = icmp eq ptr %4790, null
  br i1 %4791, label %4793, label %4792

4792:                                             ; preds = %4789
  call void @_ZdaPv(ptr noundef %4790) #10
  br label %4793

4793:                                             ; preds = %4792, %4789
  call void @llvm.lifetime.end.p0(i64 8, ptr %439) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %437) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %436) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %436) #8
  br label %4794

4794:                                             ; preds = %4793
  br label %4795

4795:                                             ; preds = %4794
  br label %4796

4796:                                             ; preds = %4795
  call void @llvm.lifetime.start.p0(i64 392, ptr %446) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %446)
  %4797 = getelementptr inbounds i8, ptr %446, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4797, ptr noundef @.str.33, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %4798 unwind label %4830

4798:                                             ; preds = %4796
  call void @llvm.lifetime.start.p0(i64 4, ptr %447) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %448) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %448, ptr noundef nonnull align 8 dereferenceable(128) %446)
          to label %4799 unwind label %4834

4799:                                             ; preds = %4798
  %4800 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %448) #8
  %4801 = add i64 %4800, 3
  %4802 = trunc i64 %4801 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %448) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %448) #8
  store i32 %4802, ptr %447, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %449) #8
  %4803 = load i32, ptr %447, align 4, !tbaa !11
  %4804 = sext i32 %4803 to i64
  %4805 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4804) #9
          to label %4806 unwind label %4838

4806:                                             ; preds = %4799
  store ptr %4805, ptr %449, align 8, !tbaa !5
  %4807 = load ptr, ptr %449, align 8, !tbaa !5
  %4808 = load i32, ptr %447, align 4, !tbaa !11
  %4809 = sub nsw i32 %4808, 1
  %4810 = sext i32 %4809 to i64
  %4811 = getelementptr inbounds i8, ptr %4807, i64 %4810
  store i8 0, ptr %4811, align 1, !tbaa !13
  %4812 = load ptr, ptr %449, align 8, !tbaa !5
  %4813 = load i32, ptr %447, align 4, !tbaa !11
  %4814 = sub nsw i32 %4813, 2
  %4815 = sext i32 %4814 to i64
  %4816 = load double, ptr %3, align 8, !tbaa !9
  %4817 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %4812, i64 noundef %4815, ptr noundef @.str.33, double noundef %4816) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %450) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %451) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %451, ptr noundef nonnull align 8 dereferenceable(128) %446)
          to label %4818 unwind label %4842

4818:                                             ; preds = %4806
  call void @llvm.lifetime.start.p0(i64 32, ptr %452) #8
  %4819 = load ptr, ptr %449, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %453) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %453) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %452, ptr noundef %4819, ptr noundef nonnull align 1 dereferenceable(1) %453)
          to label %4820 unwind label %4846

4820:                                             ; preds = %4818
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %450, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %451, ptr noundef nonnull align 8 dereferenceable(32) %452)
          to label %4821 unwind label %4850

4821:                                             ; preds = %4820
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %452) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %453) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %453) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %452) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %451) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %451) #8
  %4822 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %450)
          to label %4823 unwind label %4856

4823:                                             ; preds = %4821
  br i1 %4822, label %4824, label %4860

4824:                                             ; preds = %4823
  br label %4880

4825:                                             ; preds = %4788, %4765
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %440) #8
  br label %4826

4826:                                             ; preds = %4825, %4764
  call void @llvm.lifetime.end.p0(i64 16, ptr %440) #8
  br label %4827

4827:                                             ; preds = %4826, %4747
  call void @llvm.lifetime.end.p0(i64 8, ptr %439) #8
  br label %4828

4828:                                             ; preds = %4827, %4743
  call void @llvm.lifetime.end.p0(i64 4, ptr %437) #8
  br label %4829

4829:                                             ; preds = %4828, %4739
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %436) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %436) #8
  br label %7986

4830:                                             ; preds = %4796
  %4831 = landingpad { ptr, i32 }
          cleanup
  %4832 = extractvalue { ptr, i32 } %4831, 0
  store ptr %4832, ptr %5, align 8
  %4833 = extractvalue { ptr, i32 } %4831, 1
  store i32 %4833, ptr %6, align 4
  br label %4920

4834:                                             ; preds = %4798
  %4835 = landingpad { ptr, i32 }
          cleanup
  %4836 = extractvalue { ptr, i32 } %4835, 0
  store ptr %4836, ptr %5, align 8
  %4837 = extractvalue { ptr, i32 } %4835, 1
  store i32 %4837, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %448) #8
  br label %4919

4838:                                             ; preds = %4799
  %4839 = landingpad { ptr, i32 }
          cleanup
  %4840 = extractvalue { ptr, i32 } %4839, 0
  store ptr %4840, ptr %5, align 8
  %4841 = extractvalue { ptr, i32 } %4839, 1
  store i32 %4841, ptr %6, align 4
  br label %4918

4842:                                             ; preds = %4806
  %4843 = landingpad { ptr, i32 }
          cleanup
  %4844 = extractvalue { ptr, i32 } %4843, 0
  store ptr %4844, ptr %5, align 8
  %4845 = extractvalue { ptr, i32 } %4843, 1
  store i32 %4845, ptr %6, align 4
  br label %4855

4846:                                             ; preds = %4818
  %4847 = landingpad { ptr, i32 }
          cleanup
  %4848 = extractvalue { ptr, i32 } %4847, 0
  store ptr %4848, ptr %5, align 8
  %4849 = extractvalue { ptr, i32 } %4847, 1
  store i32 %4849, ptr %6, align 4
  br label %4854

4850:                                             ; preds = %4820
  %4851 = landingpad { ptr, i32 }
          cleanup
  %4852 = extractvalue { ptr, i32 } %4851, 0
  store ptr %4852, ptr %5, align 8
  %4853 = extractvalue { ptr, i32 } %4851, 1
  store i32 %4853, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %452) #8
  br label %4854

4854:                                             ; preds = %4850, %4846
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %453) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %453) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %452) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %451) #8
  br label %4855

4855:                                             ; preds = %4854, %4842
  call void @llvm.lifetime.end.p0(i64 32, ptr %451) #8
  br label %4917

4856:                                             ; preds = %4821
  %4857 = landingpad { ptr, i32 }
          cleanup
  %4858 = extractvalue { ptr, i32 } %4857, 0
  store ptr %4858, ptr %5, align 8
  %4859 = extractvalue { ptr, i32 } %4857, 1
  store i32 %4859, ptr %6, align 4
  br label %4916

4860:                                             ; preds = %4823
  call void @llvm.lifetime.start.p0(i64 8, ptr %454) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %454)
          to label %4861 unwind label %4866

4861:                                             ; preds = %4860
  call void @llvm.lifetime.start.p0(i64 8, ptr %455) #8
  %4862 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %450)
          to label %4863 unwind label %4870

4863:                                             ; preds = %4861
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %455, i32 noundef 1, ptr noundef @.str.3, i32 noundef 119, ptr noundef %4862)
          to label %4864 unwind label %4870

4864:                                             ; preds = %4863
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %455, ptr noundef nonnull align 8 dereferenceable(8) %454)
          to label %4865 unwind label %4874

4865:                                             ; preds = %4864
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %455) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %455) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %454) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %454) #8
  br label %4880

4866:                                             ; preds = %4860
  %4867 = landingpad { ptr, i32 }
          cleanup
  %4868 = extractvalue { ptr, i32 } %4867, 0
  store ptr %4868, ptr %5, align 8
  %4869 = extractvalue { ptr, i32 } %4867, 1
  store i32 %4869, ptr %6, align 4
  br label %4879

4870:                                             ; preds = %4863, %4861
  %4871 = landingpad { ptr, i32 }
          cleanup
  %4872 = extractvalue { ptr, i32 } %4871, 0
  store ptr %4872, ptr %5, align 8
  %4873 = extractvalue { ptr, i32 } %4871, 1
  store i32 %4873, ptr %6, align 4
  br label %4878

4874:                                             ; preds = %4864
  %4875 = landingpad { ptr, i32 }
          cleanup
  %4876 = extractvalue { ptr, i32 } %4875, 0
  store ptr %4876, ptr %5, align 8
  %4877 = extractvalue { ptr, i32 } %4875, 1
  store i32 %4877, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %455) #8
  br label %4878

4878:                                             ; preds = %4874, %4870
  call void @llvm.lifetime.end.p0(i64 8, ptr %455) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %454) #8
  br label %4879

4879:                                             ; preds = %4878, %4866
  call void @llvm.lifetime.end.p0(i64 8, ptr %454) #8
  br label %4916

4880:                                             ; preds = %4865, %4824
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %450) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %450) #8
  %4881 = load ptr, ptr %449, align 8, !tbaa !5
  %4882 = icmp eq ptr %4881, null
  br i1 %4882, label %4884, label %4883

4883:                                             ; preds = %4880
  call void @_ZdaPv(ptr noundef %4881) #10
  br label %4884

4884:                                             ; preds = %4883, %4880
  call void @llvm.lifetime.end.p0(i64 8, ptr %449) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %447) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %446) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %446) #8
  br label %4885

4885:                                             ; preds = %4884
  br label %4886

4886:                                             ; preds = %4885
  br label %4887

4887:                                             ; preds = %4886
  call void @llvm.lifetime.start.p0(i64 392, ptr %456) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %456)
  %4888 = getelementptr inbounds i8, ptr %456, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4888, ptr noundef @.str.34, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %4889 unwind label %4921

4889:                                             ; preds = %4887
  call void @llvm.lifetime.start.p0(i64 4, ptr %457) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %458) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %458, ptr noundef nonnull align 8 dereferenceable(128) %456)
          to label %4890 unwind label %4925

4890:                                             ; preds = %4889
  %4891 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %458) #8
  %4892 = add i64 %4891, 3
  %4893 = trunc i64 %4892 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %458) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %458) #8
  store i32 %4893, ptr %457, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %459) #8
  %4894 = load i32, ptr %457, align 4, !tbaa !11
  %4895 = sext i32 %4894 to i64
  %4896 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4895) #9
          to label %4897 unwind label %4929

4897:                                             ; preds = %4890
  store ptr %4896, ptr %459, align 8, !tbaa !5
  %4898 = load ptr, ptr %459, align 8, !tbaa !5
  %4899 = load i32, ptr %457, align 4, !tbaa !11
  %4900 = sub nsw i32 %4899, 1
  %4901 = sext i32 %4900 to i64
  %4902 = getelementptr inbounds i8, ptr %4898, i64 %4901
  store i8 0, ptr %4902, align 1, !tbaa !13
  %4903 = load ptr, ptr %459, align 8, !tbaa !5
  %4904 = load i32, ptr %457, align 4, !tbaa !11
  %4905 = sub nsw i32 %4904, 2
  %4906 = sext i32 %4905 to i64
  %4907 = load double, ptr %3, align 8, !tbaa !9
  %4908 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %4903, i64 noundef %4906, ptr noundef @.str.34, double noundef %4907) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %460) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %461) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %461, ptr noundef nonnull align 8 dereferenceable(128) %456)
          to label %4909 unwind label %4933

4909:                                             ; preds = %4897
  call void @llvm.lifetime.start.p0(i64 32, ptr %462) #8
  %4910 = load ptr, ptr %459, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %463) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %463) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %462, ptr noundef %4910, ptr noundef nonnull align 1 dereferenceable(1) %463)
          to label %4911 unwind label %4937

4911:                                             ; preds = %4909
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %460, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %461, ptr noundef nonnull align 8 dereferenceable(32) %462)
          to label %4912 unwind label %4941

4912:                                             ; preds = %4911
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %462) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %463) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %463) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %462) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %461) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %461) #8
  %4913 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %460)
          to label %4914 unwind label %4947

4914:                                             ; preds = %4912
  br i1 %4913, label %4915, label %4951

4915:                                             ; preds = %4914
  br label %4971

4916:                                             ; preds = %4879, %4856
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %450) #8
  br label %4917

4917:                                             ; preds = %4916, %4855
  call void @llvm.lifetime.end.p0(i64 16, ptr %450) #8
  br label %4918

4918:                                             ; preds = %4917, %4838
  call void @llvm.lifetime.end.p0(i64 8, ptr %449) #8
  br label %4919

4919:                                             ; preds = %4918, %4834
  call void @llvm.lifetime.end.p0(i64 4, ptr %447) #8
  br label %4920

4920:                                             ; preds = %4919, %4830
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %446) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %446) #8
  br label %7986

4921:                                             ; preds = %4887
  %4922 = landingpad { ptr, i32 }
          cleanup
  %4923 = extractvalue { ptr, i32 } %4922, 0
  store ptr %4923, ptr %5, align 8
  %4924 = extractvalue { ptr, i32 } %4922, 1
  store i32 %4924, ptr %6, align 4
  br label %5011

4925:                                             ; preds = %4889
  %4926 = landingpad { ptr, i32 }
          cleanup
  %4927 = extractvalue { ptr, i32 } %4926, 0
  store ptr %4927, ptr %5, align 8
  %4928 = extractvalue { ptr, i32 } %4926, 1
  store i32 %4928, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %458) #8
  br label %5010

4929:                                             ; preds = %4890
  %4930 = landingpad { ptr, i32 }
          cleanup
  %4931 = extractvalue { ptr, i32 } %4930, 0
  store ptr %4931, ptr %5, align 8
  %4932 = extractvalue { ptr, i32 } %4930, 1
  store i32 %4932, ptr %6, align 4
  br label %5009

4933:                                             ; preds = %4897
  %4934 = landingpad { ptr, i32 }
          cleanup
  %4935 = extractvalue { ptr, i32 } %4934, 0
  store ptr %4935, ptr %5, align 8
  %4936 = extractvalue { ptr, i32 } %4934, 1
  store i32 %4936, ptr %6, align 4
  br label %4946

4937:                                             ; preds = %4909
  %4938 = landingpad { ptr, i32 }
          cleanup
  %4939 = extractvalue { ptr, i32 } %4938, 0
  store ptr %4939, ptr %5, align 8
  %4940 = extractvalue { ptr, i32 } %4938, 1
  store i32 %4940, ptr %6, align 4
  br label %4945

4941:                                             ; preds = %4911
  %4942 = landingpad { ptr, i32 }
          cleanup
  %4943 = extractvalue { ptr, i32 } %4942, 0
  store ptr %4943, ptr %5, align 8
  %4944 = extractvalue { ptr, i32 } %4942, 1
  store i32 %4944, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %462) #8
  br label %4945

4945:                                             ; preds = %4941, %4937
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %463) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %463) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %462) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %461) #8
  br label %4946

4946:                                             ; preds = %4945, %4933
  call void @llvm.lifetime.end.p0(i64 32, ptr %461) #8
  br label %5008

4947:                                             ; preds = %4912
  %4948 = landingpad { ptr, i32 }
          cleanup
  %4949 = extractvalue { ptr, i32 } %4948, 0
  store ptr %4949, ptr %5, align 8
  %4950 = extractvalue { ptr, i32 } %4948, 1
  store i32 %4950, ptr %6, align 4
  br label %5007

4951:                                             ; preds = %4914
  call void @llvm.lifetime.start.p0(i64 8, ptr %464) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %464)
          to label %4952 unwind label %4957

4952:                                             ; preds = %4951
  call void @llvm.lifetime.start.p0(i64 8, ptr %465) #8
  %4953 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %460)
          to label %4954 unwind label %4961

4954:                                             ; preds = %4952
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %465, i32 noundef 1, ptr noundef @.str.3, i32 noundef 120, ptr noundef %4953)
          to label %4955 unwind label %4961

4955:                                             ; preds = %4954
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %465, ptr noundef nonnull align 8 dereferenceable(8) %464)
          to label %4956 unwind label %4965

4956:                                             ; preds = %4955
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %465) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %465) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %464) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %464) #8
  br label %4971

4957:                                             ; preds = %4951
  %4958 = landingpad { ptr, i32 }
          cleanup
  %4959 = extractvalue { ptr, i32 } %4958, 0
  store ptr %4959, ptr %5, align 8
  %4960 = extractvalue { ptr, i32 } %4958, 1
  store i32 %4960, ptr %6, align 4
  br label %4970

4961:                                             ; preds = %4954, %4952
  %4962 = landingpad { ptr, i32 }
          cleanup
  %4963 = extractvalue { ptr, i32 } %4962, 0
  store ptr %4963, ptr %5, align 8
  %4964 = extractvalue { ptr, i32 } %4962, 1
  store i32 %4964, ptr %6, align 4
  br label %4969

4965:                                             ; preds = %4955
  %4966 = landingpad { ptr, i32 }
          cleanup
  %4967 = extractvalue { ptr, i32 } %4966, 0
  store ptr %4967, ptr %5, align 8
  %4968 = extractvalue { ptr, i32 } %4966, 1
  store i32 %4968, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %465) #8
  br label %4969

4969:                                             ; preds = %4965, %4961
  call void @llvm.lifetime.end.p0(i64 8, ptr %465) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %464) #8
  br label %4970

4970:                                             ; preds = %4969, %4957
  call void @llvm.lifetime.end.p0(i64 8, ptr %464) #8
  br label %5007

4971:                                             ; preds = %4956, %4915
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %460) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %460) #8
  %4972 = load ptr, ptr %459, align 8, !tbaa !5
  %4973 = icmp eq ptr %4972, null
  br i1 %4973, label %4975, label %4974

4974:                                             ; preds = %4971
  call void @_ZdaPv(ptr noundef %4972) #10
  br label %4975

4975:                                             ; preds = %4974, %4971
  call void @llvm.lifetime.end.p0(i64 8, ptr %459) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %457) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %456) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %456) #8
  br label %4976

4976:                                             ; preds = %4975
  br label %4977

4977:                                             ; preds = %4976
  br label %4978

4978:                                             ; preds = %4977
  call void @llvm.lifetime.start.p0(i64 392, ptr %466) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %466)
  %4979 = getelementptr inbounds i8, ptr %466, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4979, ptr noundef @.str.35, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %4980 unwind label %5012

4980:                                             ; preds = %4978
  call void @llvm.lifetime.start.p0(i64 4, ptr %467) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %468) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %468, ptr noundef nonnull align 8 dereferenceable(128) %466)
          to label %4981 unwind label %5016

4981:                                             ; preds = %4980
  %4982 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %468) #8
  %4983 = add i64 %4982, 3
  %4984 = trunc i64 %4983 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %468) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %468) #8
  store i32 %4984, ptr %467, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %469) #8
  %4985 = load i32, ptr %467, align 4, !tbaa !11
  %4986 = sext i32 %4985 to i64
  %4987 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4986) #9
          to label %4988 unwind label %5020

4988:                                             ; preds = %4981
  store ptr %4987, ptr %469, align 8, !tbaa !5
  %4989 = load ptr, ptr %469, align 8, !tbaa !5
  %4990 = load i32, ptr %467, align 4, !tbaa !11
  %4991 = sub nsw i32 %4990, 1
  %4992 = sext i32 %4991 to i64
  %4993 = getelementptr inbounds i8, ptr %4989, i64 %4992
  store i8 0, ptr %4993, align 1, !tbaa !13
  %4994 = load ptr, ptr %469, align 8, !tbaa !5
  %4995 = load i32, ptr %467, align 4, !tbaa !11
  %4996 = sub nsw i32 %4995, 2
  %4997 = sext i32 %4996 to i64
  %4998 = load double, ptr %3, align 8, !tbaa !9
  %4999 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %4994, i64 noundef %4997, ptr noundef @.str.35, double noundef %4998) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %470) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %471) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %471, ptr noundef nonnull align 8 dereferenceable(128) %466)
          to label %5000 unwind label %5024

5000:                                             ; preds = %4988
  call void @llvm.lifetime.start.p0(i64 32, ptr %472) #8
  %5001 = load ptr, ptr %469, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %473) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %473) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %472, ptr noundef %5001, ptr noundef nonnull align 1 dereferenceable(1) %473)
          to label %5002 unwind label %5028

5002:                                             ; preds = %5000
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %470, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %471, ptr noundef nonnull align 8 dereferenceable(32) %472)
          to label %5003 unwind label %5032

5003:                                             ; preds = %5002
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %472) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %473) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %473) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %472) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %471) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %471) #8
  %5004 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %470)
          to label %5005 unwind label %5038

5005:                                             ; preds = %5003
  br i1 %5004, label %5006, label %5042

5006:                                             ; preds = %5005
  br label %5062

5007:                                             ; preds = %4970, %4947
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %460) #8
  br label %5008

5008:                                             ; preds = %5007, %4946
  call void @llvm.lifetime.end.p0(i64 16, ptr %460) #8
  br label %5009

5009:                                             ; preds = %5008, %4929
  call void @llvm.lifetime.end.p0(i64 8, ptr %459) #8
  br label %5010

5010:                                             ; preds = %5009, %4925
  call void @llvm.lifetime.end.p0(i64 4, ptr %457) #8
  br label %5011

5011:                                             ; preds = %5010, %4921
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %456) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %456) #8
  br label %7986

5012:                                             ; preds = %4978
  %5013 = landingpad { ptr, i32 }
          cleanup
  %5014 = extractvalue { ptr, i32 } %5013, 0
  store ptr %5014, ptr %5, align 8
  %5015 = extractvalue { ptr, i32 } %5013, 1
  store i32 %5015, ptr %6, align 4
  br label %5102

5016:                                             ; preds = %4980
  %5017 = landingpad { ptr, i32 }
          cleanup
  %5018 = extractvalue { ptr, i32 } %5017, 0
  store ptr %5018, ptr %5, align 8
  %5019 = extractvalue { ptr, i32 } %5017, 1
  store i32 %5019, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %468) #8
  br label %5101

5020:                                             ; preds = %4981
  %5021 = landingpad { ptr, i32 }
          cleanup
  %5022 = extractvalue { ptr, i32 } %5021, 0
  store ptr %5022, ptr %5, align 8
  %5023 = extractvalue { ptr, i32 } %5021, 1
  store i32 %5023, ptr %6, align 4
  br label %5100

5024:                                             ; preds = %4988
  %5025 = landingpad { ptr, i32 }
          cleanup
  %5026 = extractvalue { ptr, i32 } %5025, 0
  store ptr %5026, ptr %5, align 8
  %5027 = extractvalue { ptr, i32 } %5025, 1
  store i32 %5027, ptr %6, align 4
  br label %5037

5028:                                             ; preds = %5000
  %5029 = landingpad { ptr, i32 }
          cleanup
  %5030 = extractvalue { ptr, i32 } %5029, 0
  store ptr %5030, ptr %5, align 8
  %5031 = extractvalue { ptr, i32 } %5029, 1
  store i32 %5031, ptr %6, align 4
  br label %5036

5032:                                             ; preds = %5002
  %5033 = landingpad { ptr, i32 }
          cleanup
  %5034 = extractvalue { ptr, i32 } %5033, 0
  store ptr %5034, ptr %5, align 8
  %5035 = extractvalue { ptr, i32 } %5033, 1
  store i32 %5035, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %472) #8
  br label %5036

5036:                                             ; preds = %5032, %5028
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %473) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %473) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %472) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %471) #8
  br label %5037

5037:                                             ; preds = %5036, %5024
  call void @llvm.lifetime.end.p0(i64 32, ptr %471) #8
  br label %5099

5038:                                             ; preds = %5003
  %5039 = landingpad { ptr, i32 }
          cleanup
  %5040 = extractvalue { ptr, i32 } %5039, 0
  store ptr %5040, ptr %5, align 8
  %5041 = extractvalue { ptr, i32 } %5039, 1
  store i32 %5041, ptr %6, align 4
  br label %5098

5042:                                             ; preds = %5005
  call void @llvm.lifetime.start.p0(i64 8, ptr %474) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %474)
          to label %5043 unwind label %5048

5043:                                             ; preds = %5042
  call void @llvm.lifetime.start.p0(i64 8, ptr %475) #8
  %5044 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %470)
          to label %5045 unwind label %5052

5045:                                             ; preds = %5043
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %475, i32 noundef 1, ptr noundef @.str.3, i32 noundef 121, ptr noundef %5044)
          to label %5046 unwind label %5052

5046:                                             ; preds = %5045
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %475, ptr noundef nonnull align 8 dereferenceable(8) %474)
          to label %5047 unwind label %5056

5047:                                             ; preds = %5046
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %475) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %475) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %474) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %474) #8
  br label %5062

5048:                                             ; preds = %5042
  %5049 = landingpad { ptr, i32 }
          cleanup
  %5050 = extractvalue { ptr, i32 } %5049, 0
  store ptr %5050, ptr %5, align 8
  %5051 = extractvalue { ptr, i32 } %5049, 1
  store i32 %5051, ptr %6, align 4
  br label %5061

5052:                                             ; preds = %5045, %5043
  %5053 = landingpad { ptr, i32 }
          cleanup
  %5054 = extractvalue { ptr, i32 } %5053, 0
  store ptr %5054, ptr %5, align 8
  %5055 = extractvalue { ptr, i32 } %5053, 1
  store i32 %5055, ptr %6, align 4
  br label %5060

5056:                                             ; preds = %5046
  %5057 = landingpad { ptr, i32 }
          cleanup
  %5058 = extractvalue { ptr, i32 } %5057, 0
  store ptr %5058, ptr %5, align 8
  %5059 = extractvalue { ptr, i32 } %5057, 1
  store i32 %5059, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %475) #8
  br label %5060

5060:                                             ; preds = %5056, %5052
  call void @llvm.lifetime.end.p0(i64 8, ptr %475) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %474) #8
  br label %5061

5061:                                             ; preds = %5060, %5048
  call void @llvm.lifetime.end.p0(i64 8, ptr %474) #8
  br label %5098

5062:                                             ; preds = %5047, %5006
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %470) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %470) #8
  %5063 = load ptr, ptr %469, align 8, !tbaa !5
  %5064 = icmp eq ptr %5063, null
  br i1 %5064, label %5066, label %5065

5065:                                             ; preds = %5062
  call void @_ZdaPv(ptr noundef %5063) #10
  br label %5066

5066:                                             ; preds = %5065, %5062
  call void @llvm.lifetime.end.p0(i64 8, ptr %469) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %467) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %466) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %466) #8
  br label %5067

5067:                                             ; preds = %5066
  br label %5068

5068:                                             ; preds = %5067
  br label %5069

5069:                                             ; preds = %5068
  call void @llvm.lifetime.start.p0(i64 392, ptr %476) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %476)
  %5070 = getelementptr inbounds i8, ptr %476, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %5070, ptr noundef @.str.36, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %5071 unwind label %5103

5071:                                             ; preds = %5069
  call void @llvm.lifetime.start.p0(i64 4, ptr %477) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %478) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %478, ptr noundef nonnull align 8 dereferenceable(128) %476)
          to label %5072 unwind label %5107

5072:                                             ; preds = %5071
  %5073 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %478) #8
  %5074 = add i64 %5073, 3
  %5075 = trunc i64 %5074 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %478) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %478) #8
  store i32 %5075, ptr %477, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %479) #8
  %5076 = load i32, ptr %477, align 4, !tbaa !11
  %5077 = sext i32 %5076 to i64
  %5078 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %5077) #9
          to label %5079 unwind label %5111

5079:                                             ; preds = %5072
  store ptr %5078, ptr %479, align 8, !tbaa !5
  %5080 = load ptr, ptr %479, align 8, !tbaa !5
  %5081 = load i32, ptr %477, align 4, !tbaa !11
  %5082 = sub nsw i32 %5081, 1
  %5083 = sext i32 %5082 to i64
  %5084 = getelementptr inbounds i8, ptr %5080, i64 %5083
  store i8 0, ptr %5084, align 1, !tbaa !13
  %5085 = load ptr, ptr %479, align 8, !tbaa !5
  %5086 = load i32, ptr %477, align 4, !tbaa !11
  %5087 = sub nsw i32 %5086, 2
  %5088 = sext i32 %5087 to i64
  %5089 = load double, ptr %3, align 8, !tbaa !9
  %5090 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %5085, i64 noundef %5088, ptr noundef @.str.36, double noundef %5089) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %480) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %481) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %481, ptr noundef nonnull align 8 dereferenceable(128) %476)
          to label %5091 unwind label %5115

5091:                                             ; preds = %5079
  call void @llvm.lifetime.start.p0(i64 32, ptr %482) #8
  %5092 = load ptr, ptr %479, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %483) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %483) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %482, ptr noundef %5092, ptr noundef nonnull align 1 dereferenceable(1) %483)
          to label %5093 unwind label %5119

5093:                                             ; preds = %5091
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %480, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %481, ptr noundef nonnull align 8 dereferenceable(32) %482)
          to label %5094 unwind label %5123

5094:                                             ; preds = %5093
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %482) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %483) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %483) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %482) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %481) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %481) #8
  %5095 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %480)
          to label %5096 unwind label %5129

5096:                                             ; preds = %5094
  br i1 %5095, label %5097, label %5133

5097:                                             ; preds = %5096
  br label %5153

5098:                                             ; preds = %5061, %5038
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %470) #8
  br label %5099

5099:                                             ; preds = %5098, %5037
  call void @llvm.lifetime.end.p0(i64 16, ptr %470) #8
  br label %5100

5100:                                             ; preds = %5099, %5020
  call void @llvm.lifetime.end.p0(i64 8, ptr %469) #8
  br label %5101

5101:                                             ; preds = %5100, %5016
  call void @llvm.lifetime.end.p0(i64 4, ptr %467) #8
  br label %5102

5102:                                             ; preds = %5101, %5012
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %466) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %466) #8
  br label %7986

5103:                                             ; preds = %5069
  %5104 = landingpad { ptr, i32 }
          cleanup
  %5105 = extractvalue { ptr, i32 } %5104, 0
  store ptr %5105, ptr %5, align 8
  %5106 = extractvalue { ptr, i32 } %5104, 1
  store i32 %5106, ptr %6, align 4
  br label %5193

5107:                                             ; preds = %5071
  %5108 = landingpad { ptr, i32 }
          cleanup
  %5109 = extractvalue { ptr, i32 } %5108, 0
  store ptr %5109, ptr %5, align 8
  %5110 = extractvalue { ptr, i32 } %5108, 1
  store i32 %5110, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %478) #8
  br label %5192

5111:                                             ; preds = %5072
  %5112 = landingpad { ptr, i32 }
          cleanup
  %5113 = extractvalue { ptr, i32 } %5112, 0
  store ptr %5113, ptr %5, align 8
  %5114 = extractvalue { ptr, i32 } %5112, 1
  store i32 %5114, ptr %6, align 4
  br label %5191

5115:                                             ; preds = %5079
  %5116 = landingpad { ptr, i32 }
          cleanup
  %5117 = extractvalue { ptr, i32 } %5116, 0
  store ptr %5117, ptr %5, align 8
  %5118 = extractvalue { ptr, i32 } %5116, 1
  store i32 %5118, ptr %6, align 4
  br label %5128

5119:                                             ; preds = %5091
  %5120 = landingpad { ptr, i32 }
          cleanup
  %5121 = extractvalue { ptr, i32 } %5120, 0
  store ptr %5121, ptr %5, align 8
  %5122 = extractvalue { ptr, i32 } %5120, 1
  store i32 %5122, ptr %6, align 4
  br label %5127

5123:                                             ; preds = %5093
  %5124 = landingpad { ptr, i32 }
          cleanup
  %5125 = extractvalue { ptr, i32 } %5124, 0
  store ptr %5125, ptr %5, align 8
  %5126 = extractvalue { ptr, i32 } %5124, 1
  store i32 %5126, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %482) #8
  br label %5127

5127:                                             ; preds = %5123, %5119
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %483) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %483) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %482) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %481) #8
  br label %5128

5128:                                             ; preds = %5127, %5115
  call void @llvm.lifetime.end.p0(i64 32, ptr %481) #8
  br label %5190

5129:                                             ; preds = %5094
  %5130 = landingpad { ptr, i32 }
          cleanup
  %5131 = extractvalue { ptr, i32 } %5130, 0
  store ptr %5131, ptr %5, align 8
  %5132 = extractvalue { ptr, i32 } %5130, 1
  store i32 %5132, ptr %6, align 4
  br label %5189

5133:                                             ; preds = %5096
  call void @llvm.lifetime.start.p0(i64 8, ptr %484) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %484)
          to label %5134 unwind label %5139

5134:                                             ; preds = %5133
  call void @llvm.lifetime.start.p0(i64 8, ptr %485) #8
  %5135 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %480)
          to label %5136 unwind label %5143

5136:                                             ; preds = %5134
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %485, i32 noundef 1, ptr noundef @.str.3, i32 noundef 122, ptr noundef %5135)
          to label %5137 unwind label %5143

5137:                                             ; preds = %5136
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %485, ptr noundef nonnull align 8 dereferenceable(8) %484)
          to label %5138 unwind label %5147

5138:                                             ; preds = %5137
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %485) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %485) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %484) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %484) #8
  br label %5153

5139:                                             ; preds = %5133
  %5140 = landingpad { ptr, i32 }
          cleanup
  %5141 = extractvalue { ptr, i32 } %5140, 0
  store ptr %5141, ptr %5, align 8
  %5142 = extractvalue { ptr, i32 } %5140, 1
  store i32 %5142, ptr %6, align 4
  br label %5152

5143:                                             ; preds = %5136, %5134
  %5144 = landingpad { ptr, i32 }
          cleanup
  %5145 = extractvalue { ptr, i32 } %5144, 0
  store ptr %5145, ptr %5, align 8
  %5146 = extractvalue { ptr, i32 } %5144, 1
  store i32 %5146, ptr %6, align 4
  br label %5151

5147:                                             ; preds = %5137
  %5148 = landingpad { ptr, i32 }
          cleanup
  %5149 = extractvalue { ptr, i32 } %5148, 0
  store ptr %5149, ptr %5, align 8
  %5150 = extractvalue { ptr, i32 } %5148, 1
  store i32 %5150, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %485) #8
  br label %5151

5151:                                             ; preds = %5147, %5143
  call void @llvm.lifetime.end.p0(i64 8, ptr %485) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %484) #8
  br label %5152

5152:                                             ; preds = %5151, %5139
  call void @llvm.lifetime.end.p0(i64 8, ptr %484) #8
  br label %5189

5153:                                             ; preds = %5138, %5097
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %480) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %480) #8
  %5154 = load ptr, ptr %479, align 8, !tbaa !5
  %5155 = icmp eq ptr %5154, null
  br i1 %5155, label %5157, label %5156

5156:                                             ; preds = %5153
  call void @_ZdaPv(ptr noundef %5154) #10
  br label %5157

5157:                                             ; preds = %5156, %5153
  call void @llvm.lifetime.end.p0(i64 8, ptr %479) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %477) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %476) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %476) #8
  br label %5158

5158:                                             ; preds = %5157
  br label %5159

5159:                                             ; preds = %5158
  br label %5160

5160:                                             ; preds = %5159
  call void @llvm.lifetime.start.p0(i64 392, ptr %486) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %486)
  %5161 = getelementptr inbounds i8, ptr %486, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %5161, ptr noundef @.str.37, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %5162 unwind label %5194

5162:                                             ; preds = %5160
  call void @llvm.lifetime.start.p0(i64 4, ptr %487) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %488) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %488, ptr noundef nonnull align 8 dereferenceable(128) %486)
          to label %5163 unwind label %5198

5163:                                             ; preds = %5162
  %5164 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %488) #8
  %5165 = add i64 %5164, 3
  %5166 = trunc i64 %5165 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %488) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %488) #8
  store i32 %5166, ptr %487, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %489) #8
  %5167 = load i32, ptr %487, align 4, !tbaa !11
  %5168 = sext i32 %5167 to i64
  %5169 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %5168) #9
          to label %5170 unwind label %5202

5170:                                             ; preds = %5163
  store ptr %5169, ptr %489, align 8, !tbaa !5
  %5171 = load ptr, ptr %489, align 8, !tbaa !5
  %5172 = load i32, ptr %487, align 4, !tbaa !11
  %5173 = sub nsw i32 %5172, 1
  %5174 = sext i32 %5173 to i64
  %5175 = getelementptr inbounds i8, ptr %5171, i64 %5174
  store i8 0, ptr %5175, align 1, !tbaa !13
  %5176 = load ptr, ptr %489, align 8, !tbaa !5
  %5177 = load i32, ptr %487, align 4, !tbaa !11
  %5178 = sub nsw i32 %5177, 2
  %5179 = sext i32 %5178 to i64
  %5180 = load double, ptr %3, align 8, !tbaa !9
  %5181 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %5176, i64 noundef %5179, ptr noundef @.str.37, double noundef %5180) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %490) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %491) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %491, ptr noundef nonnull align 8 dereferenceable(128) %486)
          to label %5182 unwind label %5206

5182:                                             ; preds = %5170
  call void @llvm.lifetime.start.p0(i64 32, ptr %492) #8
  %5183 = load ptr, ptr %489, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %493) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %493) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %492, ptr noundef %5183, ptr noundef nonnull align 1 dereferenceable(1) %493)
          to label %5184 unwind label %5210

5184:                                             ; preds = %5182
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %490, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %491, ptr noundef nonnull align 8 dereferenceable(32) %492)
          to label %5185 unwind label %5214

5185:                                             ; preds = %5184
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %492) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %493) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %493) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %492) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %491) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %491) #8
  %5186 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %490)
          to label %5187 unwind label %5220

5187:                                             ; preds = %5185
  br i1 %5186, label %5188, label %5224

5188:                                             ; preds = %5187
  br label %5244

5189:                                             ; preds = %5152, %5129
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %480) #8
  br label %5190

5190:                                             ; preds = %5189, %5128
  call void @llvm.lifetime.end.p0(i64 16, ptr %480) #8
  br label %5191

5191:                                             ; preds = %5190, %5111
  call void @llvm.lifetime.end.p0(i64 8, ptr %479) #8
  br label %5192

5192:                                             ; preds = %5191, %5107
  call void @llvm.lifetime.end.p0(i64 4, ptr %477) #8
  br label %5193

5193:                                             ; preds = %5192, %5103
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %476) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %476) #8
  br label %7986

5194:                                             ; preds = %5160
  %5195 = landingpad { ptr, i32 }
          cleanup
  %5196 = extractvalue { ptr, i32 } %5195, 0
  store ptr %5196, ptr %5, align 8
  %5197 = extractvalue { ptr, i32 } %5195, 1
  store i32 %5197, ptr %6, align 4
  br label %5284

5198:                                             ; preds = %5162
  %5199 = landingpad { ptr, i32 }
          cleanup
  %5200 = extractvalue { ptr, i32 } %5199, 0
  store ptr %5200, ptr %5, align 8
  %5201 = extractvalue { ptr, i32 } %5199, 1
  store i32 %5201, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %488) #8
  br label %5283

5202:                                             ; preds = %5163
  %5203 = landingpad { ptr, i32 }
          cleanup
  %5204 = extractvalue { ptr, i32 } %5203, 0
  store ptr %5204, ptr %5, align 8
  %5205 = extractvalue { ptr, i32 } %5203, 1
  store i32 %5205, ptr %6, align 4
  br label %5282

5206:                                             ; preds = %5170
  %5207 = landingpad { ptr, i32 }
          cleanup
  %5208 = extractvalue { ptr, i32 } %5207, 0
  store ptr %5208, ptr %5, align 8
  %5209 = extractvalue { ptr, i32 } %5207, 1
  store i32 %5209, ptr %6, align 4
  br label %5219

5210:                                             ; preds = %5182
  %5211 = landingpad { ptr, i32 }
          cleanup
  %5212 = extractvalue { ptr, i32 } %5211, 0
  store ptr %5212, ptr %5, align 8
  %5213 = extractvalue { ptr, i32 } %5211, 1
  store i32 %5213, ptr %6, align 4
  br label %5218

5214:                                             ; preds = %5184
  %5215 = landingpad { ptr, i32 }
          cleanup
  %5216 = extractvalue { ptr, i32 } %5215, 0
  store ptr %5216, ptr %5, align 8
  %5217 = extractvalue { ptr, i32 } %5215, 1
  store i32 %5217, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %492) #8
  br label %5218

5218:                                             ; preds = %5214, %5210
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %493) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %493) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %492) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %491) #8
  br label %5219

5219:                                             ; preds = %5218, %5206
  call void @llvm.lifetime.end.p0(i64 32, ptr %491) #8
  br label %5281

5220:                                             ; preds = %5185
  %5221 = landingpad { ptr, i32 }
          cleanup
  %5222 = extractvalue { ptr, i32 } %5221, 0
  store ptr %5222, ptr %5, align 8
  %5223 = extractvalue { ptr, i32 } %5221, 1
  store i32 %5223, ptr %6, align 4
  br label %5280

5224:                                             ; preds = %5187
  call void @llvm.lifetime.start.p0(i64 8, ptr %494) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %494)
          to label %5225 unwind label %5230

5225:                                             ; preds = %5224
  call void @llvm.lifetime.start.p0(i64 8, ptr %495) #8
  %5226 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %490)
          to label %5227 unwind label %5234

5227:                                             ; preds = %5225
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %495, i32 noundef 1, ptr noundef @.str.3, i32 noundef 123, ptr noundef %5226)
          to label %5228 unwind label %5234

5228:                                             ; preds = %5227
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %495, ptr noundef nonnull align 8 dereferenceable(8) %494)
          to label %5229 unwind label %5238

5229:                                             ; preds = %5228
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %495) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %495) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %494) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %494) #8
  br label %5244

5230:                                             ; preds = %5224
  %5231 = landingpad { ptr, i32 }
          cleanup
  %5232 = extractvalue { ptr, i32 } %5231, 0
  store ptr %5232, ptr %5, align 8
  %5233 = extractvalue { ptr, i32 } %5231, 1
  store i32 %5233, ptr %6, align 4
  br label %5243

5234:                                             ; preds = %5227, %5225
  %5235 = landingpad { ptr, i32 }
          cleanup
  %5236 = extractvalue { ptr, i32 } %5235, 0
  store ptr %5236, ptr %5, align 8
  %5237 = extractvalue { ptr, i32 } %5235, 1
  store i32 %5237, ptr %6, align 4
  br label %5242

5238:                                             ; preds = %5228
  %5239 = landingpad { ptr, i32 }
          cleanup
  %5240 = extractvalue { ptr, i32 } %5239, 0
  store ptr %5240, ptr %5, align 8
  %5241 = extractvalue { ptr, i32 } %5239, 1
  store i32 %5241, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %495) #8
  br label %5242

5242:                                             ; preds = %5238, %5234
  call void @llvm.lifetime.end.p0(i64 8, ptr %495) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %494) #8
  br label %5243

5243:                                             ; preds = %5242, %5230
  call void @llvm.lifetime.end.p0(i64 8, ptr %494) #8
  br label %5280

5244:                                             ; preds = %5229, %5188
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %490) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %490) #8
  %5245 = load ptr, ptr %489, align 8, !tbaa !5
  %5246 = icmp eq ptr %5245, null
  br i1 %5246, label %5248, label %5247

5247:                                             ; preds = %5244
  call void @_ZdaPv(ptr noundef %5245) #10
  br label %5248

5248:                                             ; preds = %5247, %5244
  call void @llvm.lifetime.end.p0(i64 8, ptr %489) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %487) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %486) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %486) #8
  br label %5249

5249:                                             ; preds = %5248
  br label %5250

5250:                                             ; preds = %5249
  br label %5251

5251:                                             ; preds = %5250
  call void @llvm.lifetime.start.p0(i64 392, ptr %496) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %496)
  %5252 = getelementptr inbounds i8, ptr %496, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %5252, ptr noundef @.str.38, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %5253 unwind label %5285

5253:                                             ; preds = %5251
  call void @llvm.lifetime.start.p0(i64 4, ptr %497) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %498) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %498, ptr noundef nonnull align 8 dereferenceable(128) %496)
          to label %5254 unwind label %5289

5254:                                             ; preds = %5253
  %5255 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %498) #8
  %5256 = add i64 %5255, 3
  %5257 = trunc i64 %5256 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %498) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %498) #8
  store i32 %5257, ptr %497, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %499) #8
  %5258 = load i32, ptr %497, align 4, !tbaa !11
  %5259 = sext i32 %5258 to i64
  %5260 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %5259) #9
          to label %5261 unwind label %5293

5261:                                             ; preds = %5254
  store ptr %5260, ptr %499, align 8, !tbaa !5
  %5262 = load ptr, ptr %499, align 8, !tbaa !5
  %5263 = load i32, ptr %497, align 4, !tbaa !11
  %5264 = sub nsw i32 %5263, 1
  %5265 = sext i32 %5264 to i64
  %5266 = getelementptr inbounds i8, ptr %5262, i64 %5265
  store i8 0, ptr %5266, align 1, !tbaa !13
  %5267 = load ptr, ptr %499, align 8, !tbaa !5
  %5268 = load i32, ptr %497, align 4, !tbaa !11
  %5269 = sub nsw i32 %5268, 2
  %5270 = sext i32 %5269 to i64
  %5271 = load double, ptr %3, align 8, !tbaa !9
  %5272 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %5267, i64 noundef %5270, ptr noundef @.str.38, double noundef %5271) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %500) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %501) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %501, ptr noundef nonnull align 8 dereferenceable(128) %496)
          to label %5273 unwind label %5297

5273:                                             ; preds = %5261
  call void @llvm.lifetime.start.p0(i64 32, ptr %502) #8
  %5274 = load ptr, ptr %499, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %503) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %503) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %502, ptr noundef %5274, ptr noundef nonnull align 1 dereferenceable(1) %503)
          to label %5275 unwind label %5301

5275:                                             ; preds = %5273
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %500, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %501, ptr noundef nonnull align 8 dereferenceable(32) %502)
          to label %5276 unwind label %5305

5276:                                             ; preds = %5275
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %502) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %503) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %503) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %502) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %501) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %501) #8
  %5277 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %500)
          to label %5278 unwind label %5311

5278:                                             ; preds = %5276
  br i1 %5277, label %5279, label %5315

5279:                                             ; preds = %5278
  br label %5335

5280:                                             ; preds = %5243, %5220
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %490) #8
  br label %5281

5281:                                             ; preds = %5280, %5219
  call void @llvm.lifetime.end.p0(i64 16, ptr %490) #8
  br label %5282

5282:                                             ; preds = %5281, %5202
  call void @llvm.lifetime.end.p0(i64 8, ptr %489) #8
  br label %5283

5283:                                             ; preds = %5282, %5198
  call void @llvm.lifetime.end.p0(i64 4, ptr %487) #8
  br label %5284

5284:                                             ; preds = %5283, %5194
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %486) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %486) #8
  br label %7986

5285:                                             ; preds = %5251
  %5286 = landingpad { ptr, i32 }
          cleanup
  %5287 = extractvalue { ptr, i32 } %5286, 0
  store ptr %5287, ptr %5, align 8
  %5288 = extractvalue { ptr, i32 } %5286, 1
  store i32 %5288, ptr %6, align 4
  br label %5375

5289:                                             ; preds = %5253
  %5290 = landingpad { ptr, i32 }
          cleanup
  %5291 = extractvalue { ptr, i32 } %5290, 0
  store ptr %5291, ptr %5, align 8
  %5292 = extractvalue { ptr, i32 } %5290, 1
  store i32 %5292, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %498) #8
  br label %5374

5293:                                             ; preds = %5254
  %5294 = landingpad { ptr, i32 }
          cleanup
  %5295 = extractvalue { ptr, i32 } %5294, 0
  store ptr %5295, ptr %5, align 8
  %5296 = extractvalue { ptr, i32 } %5294, 1
  store i32 %5296, ptr %6, align 4
  br label %5373

5297:                                             ; preds = %5261
  %5298 = landingpad { ptr, i32 }
          cleanup
  %5299 = extractvalue { ptr, i32 } %5298, 0
  store ptr %5299, ptr %5, align 8
  %5300 = extractvalue { ptr, i32 } %5298, 1
  store i32 %5300, ptr %6, align 4
  br label %5310

5301:                                             ; preds = %5273
  %5302 = landingpad { ptr, i32 }
          cleanup
  %5303 = extractvalue { ptr, i32 } %5302, 0
  store ptr %5303, ptr %5, align 8
  %5304 = extractvalue { ptr, i32 } %5302, 1
  store i32 %5304, ptr %6, align 4
  br label %5309

5305:                                             ; preds = %5275
  %5306 = landingpad { ptr, i32 }
          cleanup
  %5307 = extractvalue { ptr, i32 } %5306, 0
  store ptr %5307, ptr %5, align 8
  %5308 = extractvalue { ptr, i32 } %5306, 1
  store i32 %5308, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %502) #8
  br label %5309

5309:                                             ; preds = %5305, %5301
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %503) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %503) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %502) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %501) #8
  br label %5310

5310:                                             ; preds = %5309, %5297
  call void @llvm.lifetime.end.p0(i64 32, ptr %501) #8
  br label %5372

5311:                                             ; preds = %5276
  %5312 = landingpad { ptr, i32 }
          cleanup
  %5313 = extractvalue { ptr, i32 } %5312, 0
  store ptr %5313, ptr %5, align 8
  %5314 = extractvalue { ptr, i32 } %5312, 1
  store i32 %5314, ptr %6, align 4
  br label %5371

5315:                                             ; preds = %5278
  call void @llvm.lifetime.start.p0(i64 8, ptr %504) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %504)
          to label %5316 unwind label %5321

5316:                                             ; preds = %5315
  call void @llvm.lifetime.start.p0(i64 8, ptr %505) #8
  %5317 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %500)
          to label %5318 unwind label %5325

5318:                                             ; preds = %5316
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %505, i32 noundef 1, ptr noundef @.str.3, i32 noundef 124, ptr noundef %5317)
          to label %5319 unwind label %5325

5319:                                             ; preds = %5318
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %505, ptr noundef nonnull align 8 dereferenceable(8) %504)
          to label %5320 unwind label %5329

5320:                                             ; preds = %5319
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %505) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %505) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %504) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %504) #8
  br label %5335

5321:                                             ; preds = %5315
  %5322 = landingpad { ptr, i32 }
          cleanup
  %5323 = extractvalue { ptr, i32 } %5322, 0
  store ptr %5323, ptr %5, align 8
  %5324 = extractvalue { ptr, i32 } %5322, 1
  store i32 %5324, ptr %6, align 4
  br label %5334

5325:                                             ; preds = %5318, %5316
  %5326 = landingpad { ptr, i32 }
          cleanup
  %5327 = extractvalue { ptr, i32 } %5326, 0
  store ptr %5327, ptr %5, align 8
  %5328 = extractvalue { ptr, i32 } %5326, 1
  store i32 %5328, ptr %6, align 4
  br label %5333

5329:                                             ; preds = %5319
  %5330 = landingpad { ptr, i32 }
          cleanup
  %5331 = extractvalue { ptr, i32 } %5330, 0
  store ptr %5331, ptr %5, align 8
  %5332 = extractvalue { ptr, i32 } %5330, 1
  store i32 %5332, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %505) #8
  br label %5333

5333:                                             ; preds = %5329, %5325
  call void @llvm.lifetime.end.p0(i64 8, ptr %505) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %504) #8
  br label %5334

5334:                                             ; preds = %5333, %5321
  call void @llvm.lifetime.end.p0(i64 8, ptr %504) #8
  br label %5371

5335:                                             ; preds = %5320, %5279
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %500) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %500) #8
  %5336 = load ptr, ptr %499, align 8, !tbaa !5
  %5337 = icmp eq ptr %5336, null
  br i1 %5337, label %5339, label %5338

5338:                                             ; preds = %5335
  call void @_ZdaPv(ptr noundef %5336) #10
  br label %5339

5339:                                             ; preds = %5338, %5335
  call void @llvm.lifetime.end.p0(i64 8, ptr %499) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %497) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %496) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %496) #8
  br label %5340

5340:                                             ; preds = %5339
  br label %5341

5341:                                             ; preds = %5340
  br label %5342

5342:                                             ; preds = %5341
  call void @llvm.lifetime.start.p0(i64 392, ptr %506) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %506)
  %5343 = getelementptr inbounds i8, ptr %506, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %5343, ptr noundef @.str.39, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %5344 unwind label %5376

5344:                                             ; preds = %5342
  call void @llvm.lifetime.start.p0(i64 4, ptr %507) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %508) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %508, ptr noundef nonnull align 8 dereferenceable(128) %506)
          to label %5345 unwind label %5380

5345:                                             ; preds = %5344
  %5346 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %508) #8
  %5347 = add i64 %5346, 3
  %5348 = trunc i64 %5347 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %508) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %508) #8
  store i32 %5348, ptr %507, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %509) #8
  %5349 = load i32, ptr %507, align 4, !tbaa !11
  %5350 = sext i32 %5349 to i64
  %5351 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %5350) #9
          to label %5352 unwind label %5384

5352:                                             ; preds = %5345
  store ptr %5351, ptr %509, align 8, !tbaa !5
  %5353 = load ptr, ptr %509, align 8, !tbaa !5
  %5354 = load i32, ptr %507, align 4, !tbaa !11
  %5355 = sub nsw i32 %5354, 1
  %5356 = sext i32 %5355 to i64
  %5357 = getelementptr inbounds i8, ptr %5353, i64 %5356
  store i8 0, ptr %5357, align 1, !tbaa !13
  %5358 = load ptr, ptr %509, align 8, !tbaa !5
  %5359 = load i32, ptr %507, align 4, !tbaa !11
  %5360 = sub nsw i32 %5359, 2
  %5361 = sext i32 %5360 to i64
  %5362 = load double, ptr %3, align 8, !tbaa !9
  %5363 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %5358, i64 noundef %5361, ptr noundef @.str.39, double noundef %5362) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %510) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %511) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %511, ptr noundef nonnull align 8 dereferenceable(128) %506)
          to label %5364 unwind label %5388

5364:                                             ; preds = %5352
  call void @llvm.lifetime.start.p0(i64 32, ptr %512) #8
  %5365 = load ptr, ptr %509, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %513) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %513) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %512, ptr noundef %5365, ptr noundef nonnull align 1 dereferenceable(1) %513)
          to label %5366 unwind label %5392

5366:                                             ; preds = %5364
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %510, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %511, ptr noundef nonnull align 8 dereferenceable(32) %512)
          to label %5367 unwind label %5396

5367:                                             ; preds = %5366
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %512) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %513) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %513) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %512) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %511) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %511) #8
  %5368 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %510)
          to label %5369 unwind label %5402

5369:                                             ; preds = %5367
  br i1 %5368, label %5370, label %5406

5370:                                             ; preds = %5369
  br label %5426

5371:                                             ; preds = %5334, %5311
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %500) #8
  br label %5372

5372:                                             ; preds = %5371, %5310
  call void @llvm.lifetime.end.p0(i64 16, ptr %500) #8
  br label %5373

5373:                                             ; preds = %5372, %5293
  call void @llvm.lifetime.end.p0(i64 8, ptr %499) #8
  br label %5374

5374:                                             ; preds = %5373, %5289
  call void @llvm.lifetime.end.p0(i64 4, ptr %497) #8
  br label %5375

5375:                                             ; preds = %5374, %5285
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %496) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %496) #8
  br label %7986

5376:                                             ; preds = %5342
  %5377 = landingpad { ptr, i32 }
          cleanup
  %5378 = extractvalue { ptr, i32 } %5377, 0
  store ptr %5378, ptr %5, align 8
  %5379 = extractvalue { ptr, i32 } %5377, 1
  store i32 %5379, ptr %6, align 4
  br label %5466

5380:                                             ; preds = %5344
  %5381 = landingpad { ptr, i32 }
          cleanup
  %5382 = extractvalue { ptr, i32 } %5381, 0
  store ptr %5382, ptr %5, align 8
  %5383 = extractvalue { ptr, i32 } %5381, 1
  store i32 %5383, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %508) #8
  br label %5465

5384:                                             ; preds = %5345
  %5385 = landingpad { ptr, i32 }
          cleanup
  %5386 = extractvalue { ptr, i32 } %5385, 0
  store ptr %5386, ptr %5, align 8
  %5387 = extractvalue { ptr, i32 } %5385, 1
  store i32 %5387, ptr %6, align 4
  br label %5464

5388:                                             ; preds = %5352
  %5389 = landingpad { ptr, i32 }
          cleanup
  %5390 = extractvalue { ptr, i32 } %5389, 0
  store ptr %5390, ptr %5, align 8
  %5391 = extractvalue { ptr, i32 } %5389, 1
  store i32 %5391, ptr %6, align 4
  br label %5401

5392:                                             ; preds = %5364
  %5393 = landingpad { ptr, i32 }
          cleanup
  %5394 = extractvalue { ptr, i32 } %5393, 0
  store ptr %5394, ptr %5, align 8
  %5395 = extractvalue { ptr, i32 } %5393, 1
  store i32 %5395, ptr %6, align 4
  br label %5400

5396:                                             ; preds = %5366
  %5397 = landingpad { ptr, i32 }
          cleanup
  %5398 = extractvalue { ptr, i32 } %5397, 0
  store ptr %5398, ptr %5, align 8
  %5399 = extractvalue { ptr, i32 } %5397, 1
  store i32 %5399, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %512) #8
  br label %5400

5400:                                             ; preds = %5396, %5392
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %513) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %513) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %512) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %511) #8
  br label %5401

5401:                                             ; preds = %5400, %5388
  call void @llvm.lifetime.end.p0(i64 32, ptr %511) #8
  br label %5463

5402:                                             ; preds = %5367
  %5403 = landingpad { ptr, i32 }
          cleanup
  %5404 = extractvalue { ptr, i32 } %5403, 0
  store ptr %5404, ptr %5, align 8
  %5405 = extractvalue { ptr, i32 } %5403, 1
  store i32 %5405, ptr %6, align 4
  br label %5462

5406:                                             ; preds = %5369
  call void @llvm.lifetime.start.p0(i64 8, ptr %514) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %514)
          to label %5407 unwind label %5412

5407:                                             ; preds = %5406
  call void @llvm.lifetime.start.p0(i64 8, ptr %515) #8
  %5408 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %510)
          to label %5409 unwind label %5416

5409:                                             ; preds = %5407
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %515, i32 noundef 1, ptr noundef @.str.3, i32 noundef 125, ptr noundef %5408)
          to label %5410 unwind label %5416

5410:                                             ; preds = %5409
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %515, ptr noundef nonnull align 8 dereferenceable(8) %514)
          to label %5411 unwind label %5420

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

5412:                                             ; preds = %5406
  %5413 = landingpad { ptr, i32 }
          cleanup
  %5414 = extractvalue { ptr, i32 } %5413, 0
  store ptr %5414, ptr %5, align 8
  %5415 = extractvalue { ptr, i32 } %5413, 1
  store i32 %5415, ptr %6, align 4
  br label %5425

5416:                                             ; preds = %5409, %5407
  %5417 = landingpad { ptr, i32 }
          cleanup
  %5418 = extractvalue { ptr, i32 } %5417, 0
  store ptr %5418, ptr %5, align 8
  %5419 = extractvalue { ptr, i32 } %5417, 1
  store i32 %5419, ptr %6, align 4
  br label %5424

5420:                                             ; preds = %5410
  %5421 = landingpad { ptr, i32 }
          cleanup
  %5422 = extractvalue { ptr, i32 } %5421, 0
  store ptr %5422, ptr %5, align 8
  %5423 = extractvalue { ptr, i32 } %5421, 1
  store i32 %5423, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %515) #8
  br label %5424

5424:                                             ; preds = %5420, %5416
  call void @llvm.lifetime.end.p0(i64 8, ptr %515) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %514) #8
  br label %5425

5425:                                             ; preds = %5424, %5412
  call void @llvm.lifetime.end.p0(i64 8, ptr %514) #8
  br label %5462

5426:                                             ; preds = %5411, %5370
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %510) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %510) #8
  %5427 = load ptr, ptr %509, align 8, !tbaa !5
  %5428 = icmp eq ptr %5427, null
  br i1 %5428, label %5430, label %5429

5429:                                             ; preds = %5426
  call void @_ZdaPv(ptr noundef %5427) #10
  br label %5430

5430:                                             ; preds = %5429, %5426
  call void @llvm.lifetime.end.p0(i64 8, ptr %509) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %507) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %506) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %506) #8
  br label %5431

5431:                                             ; preds = %5430
  br label %5432

5432:                                             ; preds = %5431
  br label %5433

5433:                                             ; preds = %5432
  call void @llvm.lifetime.start.p0(i64 392, ptr %516) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %516)
  %5434 = getelementptr inbounds i8, ptr %516, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %5434, ptr noundef @.str.40, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %5435 unwind label %5467

5435:                                             ; preds = %5433
  call void @llvm.lifetime.start.p0(i64 4, ptr %517) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %518) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %518, ptr noundef nonnull align 8 dereferenceable(128) %516)
          to label %5436 unwind label %5471

5436:                                             ; preds = %5435
  %5437 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %518) #8
  %5438 = add i64 %5437, 3
  %5439 = trunc i64 %5438 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %518) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %518) #8
  store i32 %5439, ptr %517, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %519) #8
  %5440 = load i32, ptr %517, align 4, !tbaa !11
  %5441 = sext i32 %5440 to i64
  %5442 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %5441) #9
          to label %5443 unwind label %5475

5443:                                             ; preds = %5436
  store ptr %5442, ptr %519, align 8, !tbaa !5
  %5444 = load ptr, ptr %519, align 8, !tbaa !5
  %5445 = load i32, ptr %517, align 4, !tbaa !11
  %5446 = sub nsw i32 %5445, 1
  %5447 = sext i32 %5446 to i64
  %5448 = getelementptr inbounds i8, ptr %5444, i64 %5447
  store i8 0, ptr %5448, align 1, !tbaa !13
  %5449 = load ptr, ptr %519, align 8, !tbaa !5
  %5450 = load i32, ptr %517, align 4, !tbaa !11
  %5451 = sub nsw i32 %5450, 2
  %5452 = sext i32 %5451 to i64
  %5453 = load double, ptr %3, align 8, !tbaa !9
  %5454 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %5449, i64 noundef %5452, ptr noundef @.str.40, double noundef %5453) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %520) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %521) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %521, ptr noundef nonnull align 8 dereferenceable(128) %516)
          to label %5455 unwind label %5479

5455:                                             ; preds = %5443
  call void @llvm.lifetime.start.p0(i64 32, ptr %522) #8
  %5456 = load ptr, ptr %519, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %523) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %523) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %522, ptr noundef %5456, ptr noundef nonnull align 1 dereferenceable(1) %523)
          to label %5457 unwind label %5483

5457:                                             ; preds = %5455
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %520, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %521, ptr noundef nonnull align 8 dereferenceable(32) %522)
          to label %5458 unwind label %5487

5458:                                             ; preds = %5457
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %522) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %523) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %523) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %522) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %521) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %521) #8
  %5459 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %520)
          to label %5460 unwind label %5493

5460:                                             ; preds = %5458
  br i1 %5459, label %5461, label %5497

5461:                                             ; preds = %5460
  br label %5517

5462:                                             ; preds = %5425, %5402
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %510) #8
  br label %5463

5463:                                             ; preds = %5462, %5401
  call void @llvm.lifetime.end.p0(i64 16, ptr %510) #8
  br label %5464

5464:                                             ; preds = %5463, %5384
  call void @llvm.lifetime.end.p0(i64 8, ptr %509) #8
  br label %5465

5465:                                             ; preds = %5464, %5380
  call void @llvm.lifetime.end.p0(i64 4, ptr %507) #8
  br label %5466

5466:                                             ; preds = %5465, %5376
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %506) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %506) #8
  br label %7986

5467:                                             ; preds = %5433
  %5468 = landingpad { ptr, i32 }
          cleanup
  %5469 = extractvalue { ptr, i32 } %5468, 0
  store ptr %5469, ptr %5, align 8
  %5470 = extractvalue { ptr, i32 } %5468, 1
  store i32 %5470, ptr %6, align 4
  br label %5557

5471:                                             ; preds = %5435
  %5472 = landingpad { ptr, i32 }
          cleanup
  %5473 = extractvalue { ptr, i32 } %5472, 0
  store ptr %5473, ptr %5, align 8
  %5474 = extractvalue { ptr, i32 } %5472, 1
  store i32 %5474, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %518) #8
  br label %5556

5475:                                             ; preds = %5436
  %5476 = landingpad { ptr, i32 }
          cleanup
  %5477 = extractvalue { ptr, i32 } %5476, 0
  store ptr %5477, ptr %5, align 8
  %5478 = extractvalue { ptr, i32 } %5476, 1
  store i32 %5478, ptr %6, align 4
  br label %5555

5479:                                             ; preds = %5443
  %5480 = landingpad { ptr, i32 }
          cleanup
  %5481 = extractvalue { ptr, i32 } %5480, 0
  store ptr %5481, ptr %5, align 8
  %5482 = extractvalue { ptr, i32 } %5480, 1
  store i32 %5482, ptr %6, align 4
  br label %5492

5483:                                             ; preds = %5455
  %5484 = landingpad { ptr, i32 }
          cleanup
  %5485 = extractvalue { ptr, i32 } %5484, 0
  store ptr %5485, ptr %5, align 8
  %5486 = extractvalue { ptr, i32 } %5484, 1
  store i32 %5486, ptr %6, align 4
  br label %5491

5487:                                             ; preds = %5457
  %5488 = landingpad { ptr, i32 }
          cleanup
  %5489 = extractvalue { ptr, i32 } %5488, 0
  store ptr %5489, ptr %5, align 8
  %5490 = extractvalue { ptr, i32 } %5488, 1
  store i32 %5490, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %522) #8
  br label %5491

5491:                                             ; preds = %5487, %5483
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %523) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %523) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %522) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %521) #8
  br label %5492

5492:                                             ; preds = %5491, %5479
  call void @llvm.lifetime.end.p0(i64 32, ptr %521) #8
  br label %5554

5493:                                             ; preds = %5458
  %5494 = landingpad { ptr, i32 }
          cleanup
  %5495 = extractvalue { ptr, i32 } %5494, 0
  store ptr %5495, ptr %5, align 8
  %5496 = extractvalue { ptr, i32 } %5494, 1
  store i32 %5496, ptr %6, align 4
  br label %5553

5497:                                             ; preds = %5460
  call void @llvm.lifetime.start.p0(i64 8, ptr %524) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %524)
          to label %5498 unwind label %5503

5498:                                             ; preds = %5497
  call void @llvm.lifetime.start.p0(i64 8, ptr %525) #8
  %5499 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %520)
          to label %5500 unwind label %5507

5500:                                             ; preds = %5498
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %525, i32 noundef 1, ptr noundef @.str.3, i32 noundef 126, ptr noundef %5499)
          to label %5501 unwind label %5507

5501:                                             ; preds = %5500
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %525, ptr noundef nonnull align 8 dereferenceable(8) %524)
          to label %5502 unwind label %5511

5502:                                             ; preds = %5501
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %525) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %525) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %524) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %524) #8
  br label %5517

5503:                                             ; preds = %5497
  %5504 = landingpad { ptr, i32 }
          cleanup
  %5505 = extractvalue { ptr, i32 } %5504, 0
  store ptr %5505, ptr %5, align 8
  %5506 = extractvalue { ptr, i32 } %5504, 1
  store i32 %5506, ptr %6, align 4
  br label %5516

5507:                                             ; preds = %5500, %5498
  %5508 = landingpad { ptr, i32 }
          cleanup
  %5509 = extractvalue { ptr, i32 } %5508, 0
  store ptr %5509, ptr %5, align 8
  %5510 = extractvalue { ptr, i32 } %5508, 1
  store i32 %5510, ptr %6, align 4
  br label %5515

5511:                                             ; preds = %5501
  %5512 = landingpad { ptr, i32 }
          cleanup
  %5513 = extractvalue { ptr, i32 } %5512, 0
  store ptr %5513, ptr %5, align 8
  %5514 = extractvalue { ptr, i32 } %5512, 1
  store i32 %5514, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %525) #8
  br label %5515

5515:                                             ; preds = %5511, %5507
  call void @llvm.lifetime.end.p0(i64 8, ptr %525) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %524) #8
  br label %5516

5516:                                             ; preds = %5515, %5503
  call void @llvm.lifetime.end.p0(i64 8, ptr %524) #8
  br label %5553

5517:                                             ; preds = %5502, %5461
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %520) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %520) #8
  %5518 = load ptr, ptr %519, align 8, !tbaa !5
  %5519 = icmp eq ptr %5518, null
  br i1 %5519, label %5521, label %5520

5520:                                             ; preds = %5517
  call void @_ZdaPv(ptr noundef %5518) #10
  br label %5521

5521:                                             ; preds = %5520, %5517
  call void @llvm.lifetime.end.p0(i64 8, ptr %519) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %517) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %516) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %516) #8
  br label %5522

5522:                                             ; preds = %5521
  br label %5523

5523:                                             ; preds = %5522
  br label %5524

5524:                                             ; preds = %5523
  call void @llvm.lifetime.start.p0(i64 392, ptr %526) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %526)
  %5525 = getelementptr inbounds i8, ptr %526, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %5525, ptr noundef @.str.41, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %5526 unwind label %5558

5526:                                             ; preds = %5524
  call void @llvm.lifetime.start.p0(i64 4, ptr %527) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %528) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %528, ptr noundef nonnull align 8 dereferenceable(128) %526)
          to label %5527 unwind label %5562

5527:                                             ; preds = %5526
  %5528 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %528) #8
  %5529 = add i64 %5528, 3
  %5530 = trunc i64 %5529 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %528) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %528) #8
  store i32 %5530, ptr %527, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %529) #8
  %5531 = load i32, ptr %527, align 4, !tbaa !11
  %5532 = sext i32 %5531 to i64
  %5533 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %5532) #9
          to label %5534 unwind label %5566

5534:                                             ; preds = %5527
  store ptr %5533, ptr %529, align 8, !tbaa !5
  %5535 = load ptr, ptr %529, align 8, !tbaa !5
  %5536 = load i32, ptr %527, align 4, !tbaa !11
  %5537 = sub nsw i32 %5536, 1
  %5538 = sext i32 %5537 to i64
  %5539 = getelementptr inbounds i8, ptr %5535, i64 %5538
  store i8 0, ptr %5539, align 1, !tbaa !13
  %5540 = load ptr, ptr %529, align 8, !tbaa !5
  %5541 = load i32, ptr %527, align 4, !tbaa !11
  %5542 = sub nsw i32 %5541, 2
  %5543 = sext i32 %5542 to i64
  %5544 = load double, ptr %3, align 8, !tbaa !9
  %5545 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %5540, i64 noundef %5543, ptr noundef @.str.41, double noundef %5544) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %530) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %531) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %531, ptr noundef nonnull align 8 dereferenceable(128) %526)
          to label %5546 unwind label %5570

5546:                                             ; preds = %5534
  call void @llvm.lifetime.start.p0(i64 32, ptr %532) #8
  %5547 = load ptr, ptr %529, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %533) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %533) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %532, ptr noundef %5547, ptr noundef nonnull align 1 dereferenceable(1) %533)
          to label %5548 unwind label %5574

5548:                                             ; preds = %5546
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %530, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %531, ptr noundef nonnull align 8 dereferenceable(32) %532)
          to label %5549 unwind label %5578

5549:                                             ; preds = %5548
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %532) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %533) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %533) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %532) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %531) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %531) #8
  %5550 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %530)
          to label %5551 unwind label %5584

5551:                                             ; preds = %5549
  br i1 %5550, label %5552, label %5588

5552:                                             ; preds = %5551
  br label %5608

5553:                                             ; preds = %5516, %5493
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %520) #8
  br label %5554

5554:                                             ; preds = %5553, %5492
  call void @llvm.lifetime.end.p0(i64 16, ptr %520) #8
  br label %5555

5555:                                             ; preds = %5554, %5475
  call void @llvm.lifetime.end.p0(i64 8, ptr %519) #8
  br label %5556

5556:                                             ; preds = %5555, %5471
  call void @llvm.lifetime.end.p0(i64 4, ptr %517) #8
  br label %5557

5557:                                             ; preds = %5556, %5467
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %516) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %516) #8
  br label %7986

5558:                                             ; preds = %5524
  %5559 = landingpad { ptr, i32 }
          cleanup
  %5560 = extractvalue { ptr, i32 } %5559, 0
  store ptr %5560, ptr %5, align 8
  %5561 = extractvalue { ptr, i32 } %5559, 1
  store i32 %5561, ptr %6, align 4
  br label %5648

5562:                                             ; preds = %5526
  %5563 = landingpad { ptr, i32 }
          cleanup
  %5564 = extractvalue { ptr, i32 } %5563, 0
  store ptr %5564, ptr %5, align 8
  %5565 = extractvalue { ptr, i32 } %5563, 1
  store i32 %5565, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %528) #8
  br label %5647

5566:                                             ; preds = %5527
  %5567 = landingpad { ptr, i32 }
          cleanup
  %5568 = extractvalue { ptr, i32 } %5567, 0
  store ptr %5568, ptr %5, align 8
  %5569 = extractvalue { ptr, i32 } %5567, 1
  store i32 %5569, ptr %6, align 4
  br label %5646

5570:                                             ; preds = %5534
  %5571 = landingpad { ptr, i32 }
          cleanup
  %5572 = extractvalue { ptr, i32 } %5571, 0
  store ptr %5572, ptr %5, align 8
  %5573 = extractvalue { ptr, i32 } %5571, 1
  store i32 %5573, ptr %6, align 4
  br label %5583

5574:                                             ; preds = %5546
  %5575 = landingpad { ptr, i32 }
          cleanup
  %5576 = extractvalue { ptr, i32 } %5575, 0
  store ptr %5576, ptr %5, align 8
  %5577 = extractvalue { ptr, i32 } %5575, 1
  store i32 %5577, ptr %6, align 4
  br label %5582

5578:                                             ; preds = %5548
  %5579 = landingpad { ptr, i32 }
          cleanup
  %5580 = extractvalue { ptr, i32 } %5579, 0
  store ptr %5580, ptr %5, align 8
  %5581 = extractvalue { ptr, i32 } %5579, 1
  store i32 %5581, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %532) #8
  br label %5582

5582:                                             ; preds = %5578, %5574
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %533) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %533) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %532) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %531) #8
  br label %5583

5583:                                             ; preds = %5582, %5570
  call void @llvm.lifetime.end.p0(i64 32, ptr %531) #8
  br label %5645

5584:                                             ; preds = %5549
  %5585 = landingpad { ptr, i32 }
          cleanup
  %5586 = extractvalue { ptr, i32 } %5585, 0
  store ptr %5586, ptr %5, align 8
  %5587 = extractvalue { ptr, i32 } %5585, 1
  store i32 %5587, ptr %6, align 4
  br label %5644

5588:                                             ; preds = %5551
  call void @llvm.lifetime.start.p0(i64 8, ptr %534) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %534)
          to label %5589 unwind label %5594

5589:                                             ; preds = %5588
  call void @llvm.lifetime.start.p0(i64 8, ptr %535) #8
  %5590 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %530)
          to label %5591 unwind label %5598

5591:                                             ; preds = %5589
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %535, i32 noundef 1, ptr noundef @.str.3, i32 noundef 127, ptr noundef %5590)
          to label %5592 unwind label %5598

5592:                                             ; preds = %5591
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %535, ptr noundef nonnull align 8 dereferenceable(8) %534)
          to label %5593 unwind label %5602

5593:                                             ; preds = %5592
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %535) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %535) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %534) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %534) #8
  br label %5608

5594:                                             ; preds = %5588
  %5595 = landingpad { ptr, i32 }
          cleanup
  %5596 = extractvalue { ptr, i32 } %5595, 0
  store ptr %5596, ptr %5, align 8
  %5597 = extractvalue { ptr, i32 } %5595, 1
  store i32 %5597, ptr %6, align 4
  br label %5607

5598:                                             ; preds = %5591, %5589
  %5599 = landingpad { ptr, i32 }
          cleanup
  %5600 = extractvalue { ptr, i32 } %5599, 0
  store ptr %5600, ptr %5, align 8
  %5601 = extractvalue { ptr, i32 } %5599, 1
  store i32 %5601, ptr %6, align 4
  br label %5606

5602:                                             ; preds = %5592
  %5603 = landingpad { ptr, i32 }
          cleanup
  %5604 = extractvalue { ptr, i32 } %5603, 0
  store ptr %5604, ptr %5, align 8
  %5605 = extractvalue { ptr, i32 } %5603, 1
  store i32 %5605, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %535) #8
  br label %5606

5606:                                             ; preds = %5602, %5598
  call void @llvm.lifetime.end.p0(i64 8, ptr %535) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %534) #8
  br label %5607

5607:                                             ; preds = %5606, %5594
  call void @llvm.lifetime.end.p0(i64 8, ptr %534) #8
  br label %5644

5608:                                             ; preds = %5593, %5552
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %530) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %530) #8
  %5609 = load ptr, ptr %529, align 8, !tbaa !5
  %5610 = icmp eq ptr %5609, null
  br i1 %5610, label %5612, label %5611

5611:                                             ; preds = %5608
  call void @_ZdaPv(ptr noundef %5609) #10
  br label %5612

5612:                                             ; preds = %5611, %5608
  call void @llvm.lifetime.end.p0(i64 8, ptr %529) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %527) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %526) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %526) #8
  br label %5613

5613:                                             ; preds = %5612
  br label %5614

5614:                                             ; preds = %5613
  store double 0x3E91CED52219BEA5, ptr %3, align 8, !tbaa !9
  br label %5615

5615:                                             ; preds = %5614
  call void @llvm.lifetime.start.p0(i64 392, ptr %536) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %536)
  %5616 = getelementptr inbounds i8, ptr %536, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %5616, ptr noundef @.str.42, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %5617 unwind label %5649

5617:                                             ; preds = %5615
  call void @llvm.lifetime.start.p0(i64 4, ptr %537) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %538) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %538, ptr noundef nonnull align 8 dereferenceable(128) %536)
          to label %5618 unwind label %5653

5618:                                             ; preds = %5617
  %5619 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %538) #8
  %5620 = add i64 %5619, 3
  %5621 = trunc i64 %5620 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %538) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %538) #8
  store i32 %5621, ptr %537, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %539) #8
  %5622 = load i32, ptr %537, align 4, !tbaa !11
  %5623 = sext i32 %5622 to i64
  %5624 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %5623) #9
          to label %5625 unwind label %5657

5625:                                             ; preds = %5618
  store ptr %5624, ptr %539, align 8, !tbaa !5
  %5626 = load ptr, ptr %539, align 8, !tbaa !5
  %5627 = load i32, ptr %537, align 4, !tbaa !11
  %5628 = sub nsw i32 %5627, 1
  %5629 = sext i32 %5628 to i64
  %5630 = getelementptr inbounds i8, ptr %5626, i64 %5629
  store i8 0, ptr %5630, align 1, !tbaa !13
  %5631 = load ptr, ptr %539, align 8, !tbaa !5
  %5632 = load i32, ptr %537, align 4, !tbaa !11
  %5633 = sub nsw i32 %5632, 2
  %5634 = sext i32 %5633 to i64
  %5635 = load double, ptr %3, align 8, !tbaa !9
  %5636 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %5631, i64 noundef %5634, ptr noundef @.str.42, double noundef %5635) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %540) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %541) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %541, ptr noundef nonnull align 8 dereferenceable(128) %536)
          to label %5637 unwind label %5661

5637:                                             ; preds = %5625
  call void @llvm.lifetime.start.p0(i64 32, ptr %542) #8
  %5638 = load ptr, ptr %539, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %543) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %543) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %542, ptr noundef %5638, ptr noundef nonnull align 1 dereferenceable(1) %543)
          to label %5639 unwind label %5665

5639:                                             ; preds = %5637
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %540, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %541, ptr noundef nonnull align 8 dereferenceable(32) %542)
          to label %5640 unwind label %5669

5640:                                             ; preds = %5639
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %542) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %543) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %543) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %542) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %541) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %541) #8
  %5641 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %540)
          to label %5642 unwind label %5675

5642:                                             ; preds = %5640
  br i1 %5641, label %5643, label %5679

5643:                                             ; preds = %5642
  br label %5699

5644:                                             ; preds = %5607, %5584
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %530) #8
  br label %5645

5645:                                             ; preds = %5644, %5583
  call void @llvm.lifetime.end.p0(i64 16, ptr %530) #8
  br label %5646

5646:                                             ; preds = %5645, %5566
  call void @llvm.lifetime.end.p0(i64 8, ptr %529) #8
  br label %5647

5647:                                             ; preds = %5646, %5562
  call void @llvm.lifetime.end.p0(i64 4, ptr %527) #8
  br label %5648

5648:                                             ; preds = %5647, %5558
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %526) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %526) #8
  br label %7986

5649:                                             ; preds = %5615
  %5650 = landingpad { ptr, i32 }
          cleanup
  %5651 = extractvalue { ptr, i32 } %5650, 0
  store ptr %5651, ptr %5, align 8
  %5652 = extractvalue { ptr, i32 } %5650, 1
  store i32 %5652, ptr %6, align 4
  br label %5739

5653:                                             ; preds = %5617
  %5654 = landingpad { ptr, i32 }
          cleanup
  %5655 = extractvalue { ptr, i32 } %5654, 0
  store ptr %5655, ptr %5, align 8
  %5656 = extractvalue { ptr, i32 } %5654, 1
  store i32 %5656, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %538) #8
  br label %5738

5657:                                             ; preds = %5618
  %5658 = landingpad { ptr, i32 }
          cleanup
  %5659 = extractvalue { ptr, i32 } %5658, 0
  store ptr %5659, ptr %5, align 8
  %5660 = extractvalue { ptr, i32 } %5658, 1
  store i32 %5660, ptr %6, align 4
  br label %5737

5661:                                             ; preds = %5625
  %5662 = landingpad { ptr, i32 }
          cleanup
  %5663 = extractvalue { ptr, i32 } %5662, 0
  store ptr %5663, ptr %5, align 8
  %5664 = extractvalue { ptr, i32 } %5662, 1
  store i32 %5664, ptr %6, align 4
  br label %5674

5665:                                             ; preds = %5637
  %5666 = landingpad { ptr, i32 }
          cleanup
  %5667 = extractvalue { ptr, i32 } %5666, 0
  store ptr %5667, ptr %5, align 8
  %5668 = extractvalue { ptr, i32 } %5666, 1
  store i32 %5668, ptr %6, align 4
  br label %5673

5669:                                             ; preds = %5639
  %5670 = landingpad { ptr, i32 }
          cleanup
  %5671 = extractvalue { ptr, i32 } %5670, 0
  store ptr %5671, ptr %5, align 8
  %5672 = extractvalue { ptr, i32 } %5670, 1
  store i32 %5672, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %542) #8
  br label %5673

5673:                                             ; preds = %5669, %5665
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %543) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %543) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %542) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %541) #8
  br label %5674

5674:                                             ; preds = %5673, %5661
  call void @llvm.lifetime.end.p0(i64 32, ptr %541) #8
  br label %5736

5675:                                             ; preds = %5640
  %5676 = landingpad { ptr, i32 }
          cleanup
  %5677 = extractvalue { ptr, i32 } %5676, 0
  store ptr %5677, ptr %5, align 8
  %5678 = extractvalue { ptr, i32 } %5676, 1
  store i32 %5678, ptr %6, align 4
  br label %5735

5679:                                             ; preds = %5642
  call void @llvm.lifetime.start.p0(i64 8, ptr %544) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %544)
          to label %5680 unwind label %5685

5680:                                             ; preds = %5679
  call void @llvm.lifetime.start.p0(i64 8, ptr %545) #8
  %5681 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %540)
          to label %5682 unwind label %5689

5682:                                             ; preds = %5680
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %545, i32 noundef 1, ptr noundef @.str.3, i32 noundef 130, ptr noundef %5681)
          to label %5683 unwind label %5689

5683:                                             ; preds = %5682
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %545, ptr noundef nonnull align 8 dereferenceable(8) %544)
          to label %5684 unwind label %5693

5684:                                             ; preds = %5683
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %545) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %545) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %544) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %544) #8
  br label %5699

5685:                                             ; preds = %5679
  %5686 = landingpad { ptr, i32 }
          cleanup
  %5687 = extractvalue { ptr, i32 } %5686, 0
  store ptr %5687, ptr %5, align 8
  %5688 = extractvalue { ptr, i32 } %5686, 1
  store i32 %5688, ptr %6, align 4
  br label %5698

5689:                                             ; preds = %5682, %5680
  %5690 = landingpad { ptr, i32 }
          cleanup
  %5691 = extractvalue { ptr, i32 } %5690, 0
  store ptr %5691, ptr %5, align 8
  %5692 = extractvalue { ptr, i32 } %5690, 1
  store i32 %5692, ptr %6, align 4
  br label %5697

5693:                                             ; preds = %5683
  %5694 = landingpad { ptr, i32 }
          cleanup
  %5695 = extractvalue { ptr, i32 } %5694, 0
  store ptr %5695, ptr %5, align 8
  %5696 = extractvalue { ptr, i32 } %5694, 1
  store i32 %5696, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %545) #8
  br label %5697

5697:                                             ; preds = %5693, %5689
  call void @llvm.lifetime.end.p0(i64 8, ptr %545) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %544) #8
  br label %5698

5698:                                             ; preds = %5697, %5685
  call void @llvm.lifetime.end.p0(i64 8, ptr %544) #8
  br label %5735

5699:                                             ; preds = %5684, %5643
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %540) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %540) #8
  %5700 = load ptr, ptr %539, align 8, !tbaa !5
  %5701 = icmp eq ptr %5700, null
  br i1 %5701, label %5703, label %5702

5702:                                             ; preds = %5699
  call void @_ZdaPv(ptr noundef %5700) #10
  br label %5703

5703:                                             ; preds = %5702, %5699
  call void @llvm.lifetime.end.p0(i64 8, ptr %539) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %537) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %536) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %536) #8
  br label %5704

5704:                                             ; preds = %5703
  br label %5705

5705:                                             ; preds = %5704
  br label %5706

5706:                                             ; preds = %5705
  call void @llvm.lifetime.start.p0(i64 392, ptr %546) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %546)
  %5707 = getelementptr inbounds i8, ptr %546, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %5707, ptr noundef @.str.43, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %5708 unwind label %5740

5708:                                             ; preds = %5706
  call void @llvm.lifetime.start.p0(i64 4, ptr %547) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %548) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %548, ptr noundef nonnull align 8 dereferenceable(128) %546)
          to label %5709 unwind label %5744

5709:                                             ; preds = %5708
  %5710 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %548) #8
  %5711 = add i64 %5710, 3
  %5712 = trunc i64 %5711 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %548) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %548) #8
  store i32 %5712, ptr %547, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %549) #8
  %5713 = load i32, ptr %547, align 4, !tbaa !11
  %5714 = sext i32 %5713 to i64
  %5715 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %5714) #9
          to label %5716 unwind label %5748

5716:                                             ; preds = %5709
  store ptr %5715, ptr %549, align 8, !tbaa !5
  %5717 = load ptr, ptr %549, align 8, !tbaa !5
  %5718 = load i32, ptr %547, align 4, !tbaa !11
  %5719 = sub nsw i32 %5718, 1
  %5720 = sext i32 %5719 to i64
  %5721 = getelementptr inbounds i8, ptr %5717, i64 %5720
  store i8 0, ptr %5721, align 1, !tbaa !13
  %5722 = load ptr, ptr %549, align 8, !tbaa !5
  %5723 = load i32, ptr %547, align 4, !tbaa !11
  %5724 = sub nsw i32 %5723, 2
  %5725 = sext i32 %5724 to i64
  %5726 = load double, ptr %3, align 8, !tbaa !9
  %5727 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %5722, i64 noundef %5725, ptr noundef @.str.43, double noundef %5726) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %550) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %551) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %551, ptr noundef nonnull align 8 dereferenceable(128) %546)
          to label %5728 unwind label %5752

5728:                                             ; preds = %5716
  call void @llvm.lifetime.start.p0(i64 32, ptr %552) #8
  %5729 = load ptr, ptr %549, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %553) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %553) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %552, ptr noundef %5729, ptr noundef nonnull align 1 dereferenceable(1) %553)
          to label %5730 unwind label %5756

5730:                                             ; preds = %5728
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %550, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %551, ptr noundef nonnull align 8 dereferenceable(32) %552)
          to label %5731 unwind label %5760

5731:                                             ; preds = %5730
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %552) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %553) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %553) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %552) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %551) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %551) #8
  %5732 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %550)
          to label %5733 unwind label %5766

5733:                                             ; preds = %5731
  br i1 %5732, label %5734, label %5770

5734:                                             ; preds = %5733
  br label %5790

5735:                                             ; preds = %5698, %5675
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %540) #8
  br label %5736

5736:                                             ; preds = %5735, %5674
  call void @llvm.lifetime.end.p0(i64 16, ptr %540) #8
  br label %5737

5737:                                             ; preds = %5736, %5657
  call void @llvm.lifetime.end.p0(i64 8, ptr %539) #8
  br label %5738

5738:                                             ; preds = %5737, %5653
  call void @llvm.lifetime.end.p0(i64 4, ptr %537) #8
  br label %5739

5739:                                             ; preds = %5738, %5649
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %536) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %536) #8
  br label %7986

5740:                                             ; preds = %5706
  %5741 = landingpad { ptr, i32 }
          cleanup
  %5742 = extractvalue { ptr, i32 } %5741, 0
  store ptr %5742, ptr %5, align 8
  %5743 = extractvalue { ptr, i32 } %5741, 1
  store i32 %5743, ptr %6, align 4
  br label %5830

5744:                                             ; preds = %5708
  %5745 = landingpad { ptr, i32 }
          cleanup
  %5746 = extractvalue { ptr, i32 } %5745, 0
  store ptr %5746, ptr %5, align 8
  %5747 = extractvalue { ptr, i32 } %5745, 1
  store i32 %5747, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %548) #8
  br label %5829

5748:                                             ; preds = %5709
  %5749 = landingpad { ptr, i32 }
          cleanup
  %5750 = extractvalue { ptr, i32 } %5749, 0
  store ptr %5750, ptr %5, align 8
  %5751 = extractvalue { ptr, i32 } %5749, 1
  store i32 %5751, ptr %6, align 4
  br label %5828

5752:                                             ; preds = %5716
  %5753 = landingpad { ptr, i32 }
          cleanup
  %5754 = extractvalue { ptr, i32 } %5753, 0
  store ptr %5754, ptr %5, align 8
  %5755 = extractvalue { ptr, i32 } %5753, 1
  store i32 %5755, ptr %6, align 4
  br label %5765

5756:                                             ; preds = %5728
  %5757 = landingpad { ptr, i32 }
          cleanup
  %5758 = extractvalue { ptr, i32 } %5757, 0
  store ptr %5758, ptr %5, align 8
  %5759 = extractvalue { ptr, i32 } %5757, 1
  store i32 %5759, ptr %6, align 4
  br label %5764

5760:                                             ; preds = %5730
  %5761 = landingpad { ptr, i32 }
          cleanup
  %5762 = extractvalue { ptr, i32 } %5761, 0
  store ptr %5762, ptr %5, align 8
  %5763 = extractvalue { ptr, i32 } %5761, 1
  store i32 %5763, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %552) #8
  br label %5764

5764:                                             ; preds = %5760, %5756
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %553) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %553) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %552) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %551) #8
  br label %5765

5765:                                             ; preds = %5764, %5752
  call void @llvm.lifetime.end.p0(i64 32, ptr %551) #8
  br label %5827

5766:                                             ; preds = %5731
  %5767 = landingpad { ptr, i32 }
          cleanup
  %5768 = extractvalue { ptr, i32 } %5767, 0
  store ptr %5768, ptr %5, align 8
  %5769 = extractvalue { ptr, i32 } %5767, 1
  store i32 %5769, ptr %6, align 4
  br label %5826

5770:                                             ; preds = %5733
  call void @llvm.lifetime.start.p0(i64 8, ptr %554) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %554)
          to label %5771 unwind label %5776

5771:                                             ; preds = %5770
  call void @llvm.lifetime.start.p0(i64 8, ptr %555) #8
  %5772 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %550)
          to label %5773 unwind label %5780

5773:                                             ; preds = %5771
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %555, i32 noundef 1, ptr noundef @.str.3, i32 noundef 131, ptr noundef %5772)
          to label %5774 unwind label %5780

5774:                                             ; preds = %5773
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %555, ptr noundef nonnull align 8 dereferenceable(8) %554)
          to label %5775 unwind label %5784

5775:                                             ; preds = %5774
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %555) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %555) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %554) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %554) #8
  br label %5790

5776:                                             ; preds = %5770
  %5777 = landingpad { ptr, i32 }
          cleanup
  %5778 = extractvalue { ptr, i32 } %5777, 0
  store ptr %5778, ptr %5, align 8
  %5779 = extractvalue { ptr, i32 } %5777, 1
  store i32 %5779, ptr %6, align 4
  br label %5789

5780:                                             ; preds = %5773, %5771
  %5781 = landingpad { ptr, i32 }
          cleanup
  %5782 = extractvalue { ptr, i32 } %5781, 0
  store ptr %5782, ptr %5, align 8
  %5783 = extractvalue { ptr, i32 } %5781, 1
  store i32 %5783, ptr %6, align 4
  br label %5788

5784:                                             ; preds = %5774
  %5785 = landingpad { ptr, i32 }
          cleanup
  %5786 = extractvalue { ptr, i32 } %5785, 0
  store ptr %5786, ptr %5, align 8
  %5787 = extractvalue { ptr, i32 } %5785, 1
  store i32 %5787, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %555) #8
  br label %5788

5788:                                             ; preds = %5784, %5780
  call void @llvm.lifetime.end.p0(i64 8, ptr %555) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %554) #8
  br label %5789

5789:                                             ; preds = %5788, %5776
  call void @llvm.lifetime.end.p0(i64 8, ptr %554) #8
  br label %5826

5790:                                             ; preds = %5775, %5734
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %550) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %550) #8
  %5791 = load ptr, ptr %549, align 8, !tbaa !5
  %5792 = icmp eq ptr %5791, null
  br i1 %5792, label %5794, label %5793

5793:                                             ; preds = %5790
  call void @_ZdaPv(ptr noundef %5791) #10
  br label %5794

5794:                                             ; preds = %5793, %5790
  call void @llvm.lifetime.end.p0(i64 8, ptr %549) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %547) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %546) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %546) #8
  br label %5795

5795:                                             ; preds = %5794
  br label %5796

5796:                                             ; preds = %5795
  br label %5797

5797:                                             ; preds = %5796
  call void @llvm.lifetime.start.p0(i64 392, ptr %556) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %556)
  %5798 = getelementptr inbounds i8, ptr %556, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %5798, ptr noundef @.str.44, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %5799 unwind label %5831

5799:                                             ; preds = %5797
  call void @llvm.lifetime.start.p0(i64 4, ptr %557) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %558) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %558, ptr noundef nonnull align 8 dereferenceable(128) %556)
          to label %5800 unwind label %5835

5800:                                             ; preds = %5799
  %5801 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %558) #8
  %5802 = add i64 %5801, 3
  %5803 = trunc i64 %5802 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %558) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %558) #8
  store i32 %5803, ptr %557, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %559) #8
  %5804 = load i32, ptr %557, align 4, !tbaa !11
  %5805 = sext i32 %5804 to i64
  %5806 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %5805) #9
          to label %5807 unwind label %5839

5807:                                             ; preds = %5800
  store ptr %5806, ptr %559, align 8, !tbaa !5
  %5808 = load ptr, ptr %559, align 8, !tbaa !5
  %5809 = load i32, ptr %557, align 4, !tbaa !11
  %5810 = sub nsw i32 %5809, 1
  %5811 = sext i32 %5810 to i64
  %5812 = getelementptr inbounds i8, ptr %5808, i64 %5811
  store i8 0, ptr %5812, align 1, !tbaa !13
  %5813 = load ptr, ptr %559, align 8, !tbaa !5
  %5814 = load i32, ptr %557, align 4, !tbaa !11
  %5815 = sub nsw i32 %5814, 2
  %5816 = sext i32 %5815 to i64
  %5817 = load double, ptr %3, align 8, !tbaa !9
  %5818 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %5813, i64 noundef %5816, ptr noundef @.str.44, double noundef %5817) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %560) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %561) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %561, ptr noundef nonnull align 8 dereferenceable(128) %556)
          to label %5819 unwind label %5843

5819:                                             ; preds = %5807
  call void @llvm.lifetime.start.p0(i64 32, ptr %562) #8
  %5820 = load ptr, ptr %559, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %563) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %563) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %562, ptr noundef %5820, ptr noundef nonnull align 1 dereferenceable(1) %563)
          to label %5821 unwind label %5847

5821:                                             ; preds = %5819
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %560, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %561, ptr noundef nonnull align 8 dereferenceable(32) %562)
          to label %5822 unwind label %5851

5822:                                             ; preds = %5821
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %562) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %563) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %563) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %562) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %561) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %561) #8
  %5823 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %560)
          to label %5824 unwind label %5857

5824:                                             ; preds = %5822
  br i1 %5823, label %5825, label %5861

5825:                                             ; preds = %5824
  br label %5881

5826:                                             ; preds = %5789, %5766
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %550) #8
  br label %5827

5827:                                             ; preds = %5826, %5765
  call void @llvm.lifetime.end.p0(i64 16, ptr %550) #8
  br label %5828

5828:                                             ; preds = %5827, %5748
  call void @llvm.lifetime.end.p0(i64 8, ptr %549) #8
  br label %5829

5829:                                             ; preds = %5828, %5744
  call void @llvm.lifetime.end.p0(i64 4, ptr %547) #8
  br label %5830

5830:                                             ; preds = %5829, %5740
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %546) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %546) #8
  br label %7986

5831:                                             ; preds = %5797
  %5832 = landingpad { ptr, i32 }
          cleanup
  %5833 = extractvalue { ptr, i32 } %5832, 0
  store ptr %5833, ptr %5, align 8
  %5834 = extractvalue { ptr, i32 } %5832, 1
  store i32 %5834, ptr %6, align 4
  br label %5921

5835:                                             ; preds = %5799
  %5836 = landingpad { ptr, i32 }
          cleanup
  %5837 = extractvalue { ptr, i32 } %5836, 0
  store ptr %5837, ptr %5, align 8
  %5838 = extractvalue { ptr, i32 } %5836, 1
  store i32 %5838, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %558) #8
  br label %5920

5839:                                             ; preds = %5800
  %5840 = landingpad { ptr, i32 }
          cleanup
  %5841 = extractvalue { ptr, i32 } %5840, 0
  store ptr %5841, ptr %5, align 8
  %5842 = extractvalue { ptr, i32 } %5840, 1
  store i32 %5842, ptr %6, align 4
  br label %5919

5843:                                             ; preds = %5807
  %5844 = landingpad { ptr, i32 }
          cleanup
  %5845 = extractvalue { ptr, i32 } %5844, 0
  store ptr %5845, ptr %5, align 8
  %5846 = extractvalue { ptr, i32 } %5844, 1
  store i32 %5846, ptr %6, align 4
  br label %5856

5847:                                             ; preds = %5819
  %5848 = landingpad { ptr, i32 }
          cleanup
  %5849 = extractvalue { ptr, i32 } %5848, 0
  store ptr %5849, ptr %5, align 8
  %5850 = extractvalue { ptr, i32 } %5848, 1
  store i32 %5850, ptr %6, align 4
  br label %5855

5851:                                             ; preds = %5821
  %5852 = landingpad { ptr, i32 }
          cleanup
  %5853 = extractvalue { ptr, i32 } %5852, 0
  store ptr %5853, ptr %5, align 8
  %5854 = extractvalue { ptr, i32 } %5852, 1
  store i32 %5854, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %562) #8
  br label %5855

5855:                                             ; preds = %5851, %5847
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %563) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %563) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %562) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %561) #8
  br label %5856

5856:                                             ; preds = %5855, %5843
  call void @llvm.lifetime.end.p0(i64 32, ptr %561) #8
  br label %5918

5857:                                             ; preds = %5822
  %5858 = landingpad { ptr, i32 }
          cleanup
  %5859 = extractvalue { ptr, i32 } %5858, 0
  store ptr %5859, ptr %5, align 8
  %5860 = extractvalue { ptr, i32 } %5858, 1
  store i32 %5860, ptr %6, align 4
  br label %5917

5861:                                             ; preds = %5824
  call void @llvm.lifetime.start.p0(i64 8, ptr %564) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %564)
          to label %5862 unwind label %5867

5862:                                             ; preds = %5861
  call void @llvm.lifetime.start.p0(i64 8, ptr %565) #8
  %5863 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %560)
          to label %5864 unwind label %5871

5864:                                             ; preds = %5862
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %565, i32 noundef 1, ptr noundef @.str.3, i32 noundef 132, ptr noundef %5863)
          to label %5865 unwind label %5871

5865:                                             ; preds = %5864
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %565, ptr noundef nonnull align 8 dereferenceable(8) %564)
          to label %5866 unwind label %5875

5866:                                             ; preds = %5865
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %565) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %565) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %564) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %564) #8
  br label %5881

5867:                                             ; preds = %5861
  %5868 = landingpad { ptr, i32 }
          cleanup
  %5869 = extractvalue { ptr, i32 } %5868, 0
  store ptr %5869, ptr %5, align 8
  %5870 = extractvalue { ptr, i32 } %5868, 1
  store i32 %5870, ptr %6, align 4
  br label %5880

5871:                                             ; preds = %5864, %5862
  %5872 = landingpad { ptr, i32 }
          cleanup
  %5873 = extractvalue { ptr, i32 } %5872, 0
  store ptr %5873, ptr %5, align 8
  %5874 = extractvalue { ptr, i32 } %5872, 1
  store i32 %5874, ptr %6, align 4
  br label %5879

5875:                                             ; preds = %5865
  %5876 = landingpad { ptr, i32 }
          cleanup
  %5877 = extractvalue { ptr, i32 } %5876, 0
  store ptr %5877, ptr %5, align 8
  %5878 = extractvalue { ptr, i32 } %5876, 1
  store i32 %5878, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %565) #8
  br label %5879

5879:                                             ; preds = %5875, %5871
  call void @llvm.lifetime.end.p0(i64 8, ptr %565) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %564) #8
  br label %5880

5880:                                             ; preds = %5879, %5867
  call void @llvm.lifetime.end.p0(i64 8, ptr %564) #8
  br label %5917

5881:                                             ; preds = %5866, %5825
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %560) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %560) #8
  %5882 = load ptr, ptr %559, align 8, !tbaa !5
  %5883 = icmp eq ptr %5882, null
  br i1 %5883, label %5885, label %5884

5884:                                             ; preds = %5881
  call void @_ZdaPv(ptr noundef %5882) #10
  br label %5885

5885:                                             ; preds = %5884, %5881
  call void @llvm.lifetime.end.p0(i64 8, ptr %559) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %557) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %556) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %556) #8
  br label %5886

5886:                                             ; preds = %5885
  br label %5887

5887:                                             ; preds = %5886
  br label %5888

5888:                                             ; preds = %5887
  call void @llvm.lifetime.start.p0(i64 392, ptr %566) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %566)
  %5889 = getelementptr inbounds i8, ptr %566, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %5889, ptr noundef @.str.45, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %5890 unwind label %5922

5890:                                             ; preds = %5888
  call void @llvm.lifetime.start.p0(i64 4, ptr %567) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %568) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %568, ptr noundef nonnull align 8 dereferenceable(128) %566)
          to label %5891 unwind label %5926

5891:                                             ; preds = %5890
  %5892 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %568) #8
  %5893 = add i64 %5892, 3
  %5894 = trunc i64 %5893 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %568) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %568) #8
  store i32 %5894, ptr %567, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %569) #8
  %5895 = load i32, ptr %567, align 4, !tbaa !11
  %5896 = sext i32 %5895 to i64
  %5897 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %5896) #9
          to label %5898 unwind label %5930

5898:                                             ; preds = %5891
  store ptr %5897, ptr %569, align 8, !tbaa !5
  %5899 = load ptr, ptr %569, align 8, !tbaa !5
  %5900 = load i32, ptr %567, align 4, !tbaa !11
  %5901 = sub nsw i32 %5900, 1
  %5902 = sext i32 %5901 to i64
  %5903 = getelementptr inbounds i8, ptr %5899, i64 %5902
  store i8 0, ptr %5903, align 1, !tbaa !13
  %5904 = load ptr, ptr %569, align 8, !tbaa !5
  %5905 = load i32, ptr %567, align 4, !tbaa !11
  %5906 = sub nsw i32 %5905, 2
  %5907 = sext i32 %5906 to i64
  %5908 = load double, ptr %3, align 8, !tbaa !9
  %5909 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %5904, i64 noundef %5907, ptr noundef @.str.45, double noundef %5908) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %570) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %571) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %571, ptr noundef nonnull align 8 dereferenceable(128) %566)
          to label %5910 unwind label %5934

5910:                                             ; preds = %5898
  call void @llvm.lifetime.start.p0(i64 32, ptr %572) #8
  %5911 = load ptr, ptr %569, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %573) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %573) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %572, ptr noundef %5911, ptr noundef nonnull align 1 dereferenceable(1) %573)
          to label %5912 unwind label %5938

5912:                                             ; preds = %5910
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %570, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %571, ptr noundef nonnull align 8 dereferenceable(32) %572)
          to label %5913 unwind label %5942

5913:                                             ; preds = %5912
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %572) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %573) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %573) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %572) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %571) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %571) #8
  %5914 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %570)
          to label %5915 unwind label %5948

5915:                                             ; preds = %5913
  br i1 %5914, label %5916, label %5952

5916:                                             ; preds = %5915
  br label %5972

5917:                                             ; preds = %5880, %5857
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %560) #8
  br label %5918

5918:                                             ; preds = %5917, %5856
  call void @llvm.lifetime.end.p0(i64 16, ptr %560) #8
  br label %5919

5919:                                             ; preds = %5918, %5839
  call void @llvm.lifetime.end.p0(i64 8, ptr %559) #8
  br label %5920

5920:                                             ; preds = %5919, %5835
  call void @llvm.lifetime.end.p0(i64 4, ptr %557) #8
  br label %5921

5921:                                             ; preds = %5920, %5831
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %556) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %556) #8
  br label %7986

5922:                                             ; preds = %5888
  %5923 = landingpad { ptr, i32 }
          cleanup
  %5924 = extractvalue { ptr, i32 } %5923, 0
  store ptr %5924, ptr %5, align 8
  %5925 = extractvalue { ptr, i32 } %5923, 1
  store i32 %5925, ptr %6, align 4
  br label %6012

5926:                                             ; preds = %5890
  %5927 = landingpad { ptr, i32 }
          cleanup
  %5928 = extractvalue { ptr, i32 } %5927, 0
  store ptr %5928, ptr %5, align 8
  %5929 = extractvalue { ptr, i32 } %5927, 1
  store i32 %5929, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %568) #8
  br label %6011

5930:                                             ; preds = %5891
  %5931 = landingpad { ptr, i32 }
          cleanup
  %5932 = extractvalue { ptr, i32 } %5931, 0
  store ptr %5932, ptr %5, align 8
  %5933 = extractvalue { ptr, i32 } %5931, 1
  store i32 %5933, ptr %6, align 4
  br label %6010

5934:                                             ; preds = %5898
  %5935 = landingpad { ptr, i32 }
          cleanup
  %5936 = extractvalue { ptr, i32 } %5935, 0
  store ptr %5936, ptr %5, align 8
  %5937 = extractvalue { ptr, i32 } %5935, 1
  store i32 %5937, ptr %6, align 4
  br label %5947

5938:                                             ; preds = %5910
  %5939 = landingpad { ptr, i32 }
          cleanup
  %5940 = extractvalue { ptr, i32 } %5939, 0
  store ptr %5940, ptr %5, align 8
  %5941 = extractvalue { ptr, i32 } %5939, 1
  store i32 %5941, ptr %6, align 4
  br label %5946

5942:                                             ; preds = %5912
  %5943 = landingpad { ptr, i32 }
          cleanup
  %5944 = extractvalue { ptr, i32 } %5943, 0
  store ptr %5944, ptr %5, align 8
  %5945 = extractvalue { ptr, i32 } %5943, 1
  store i32 %5945, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %572) #8
  br label %5946

5946:                                             ; preds = %5942, %5938
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %573) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %573) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %572) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %571) #8
  br label %5947

5947:                                             ; preds = %5946, %5934
  call void @llvm.lifetime.end.p0(i64 32, ptr %571) #8
  br label %6009

5948:                                             ; preds = %5913
  %5949 = landingpad { ptr, i32 }
          cleanup
  %5950 = extractvalue { ptr, i32 } %5949, 0
  store ptr %5950, ptr %5, align 8
  %5951 = extractvalue { ptr, i32 } %5949, 1
  store i32 %5951, ptr %6, align 4
  br label %6008

5952:                                             ; preds = %5915
  call void @llvm.lifetime.start.p0(i64 8, ptr %574) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %574)
          to label %5953 unwind label %5958

5953:                                             ; preds = %5952
  call void @llvm.lifetime.start.p0(i64 8, ptr %575) #8
  %5954 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %570)
          to label %5955 unwind label %5962

5955:                                             ; preds = %5953
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %575, i32 noundef 1, ptr noundef @.str.3, i32 noundef 133, ptr noundef %5954)
          to label %5956 unwind label %5962

5956:                                             ; preds = %5955
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %575, ptr noundef nonnull align 8 dereferenceable(8) %574)
          to label %5957 unwind label %5966

5957:                                             ; preds = %5956
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %575) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %575) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %574) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %574) #8
  br label %5972

5958:                                             ; preds = %5952
  %5959 = landingpad { ptr, i32 }
          cleanup
  %5960 = extractvalue { ptr, i32 } %5959, 0
  store ptr %5960, ptr %5, align 8
  %5961 = extractvalue { ptr, i32 } %5959, 1
  store i32 %5961, ptr %6, align 4
  br label %5971

5962:                                             ; preds = %5955, %5953
  %5963 = landingpad { ptr, i32 }
          cleanup
  %5964 = extractvalue { ptr, i32 } %5963, 0
  store ptr %5964, ptr %5, align 8
  %5965 = extractvalue { ptr, i32 } %5963, 1
  store i32 %5965, ptr %6, align 4
  br label %5970

5966:                                             ; preds = %5956
  %5967 = landingpad { ptr, i32 }
          cleanup
  %5968 = extractvalue { ptr, i32 } %5967, 0
  store ptr %5968, ptr %5, align 8
  %5969 = extractvalue { ptr, i32 } %5967, 1
  store i32 %5969, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %575) #8
  br label %5970

5970:                                             ; preds = %5966, %5962
  call void @llvm.lifetime.end.p0(i64 8, ptr %575) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %574) #8
  br label %5971

5971:                                             ; preds = %5970, %5958
  call void @llvm.lifetime.end.p0(i64 8, ptr %574) #8
  br label %6008

5972:                                             ; preds = %5957, %5916
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %570) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %570) #8
  %5973 = load ptr, ptr %569, align 8, !tbaa !5
  %5974 = icmp eq ptr %5973, null
  br i1 %5974, label %5976, label %5975

5975:                                             ; preds = %5972
  call void @_ZdaPv(ptr noundef %5973) #10
  br label %5976

5976:                                             ; preds = %5975, %5972
  call void @llvm.lifetime.end.p0(i64 8, ptr %569) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %567) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %566) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %566) #8
  br label %5977

5977:                                             ; preds = %5976
  br label %5978

5978:                                             ; preds = %5977
  br label %5979

5979:                                             ; preds = %5978
  call void @llvm.lifetime.start.p0(i64 392, ptr %576) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %576)
  %5980 = getelementptr inbounds i8, ptr %576, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %5980, ptr noundef @.str.46, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %5981 unwind label %6013

5981:                                             ; preds = %5979
  call void @llvm.lifetime.start.p0(i64 4, ptr %577) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %578) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %578, ptr noundef nonnull align 8 dereferenceable(128) %576)
          to label %5982 unwind label %6017

5982:                                             ; preds = %5981
  %5983 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %578) #8
  %5984 = add i64 %5983, 3
  %5985 = trunc i64 %5984 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %578) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %578) #8
  store i32 %5985, ptr %577, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %579) #8
  %5986 = load i32, ptr %577, align 4, !tbaa !11
  %5987 = sext i32 %5986 to i64
  %5988 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %5987) #9
          to label %5989 unwind label %6021

5989:                                             ; preds = %5982
  store ptr %5988, ptr %579, align 8, !tbaa !5
  %5990 = load ptr, ptr %579, align 8, !tbaa !5
  %5991 = load i32, ptr %577, align 4, !tbaa !11
  %5992 = sub nsw i32 %5991, 1
  %5993 = sext i32 %5992 to i64
  %5994 = getelementptr inbounds i8, ptr %5990, i64 %5993
  store i8 0, ptr %5994, align 1, !tbaa !13
  %5995 = load ptr, ptr %579, align 8, !tbaa !5
  %5996 = load i32, ptr %577, align 4, !tbaa !11
  %5997 = sub nsw i32 %5996, 2
  %5998 = sext i32 %5997 to i64
  %5999 = load double, ptr %3, align 8, !tbaa !9
  %6000 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %5995, i64 noundef %5998, ptr noundef @.str.46, double noundef %5999) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %580) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %581) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %581, ptr noundef nonnull align 8 dereferenceable(128) %576)
          to label %6001 unwind label %6025

6001:                                             ; preds = %5989
  call void @llvm.lifetime.start.p0(i64 32, ptr %582) #8
  %6002 = load ptr, ptr %579, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %583) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %583) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %582, ptr noundef %6002, ptr noundef nonnull align 1 dereferenceable(1) %583)
          to label %6003 unwind label %6029

6003:                                             ; preds = %6001
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %580, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %581, ptr noundef nonnull align 8 dereferenceable(32) %582)
          to label %6004 unwind label %6033

6004:                                             ; preds = %6003
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %582) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %583) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %583) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %582) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %581) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %581) #8
  %6005 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %580)
          to label %6006 unwind label %6039

6006:                                             ; preds = %6004
  br i1 %6005, label %6007, label %6043

6007:                                             ; preds = %6006
  br label %6063

6008:                                             ; preds = %5971, %5948
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %570) #8
  br label %6009

6009:                                             ; preds = %6008, %5947
  call void @llvm.lifetime.end.p0(i64 16, ptr %570) #8
  br label %6010

6010:                                             ; preds = %6009, %5930
  call void @llvm.lifetime.end.p0(i64 8, ptr %569) #8
  br label %6011

6011:                                             ; preds = %6010, %5926
  call void @llvm.lifetime.end.p0(i64 4, ptr %567) #8
  br label %6012

6012:                                             ; preds = %6011, %5922
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %566) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %566) #8
  br label %7986

6013:                                             ; preds = %5979
  %6014 = landingpad { ptr, i32 }
          cleanup
  %6015 = extractvalue { ptr, i32 } %6014, 0
  store ptr %6015, ptr %5, align 8
  %6016 = extractvalue { ptr, i32 } %6014, 1
  store i32 %6016, ptr %6, align 4
  br label %6103

6017:                                             ; preds = %5981
  %6018 = landingpad { ptr, i32 }
          cleanup
  %6019 = extractvalue { ptr, i32 } %6018, 0
  store ptr %6019, ptr %5, align 8
  %6020 = extractvalue { ptr, i32 } %6018, 1
  store i32 %6020, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %578) #8
  br label %6102

6021:                                             ; preds = %5982
  %6022 = landingpad { ptr, i32 }
          cleanup
  %6023 = extractvalue { ptr, i32 } %6022, 0
  store ptr %6023, ptr %5, align 8
  %6024 = extractvalue { ptr, i32 } %6022, 1
  store i32 %6024, ptr %6, align 4
  br label %6101

6025:                                             ; preds = %5989
  %6026 = landingpad { ptr, i32 }
          cleanup
  %6027 = extractvalue { ptr, i32 } %6026, 0
  store ptr %6027, ptr %5, align 8
  %6028 = extractvalue { ptr, i32 } %6026, 1
  store i32 %6028, ptr %6, align 4
  br label %6038

6029:                                             ; preds = %6001
  %6030 = landingpad { ptr, i32 }
          cleanup
  %6031 = extractvalue { ptr, i32 } %6030, 0
  store ptr %6031, ptr %5, align 8
  %6032 = extractvalue { ptr, i32 } %6030, 1
  store i32 %6032, ptr %6, align 4
  br label %6037

6033:                                             ; preds = %6003
  %6034 = landingpad { ptr, i32 }
          cleanup
  %6035 = extractvalue { ptr, i32 } %6034, 0
  store ptr %6035, ptr %5, align 8
  %6036 = extractvalue { ptr, i32 } %6034, 1
  store i32 %6036, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %582) #8
  br label %6037

6037:                                             ; preds = %6033, %6029
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %583) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %583) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %582) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %581) #8
  br label %6038

6038:                                             ; preds = %6037, %6025
  call void @llvm.lifetime.end.p0(i64 32, ptr %581) #8
  br label %6100

6039:                                             ; preds = %6004
  %6040 = landingpad { ptr, i32 }
          cleanup
  %6041 = extractvalue { ptr, i32 } %6040, 0
  store ptr %6041, ptr %5, align 8
  %6042 = extractvalue { ptr, i32 } %6040, 1
  store i32 %6042, ptr %6, align 4
  br label %6099

6043:                                             ; preds = %6006
  call void @llvm.lifetime.start.p0(i64 8, ptr %584) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %584)
          to label %6044 unwind label %6049

6044:                                             ; preds = %6043
  call void @llvm.lifetime.start.p0(i64 8, ptr %585) #8
  %6045 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %580)
          to label %6046 unwind label %6053

6046:                                             ; preds = %6044
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %585, i32 noundef 1, ptr noundef @.str.3, i32 noundef 134, ptr noundef %6045)
          to label %6047 unwind label %6053

6047:                                             ; preds = %6046
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %585, ptr noundef nonnull align 8 dereferenceable(8) %584)
          to label %6048 unwind label %6057

6048:                                             ; preds = %6047
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %585) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %585) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %584) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %584) #8
  br label %6063

6049:                                             ; preds = %6043
  %6050 = landingpad { ptr, i32 }
          cleanup
  %6051 = extractvalue { ptr, i32 } %6050, 0
  store ptr %6051, ptr %5, align 8
  %6052 = extractvalue { ptr, i32 } %6050, 1
  store i32 %6052, ptr %6, align 4
  br label %6062

6053:                                             ; preds = %6046, %6044
  %6054 = landingpad { ptr, i32 }
          cleanup
  %6055 = extractvalue { ptr, i32 } %6054, 0
  store ptr %6055, ptr %5, align 8
  %6056 = extractvalue { ptr, i32 } %6054, 1
  store i32 %6056, ptr %6, align 4
  br label %6061

6057:                                             ; preds = %6047
  %6058 = landingpad { ptr, i32 }
          cleanup
  %6059 = extractvalue { ptr, i32 } %6058, 0
  store ptr %6059, ptr %5, align 8
  %6060 = extractvalue { ptr, i32 } %6058, 1
  store i32 %6060, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %585) #8
  br label %6061

6061:                                             ; preds = %6057, %6053
  call void @llvm.lifetime.end.p0(i64 8, ptr %585) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %584) #8
  br label %6062

6062:                                             ; preds = %6061, %6049
  call void @llvm.lifetime.end.p0(i64 8, ptr %584) #8
  br label %6099

6063:                                             ; preds = %6048, %6007
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %580) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %580) #8
  %6064 = load ptr, ptr %579, align 8, !tbaa !5
  %6065 = icmp eq ptr %6064, null
  br i1 %6065, label %6067, label %6066

6066:                                             ; preds = %6063
  call void @_ZdaPv(ptr noundef %6064) #10
  br label %6067

6067:                                             ; preds = %6066, %6063
  call void @llvm.lifetime.end.p0(i64 8, ptr %579) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %577) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %576) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %576) #8
  br label %6068

6068:                                             ; preds = %6067
  br label %6069

6069:                                             ; preds = %6068
  br label %6070

6070:                                             ; preds = %6069
  call void @llvm.lifetime.start.p0(i64 392, ptr %586) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %586)
  %6071 = getelementptr inbounds i8, ptr %586, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %6071, ptr noundef @.str.47, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %6072 unwind label %6104

6072:                                             ; preds = %6070
  call void @llvm.lifetime.start.p0(i64 4, ptr %587) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %588) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %588, ptr noundef nonnull align 8 dereferenceable(128) %586)
          to label %6073 unwind label %6108

6073:                                             ; preds = %6072
  %6074 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %588) #8
  %6075 = add i64 %6074, 3
  %6076 = trunc i64 %6075 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %588) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %588) #8
  store i32 %6076, ptr %587, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %589) #8
  %6077 = load i32, ptr %587, align 4, !tbaa !11
  %6078 = sext i32 %6077 to i64
  %6079 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %6078) #9
          to label %6080 unwind label %6112

6080:                                             ; preds = %6073
  store ptr %6079, ptr %589, align 8, !tbaa !5
  %6081 = load ptr, ptr %589, align 8, !tbaa !5
  %6082 = load i32, ptr %587, align 4, !tbaa !11
  %6083 = sub nsw i32 %6082, 1
  %6084 = sext i32 %6083 to i64
  %6085 = getelementptr inbounds i8, ptr %6081, i64 %6084
  store i8 0, ptr %6085, align 1, !tbaa !13
  %6086 = load ptr, ptr %589, align 8, !tbaa !5
  %6087 = load i32, ptr %587, align 4, !tbaa !11
  %6088 = sub nsw i32 %6087, 2
  %6089 = sext i32 %6088 to i64
  %6090 = load double, ptr %3, align 8, !tbaa !9
  %6091 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %6086, i64 noundef %6089, ptr noundef @.str.47, double noundef %6090) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %590) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %591) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %591, ptr noundef nonnull align 8 dereferenceable(128) %586)
          to label %6092 unwind label %6116

6092:                                             ; preds = %6080
  call void @llvm.lifetime.start.p0(i64 32, ptr %592) #8
  %6093 = load ptr, ptr %589, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %593) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %593) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %592, ptr noundef %6093, ptr noundef nonnull align 1 dereferenceable(1) %593)
          to label %6094 unwind label %6120

6094:                                             ; preds = %6092
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %590, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %591, ptr noundef nonnull align 8 dereferenceable(32) %592)
          to label %6095 unwind label %6124

6095:                                             ; preds = %6094
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %592) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %593) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %593) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %592) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %591) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %591) #8
  %6096 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %590)
          to label %6097 unwind label %6130

6097:                                             ; preds = %6095
  br i1 %6096, label %6098, label %6134

6098:                                             ; preds = %6097
  br label %6154

6099:                                             ; preds = %6062, %6039
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %580) #8
  br label %6100

6100:                                             ; preds = %6099, %6038
  call void @llvm.lifetime.end.p0(i64 16, ptr %580) #8
  br label %6101

6101:                                             ; preds = %6100, %6021
  call void @llvm.lifetime.end.p0(i64 8, ptr %579) #8
  br label %6102

6102:                                             ; preds = %6101, %6017
  call void @llvm.lifetime.end.p0(i64 4, ptr %577) #8
  br label %6103

6103:                                             ; preds = %6102, %6013
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %576) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %576) #8
  br label %7986

6104:                                             ; preds = %6070
  %6105 = landingpad { ptr, i32 }
          cleanup
  %6106 = extractvalue { ptr, i32 } %6105, 0
  store ptr %6106, ptr %5, align 8
  %6107 = extractvalue { ptr, i32 } %6105, 1
  store i32 %6107, ptr %6, align 4
  br label %6194

6108:                                             ; preds = %6072
  %6109 = landingpad { ptr, i32 }
          cleanup
  %6110 = extractvalue { ptr, i32 } %6109, 0
  store ptr %6110, ptr %5, align 8
  %6111 = extractvalue { ptr, i32 } %6109, 1
  store i32 %6111, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %588) #8
  br label %6193

6112:                                             ; preds = %6073
  %6113 = landingpad { ptr, i32 }
          cleanup
  %6114 = extractvalue { ptr, i32 } %6113, 0
  store ptr %6114, ptr %5, align 8
  %6115 = extractvalue { ptr, i32 } %6113, 1
  store i32 %6115, ptr %6, align 4
  br label %6192

6116:                                             ; preds = %6080
  %6117 = landingpad { ptr, i32 }
          cleanup
  %6118 = extractvalue { ptr, i32 } %6117, 0
  store ptr %6118, ptr %5, align 8
  %6119 = extractvalue { ptr, i32 } %6117, 1
  store i32 %6119, ptr %6, align 4
  br label %6129

6120:                                             ; preds = %6092
  %6121 = landingpad { ptr, i32 }
          cleanup
  %6122 = extractvalue { ptr, i32 } %6121, 0
  store ptr %6122, ptr %5, align 8
  %6123 = extractvalue { ptr, i32 } %6121, 1
  store i32 %6123, ptr %6, align 4
  br label %6128

6124:                                             ; preds = %6094
  %6125 = landingpad { ptr, i32 }
          cleanup
  %6126 = extractvalue { ptr, i32 } %6125, 0
  store ptr %6126, ptr %5, align 8
  %6127 = extractvalue { ptr, i32 } %6125, 1
  store i32 %6127, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %592) #8
  br label %6128

6128:                                             ; preds = %6124, %6120
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %593) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %593) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %592) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %591) #8
  br label %6129

6129:                                             ; preds = %6128, %6116
  call void @llvm.lifetime.end.p0(i64 32, ptr %591) #8
  br label %6191

6130:                                             ; preds = %6095
  %6131 = landingpad { ptr, i32 }
          cleanup
  %6132 = extractvalue { ptr, i32 } %6131, 0
  store ptr %6132, ptr %5, align 8
  %6133 = extractvalue { ptr, i32 } %6131, 1
  store i32 %6133, ptr %6, align 4
  br label %6190

6134:                                             ; preds = %6097
  call void @llvm.lifetime.start.p0(i64 8, ptr %594) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %594)
          to label %6135 unwind label %6140

6135:                                             ; preds = %6134
  call void @llvm.lifetime.start.p0(i64 8, ptr %595) #8
  %6136 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %590)
          to label %6137 unwind label %6144

6137:                                             ; preds = %6135
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %595, i32 noundef 1, ptr noundef @.str.3, i32 noundef 135, ptr noundef %6136)
          to label %6138 unwind label %6144

6138:                                             ; preds = %6137
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %595, ptr noundef nonnull align 8 dereferenceable(8) %594)
          to label %6139 unwind label %6148

6139:                                             ; preds = %6138
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %595) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %595) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %594) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %594) #8
  br label %6154

6140:                                             ; preds = %6134
  %6141 = landingpad { ptr, i32 }
          cleanup
  %6142 = extractvalue { ptr, i32 } %6141, 0
  store ptr %6142, ptr %5, align 8
  %6143 = extractvalue { ptr, i32 } %6141, 1
  store i32 %6143, ptr %6, align 4
  br label %6153

6144:                                             ; preds = %6137, %6135
  %6145 = landingpad { ptr, i32 }
          cleanup
  %6146 = extractvalue { ptr, i32 } %6145, 0
  store ptr %6146, ptr %5, align 8
  %6147 = extractvalue { ptr, i32 } %6145, 1
  store i32 %6147, ptr %6, align 4
  br label %6152

6148:                                             ; preds = %6138
  %6149 = landingpad { ptr, i32 }
          cleanup
  %6150 = extractvalue { ptr, i32 } %6149, 0
  store ptr %6150, ptr %5, align 8
  %6151 = extractvalue { ptr, i32 } %6149, 1
  store i32 %6151, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %595) #8
  br label %6152

6152:                                             ; preds = %6148, %6144
  call void @llvm.lifetime.end.p0(i64 8, ptr %595) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %594) #8
  br label %6153

6153:                                             ; preds = %6152, %6140
  call void @llvm.lifetime.end.p0(i64 8, ptr %594) #8
  br label %6190

6154:                                             ; preds = %6139, %6098
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %590) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %590) #8
  %6155 = load ptr, ptr %589, align 8, !tbaa !5
  %6156 = icmp eq ptr %6155, null
  br i1 %6156, label %6158, label %6157

6157:                                             ; preds = %6154
  call void @_ZdaPv(ptr noundef %6155) #10
  br label %6158

6158:                                             ; preds = %6157, %6154
  call void @llvm.lifetime.end.p0(i64 8, ptr %589) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %587) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %586) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %586) #8
  br label %6159

6159:                                             ; preds = %6158
  br label %6160

6160:                                             ; preds = %6159
  br label %6161

6161:                                             ; preds = %6160
  call void @llvm.lifetime.start.p0(i64 392, ptr %596) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %596)
  %6162 = getelementptr inbounds i8, ptr %596, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %6162, ptr noundef @.str.48, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %6163 unwind label %6195

6163:                                             ; preds = %6161
  call void @llvm.lifetime.start.p0(i64 4, ptr %597) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %598) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %598, ptr noundef nonnull align 8 dereferenceable(128) %596)
          to label %6164 unwind label %6199

6164:                                             ; preds = %6163
  %6165 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %598) #8
  %6166 = add i64 %6165, 3
  %6167 = trunc i64 %6166 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %598) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %598) #8
  store i32 %6167, ptr %597, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %599) #8
  %6168 = load i32, ptr %597, align 4, !tbaa !11
  %6169 = sext i32 %6168 to i64
  %6170 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %6169) #9
          to label %6171 unwind label %6203

6171:                                             ; preds = %6164
  store ptr %6170, ptr %599, align 8, !tbaa !5
  %6172 = load ptr, ptr %599, align 8, !tbaa !5
  %6173 = load i32, ptr %597, align 4, !tbaa !11
  %6174 = sub nsw i32 %6173, 1
  %6175 = sext i32 %6174 to i64
  %6176 = getelementptr inbounds i8, ptr %6172, i64 %6175
  store i8 0, ptr %6176, align 1, !tbaa !13
  %6177 = load ptr, ptr %599, align 8, !tbaa !5
  %6178 = load i32, ptr %597, align 4, !tbaa !11
  %6179 = sub nsw i32 %6178, 2
  %6180 = sext i32 %6179 to i64
  %6181 = load double, ptr %3, align 8, !tbaa !9
  %6182 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %6177, i64 noundef %6180, ptr noundef @.str.48, double noundef %6181) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %600) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %601) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %601, ptr noundef nonnull align 8 dereferenceable(128) %596)
          to label %6183 unwind label %6207

6183:                                             ; preds = %6171
  call void @llvm.lifetime.start.p0(i64 32, ptr %602) #8
  %6184 = load ptr, ptr %599, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %603) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %603) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %602, ptr noundef %6184, ptr noundef nonnull align 1 dereferenceable(1) %603)
          to label %6185 unwind label %6211

6185:                                             ; preds = %6183
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %600, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %601, ptr noundef nonnull align 8 dereferenceable(32) %602)
          to label %6186 unwind label %6215

6186:                                             ; preds = %6185
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %602) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %603) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %603) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %602) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %601) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %601) #8
  %6187 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %600)
          to label %6188 unwind label %6221

6188:                                             ; preds = %6186
  br i1 %6187, label %6189, label %6225

6189:                                             ; preds = %6188
  br label %6245

6190:                                             ; preds = %6153, %6130
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %590) #8
  br label %6191

6191:                                             ; preds = %6190, %6129
  call void @llvm.lifetime.end.p0(i64 16, ptr %590) #8
  br label %6192

6192:                                             ; preds = %6191, %6112
  call void @llvm.lifetime.end.p0(i64 8, ptr %589) #8
  br label %6193

6193:                                             ; preds = %6192, %6108
  call void @llvm.lifetime.end.p0(i64 4, ptr %587) #8
  br label %6194

6194:                                             ; preds = %6193, %6104
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %586) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %586) #8
  br label %7986

6195:                                             ; preds = %6161
  %6196 = landingpad { ptr, i32 }
          cleanup
  %6197 = extractvalue { ptr, i32 } %6196, 0
  store ptr %6197, ptr %5, align 8
  %6198 = extractvalue { ptr, i32 } %6196, 1
  store i32 %6198, ptr %6, align 4
  br label %6285

6199:                                             ; preds = %6163
  %6200 = landingpad { ptr, i32 }
          cleanup
  %6201 = extractvalue { ptr, i32 } %6200, 0
  store ptr %6201, ptr %5, align 8
  %6202 = extractvalue { ptr, i32 } %6200, 1
  store i32 %6202, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %598) #8
  br label %6284

6203:                                             ; preds = %6164
  %6204 = landingpad { ptr, i32 }
          cleanup
  %6205 = extractvalue { ptr, i32 } %6204, 0
  store ptr %6205, ptr %5, align 8
  %6206 = extractvalue { ptr, i32 } %6204, 1
  store i32 %6206, ptr %6, align 4
  br label %6283

6207:                                             ; preds = %6171
  %6208 = landingpad { ptr, i32 }
          cleanup
  %6209 = extractvalue { ptr, i32 } %6208, 0
  store ptr %6209, ptr %5, align 8
  %6210 = extractvalue { ptr, i32 } %6208, 1
  store i32 %6210, ptr %6, align 4
  br label %6220

6211:                                             ; preds = %6183
  %6212 = landingpad { ptr, i32 }
          cleanup
  %6213 = extractvalue { ptr, i32 } %6212, 0
  store ptr %6213, ptr %5, align 8
  %6214 = extractvalue { ptr, i32 } %6212, 1
  store i32 %6214, ptr %6, align 4
  br label %6219

6215:                                             ; preds = %6185
  %6216 = landingpad { ptr, i32 }
          cleanup
  %6217 = extractvalue { ptr, i32 } %6216, 0
  store ptr %6217, ptr %5, align 8
  %6218 = extractvalue { ptr, i32 } %6216, 1
  store i32 %6218, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %602) #8
  br label %6219

6219:                                             ; preds = %6215, %6211
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %603) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %603) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %602) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %601) #8
  br label %6220

6220:                                             ; preds = %6219, %6207
  call void @llvm.lifetime.end.p0(i64 32, ptr %601) #8
  br label %6282

6221:                                             ; preds = %6186
  %6222 = landingpad { ptr, i32 }
          cleanup
  %6223 = extractvalue { ptr, i32 } %6222, 0
  store ptr %6223, ptr %5, align 8
  %6224 = extractvalue { ptr, i32 } %6222, 1
  store i32 %6224, ptr %6, align 4
  br label %6281

6225:                                             ; preds = %6188
  call void @llvm.lifetime.start.p0(i64 8, ptr %604) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %604)
          to label %6226 unwind label %6231

6226:                                             ; preds = %6225
  call void @llvm.lifetime.start.p0(i64 8, ptr %605) #8
  %6227 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %600)
          to label %6228 unwind label %6235

6228:                                             ; preds = %6226
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %605, i32 noundef 1, ptr noundef @.str.3, i32 noundef 136, ptr noundef %6227)
          to label %6229 unwind label %6235

6229:                                             ; preds = %6228
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %605, ptr noundef nonnull align 8 dereferenceable(8) %604)
          to label %6230 unwind label %6239

6230:                                             ; preds = %6229
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %605) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %605) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %604) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %604) #8
  br label %6245

6231:                                             ; preds = %6225
  %6232 = landingpad { ptr, i32 }
          cleanup
  %6233 = extractvalue { ptr, i32 } %6232, 0
  store ptr %6233, ptr %5, align 8
  %6234 = extractvalue { ptr, i32 } %6232, 1
  store i32 %6234, ptr %6, align 4
  br label %6244

6235:                                             ; preds = %6228, %6226
  %6236 = landingpad { ptr, i32 }
          cleanup
  %6237 = extractvalue { ptr, i32 } %6236, 0
  store ptr %6237, ptr %5, align 8
  %6238 = extractvalue { ptr, i32 } %6236, 1
  store i32 %6238, ptr %6, align 4
  br label %6243

6239:                                             ; preds = %6229
  %6240 = landingpad { ptr, i32 }
          cleanup
  %6241 = extractvalue { ptr, i32 } %6240, 0
  store ptr %6241, ptr %5, align 8
  %6242 = extractvalue { ptr, i32 } %6240, 1
  store i32 %6242, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %605) #8
  br label %6243

6243:                                             ; preds = %6239, %6235
  call void @llvm.lifetime.end.p0(i64 8, ptr %605) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %604) #8
  br label %6244

6244:                                             ; preds = %6243, %6231
  call void @llvm.lifetime.end.p0(i64 8, ptr %604) #8
  br label %6281

6245:                                             ; preds = %6230, %6189
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %600) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %600) #8
  %6246 = load ptr, ptr %599, align 8, !tbaa !5
  %6247 = icmp eq ptr %6246, null
  br i1 %6247, label %6249, label %6248

6248:                                             ; preds = %6245
  call void @_ZdaPv(ptr noundef %6246) #10
  br label %6249

6249:                                             ; preds = %6248, %6245
  call void @llvm.lifetime.end.p0(i64 8, ptr %599) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %597) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %596) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %596) #8
  br label %6250

6250:                                             ; preds = %6249
  br label %6251

6251:                                             ; preds = %6250
  br label %6252

6252:                                             ; preds = %6251
  call void @llvm.lifetime.start.p0(i64 392, ptr %606) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %606)
  %6253 = getelementptr inbounds i8, ptr %606, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %6253, ptr noundef @.str.49, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %6254 unwind label %6286

6254:                                             ; preds = %6252
  call void @llvm.lifetime.start.p0(i64 4, ptr %607) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %608) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %608, ptr noundef nonnull align 8 dereferenceable(128) %606)
          to label %6255 unwind label %6290

6255:                                             ; preds = %6254
  %6256 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %608) #8
  %6257 = add i64 %6256, 3
  %6258 = trunc i64 %6257 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %608) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %608) #8
  store i32 %6258, ptr %607, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %609) #8
  %6259 = load i32, ptr %607, align 4, !tbaa !11
  %6260 = sext i32 %6259 to i64
  %6261 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %6260) #9
          to label %6262 unwind label %6294

6262:                                             ; preds = %6255
  store ptr %6261, ptr %609, align 8, !tbaa !5
  %6263 = load ptr, ptr %609, align 8, !tbaa !5
  %6264 = load i32, ptr %607, align 4, !tbaa !11
  %6265 = sub nsw i32 %6264, 1
  %6266 = sext i32 %6265 to i64
  %6267 = getelementptr inbounds i8, ptr %6263, i64 %6266
  store i8 0, ptr %6267, align 1, !tbaa !13
  %6268 = load ptr, ptr %609, align 8, !tbaa !5
  %6269 = load i32, ptr %607, align 4, !tbaa !11
  %6270 = sub nsw i32 %6269, 2
  %6271 = sext i32 %6270 to i64
  %6272 = load double, ptr %3, align 8, !tbaa !9
  %6273 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %6268, i64 noundef %6271, ptr noundef @.str.49, double noundef %6272) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %610) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %611) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %611, ptr noundef nonnull align 8 dereferenceable(128) %606)
          to label %6274 unwind label %6298

6274:                                             ; preds = %6262
  call void @llvm.lifetime.start.p0(i64 32, ptr %612) #8
  %6275 = load ptr, ptr %609, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %613) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %613) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %612, ptr noundef %6275, ptr noundef nonnull align 1 dereferenceable(1) %613)
          to label %6276 unwind label %6302

6276:                                             ; preds = %6274
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %610, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %611, ptr noundef nonnull align 8 dereferenceable(32) %612)
          to label %6277 unwind label %6306

6277:                                             ; preds = %6276
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %612) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %613) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %613) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %612) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %611) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %611) #8
  %6278 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %610)
          to label %6279 unwind label %6312

6279:                                             ; preds = %6277
  br i1 %6278, label %6280, label %6316

6280:                                             ; preds = %6279
  br label %6336

6281:                                             ; preds = %6244, %6221
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %600) #8
  br label %6282

6282:                                             ; preds = %6281, %6220
  call void @llvm.lifetime.end.p0(i64 16, ptr %600) #8
  br label %6283

6283:                                             ; preds = %6282, %6203
  call void @llvm.lifetime.end.p0(i64 8, ptr %599) #8
  br label %6284

6284:                                             ; preds = %6283, %6199
  call void @llvm.lifetime.end.p0(i64 4, ptr %597) #8
  br label %6285

6285:                                             ; preds = %6284, %6195
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %596) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %596) #8
  br label %7986

6286:                                             ; preds = %6252
  %6287 = landingpad { ptr, i32 }
          cleanup
  %6288 = extractvalue { ptr, i32 } %6287, 0
  store ptr %6288, ptr %5, align 8
  %6289 = extractvalue { ptr, i32 } %6287, 1
  store i32 %6289, ptr %6, align 4
  br label %6376

6290:                                             ; preds = %6254
  %6291 = landingpad { ptr, i32 }
          cleanup
  %6292 = extractvalue { ptr, i32 } %6291, 0
  store ptr %6292, ptr %5, align 8
  %6293 = extractvalue { ptr, i32 } %6291, 1
  store i32 %6293, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %608) #8
  br label %6375

6294:                                             ; preds = %6255
  %6295 = landingpad { ptr, i32 }
          cleanup
  %6296 = extractvalue { ptr, i32 } %6295, 0
  store ptr %6296, ptr %5, align 8
  %6297 = extractvalue { ptr, i32 } %6295, 1
  store i32 %6297, ptr %6, align 4
  br label %6374

6298:                                             ; preds = %6262
  %6299 = landingpad { ptr, i32 }
          cleanup
  %6300 = extractvalue { ptr, i32 } %6299, 0
  store ptr %6300, ptr %5, align 8
  %6301 = extractvalue { ptr, i32 } %6299, 1
  store i32 %6301, ptr %6, align 4
  br label %6311

6302:                                             ; preds = %6274
  %6303 = landingpad { ptr, i32 }
          cleanup
  %6304 = extractvalue { ptr, i32 } %6303, 0
  store ptr %6304, ptr %5, align 8
  %6305 = extractvalue { ptr, i32 } %6303, 1
  store i32 %6305, ptr %6, align 4
  br label %6310

6306:                                             ; preds = %6276
  %6307 = landingpad { ptr, i32 }
          cleanup
  %6308 = extractvalue { ptr, i32 } %6307, 0
  store ptr %6308, ptr %5, align 8
  %6309 = extractvalue { ptr, i32 } %6307, 1
  store i32 %6309, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %612) #8
  br label %6310

6310:                                             ; preds = %6306, %6302
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %613) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %613) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %612) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %611) #8
  br label %6311

6311:                                             ; preds = %6310, %6298
  call void @llvm.lifetime.end.p0(i64 32, ptr %611) #8
  br label %6373

6312:                                             ; preds = %6277
  %6313 = landingpad { ptr, i32 }
          cleanup
  %6314 = extractvalue { ptr, i32 } %6313, 0
  store ptr %6314, ptr %5, align 8
  %6315 = extractvalue { ptr, i32 } %6313, 1
  store i32 %6315, ptr %6, align 4
  br label %6372

6316:                                             ; preds = %6279
  call void @llvm.lifetime.start.p0(i64 8, ptr %614) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %614)
          to label %6317 unwind label %6322

6317:                                             ; preds = %6316
  call void @llvm.lifetime.start.p0(i64 8, ptr %615) #8
  %6318 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %610)
          to label %6319 unwind label %6326

6319:                                             ; preds = %6317
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %615, i32 noundef 1, ptr noundef @.str.3, i32 noundef 137, ptr noundef %6318)
          to label %6320 unwind label %6326

6320:                                             ; preds = %6319
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %615, ptr noundef nonnull align 8 dereferenceable(8) %614)
          to label %6321 unwind label %6330

6321:                                             ; preds = %6320
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %615) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %615) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %614) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %614) #8
  br label %6336

6322:                                             ; preds = %6316
  %6323 = landingpad { ptr, i32 }
          cleanup
  %6324 = extractvalue { ptr, i32 } %6323, 0
  store ptr %6324, ptr %5, align 8
  %6325 = extractvalue { ptr, i32 } %6323, 1
  store i32 %6325, ptr %6, align 4
  br label %6335

6326:                                             ; preds = %6319, %6317
  %6327 = landingpad { ptr, i32 }
          cleanup
  %6328 = extractvalue { ptr, i32 } %6327, 0
  store ptr %6328, ptr %5, align 8
  %6329 = extractvalue { ptr, i32 } %6327, 1
  store i32 %6329, ptr %6, align 4
  br label %6334

6330:                                             ; preds = %6320
  %6331 = landingpad { ptr, i32 }
          cleanup
  %6332 = extractvalue { ptr, i32 } %6331, 0
  store ptr %6332, ptr %5, align 8
  %6333 = extractvalue { ptr, i32 } %6331, 1
  store i32 %6333, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %615) #8
  br label %6334

6334:                                             ; preds = %6330, %6326
  call void @llvm.lifetime.end.p0(i64 8, ptr %615) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %614) #8
  br label %6335

6335:                                             ; preds = %6334, %6322
  call void @llvm.lifetime.end.p0(i64 8, ptr %614) #8
  br label %6372

6336:                                             ; preds = %6321, %6280
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %610) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %610) #8
  %6337 = load ptr, ptr %609, align 8, !tbaa !5
  %6338 = icmp eq ptr %6337, null
  br i1 %6338, label %6340, label %6339

6339:                                             ; preds = %6336
  call void @_ZdaPv(ptr noundef %6337) #10
  br label %6340

6340:                                             ; preds = %6339, %6336
  call void @llvm.lifetime.end.p0(i64 8, ptr %609) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %607) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %606) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %606) #8
  br label %6341

6341:                                             ; preds = %6340
  br label %6342

6342:                                             ; preds = %6341
  br label %6343

6343:                                             ; preds = %6342
  call void @llvm.lifetime.start.p0(i64 392, ptr %616) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %616)
  %6344 = getelementptr inbounds i8, ptr %616, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %6344, ptr noundef @.str.50, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %6345 unwind label %6377

6345:                                             ; preds = %6343
  call void @llvm.lifetime.start.p0(i64 4, ptr %617) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %618) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %618, ptr noundef nonnull align 8 dereferenceable(128) %616)
          to label %6346 unwind label %6381

6346:                                             ; preds = %6345
  %6347 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %618) #8
  %6348 = add i64 %6347, 3
  %6349 = trunc i64 %6348 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %618) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %618) #8
  store i32 %6349, ptr %617, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %619) #8
  %6350 = load i32, ptr %617, align 4, !tbaa !11
  %6351 = sext i32 %6350 to i64
  %6352 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %6351) #9
          to label %6353 unwind label %6385

6353:                                             ; preds = %6346
  store ptr %6352, ptr %619, align 8, !tbaa !5
  %6354 = load ptr, ptr %619, align 8, !tbaa !5
  %6355 = load i32, ptr %617, align 4, !tbaa !11
  %6356 = sub nsw i32 %6355, 1
  %6357 = sext i32 %6356 to i64
  %6358 = getelementptr inbounds i8, ptr %6354, i64 %6357
  store i8 0, ptr %6358, align 1, !tbaa !13
  %6359 = load ptr, ptr %619, align 8, !tbaa !5
  %6360 = load i32, ptr %617, align 4, !tbaa !11
  %6361 = sub nsw i32 %6360, 2
  %6362 = sext i32 %6361 to i64
  %6363 = load double, ptr %3, align 8, !tbaa !9
  %6364 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %6359, i64 noundef %6362, ptr noundef @.str.50, double noundef %6363) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %620) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %621) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %621, ptr noundef nonnull align 8 dereferenceable(128) %616)
          to label %6365 unwind label %6389

6365:                                             ; preds = %6353
  call void @llvm.lifetime.start.p0(i64 32, ptr %622) #8
  %6366 = load ptr, ptr %619, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %623) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %623) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %622, ptr noundef %6366, ptr noundef nonnull align 1 dereferenceable(1) %623)
          to label %6367 unwind label %6393

6367:                                             ; preds = %6365
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %620, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %621, ptr noundef nonnull align 8 dereferenceable(32) %622)
          to label %6368 unwind label %6397

6368:                                             ; preds = %6367
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %622) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %623) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %623) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %622) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %621) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %621) #8
  %6369 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %620)
          to label %6370 unwind label %6403

6370:                                             ; preds = %6368
  br i1 %6369, label %6371, label %6407

6371:                                             ; preds = %6370
  br label %6427

6372:                                             ; preds = %6335, %6312
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %610) #8
  br label %6373

6373:                                             ; preds = %6372, %6311
  call void @llvm.lifetime.end.p0(i64 16, ptr %610) #8
  br label %6374

6374:                                             ; preds = %6373, %6294
  call void @llvm.lifetime.end.p0(i64 8, ptr %609) #8
  br label %6375

6375:                                             ; preds = %6374, %6290
  call void @llvm.lifetime.end.p0(i64 4, ptr %607) #8
  br label %6376

6376:                                             ; preds = %6375, %6286
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %606) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %606) #8
  br label %7986

6377:                                             ; preds = %6343
  %6378 = landingpad { ptr, i32 }
          cleanup
  %6379 = extractvalue { ptr, i32 } %6378, 0
  store ptr %6379, ptr %5, align 8
  %6380 = extractvalue { ptr, i32 } %6378, 1
  store i32 %6380, ptr %6, align 4
  br label %6467

6381:                                             ; preds = %6345
  %6382 = landingpad { ptr, i32 }
          cleanup
  %6383 = extractvalue { ptr, i32 } %6382, 0
  store ptr %6383, ptr %5, align 8
  %6384 = extractvalue { ptr, i32 } %6382, 1
  store i32 %6384, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %618) #8
  br label %6466

6385:                                             ; preds = %6346
  %6386 = landingpad { ptr, i32 }
          cleanup
  %6387 = extractvalue { ptr, i32 } %6386, 0
  store ptr %6387, ptr %5, align 8
  %6388 = extractvalue { ptr, i32 } %6386, 1
  store i32 %6388, ptr %6, align 4
  br label %6465

6389:                                             ; preds = %6353
  %6390 = landingpad { ptr, i32 }
          cleanup
  %6391 = extractvalue { ptr, i32 } %6390, 0
  store ptr %6391, ptr %5, align 8
  %6392 = extractvalue { ptr, i32 } %6390, 1
  store i32 %6392, ptr %6, align 4
  br label %6402

6393:                                             ; preds = %6365
  %6394 = landingpad { ptr, i32 }
          cleanup
  %6395 = extractvalue { ptr, i32 } %6394, 0
  store ptr %6395, ptr %5, align 8
  %6396 = extractvalue { ptr, i32 } %6394, 1
  store i32 %6396, ptr %6, align 4
  br label %6401

6397:                                             ; preds = %6367
  %6398 = landingpad { ptr, i32 }
          cleanup
  %6399 = extractvalue { ptr, i32 } %6398, 0
  store ptr %6399, ptr %5, align 8
  %6400 = extractvalue { ptr, i32 } %6398, 1
  store i32 %6400, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %622) #8
  br label %6401

6401:                                             ; preds = %6397, %6393
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %623) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %623) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %622) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %621) #8
  br label %6402

6402:                                             ; preds = %6401, %6389
  call void @llvm.lifetime.end.p0(i64 32, ptr %621) #8
  br label %6464

6403:                                             ; preds = %6368
  %6404 = landingpad { ptr, i32 }
          cleanup
  %6405 = extractvalue { ptr, i32 } %6404, 0
  store ptr %6405, ptr %5, align 8
  %6406 = extractvalue { ptr, i32 } %6404, 1
  store i32 %6406, ptr %6, align 4
  br label %6463

6407:                                             ; preds = %6370
  call void @llvm.lifetime.start.p0(i64 8, ptr %624) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %624)
          to label %6408 unwind label %6413

6408:                                             ; preds = %6407
  call void @llvm.lifetime.start.p0(i64 8, ptr %625) #8
  %6409 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %620)
          to label %6410 unwind label %6417

6410:                                             ; preds = %6408
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %625, i32 noundef 1, ptr noundef @.str.3, i32 noundef 138, ptr noundef %6409)
          to label %6411 unwind label %6417

6411:                                             ; preds = %6410
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %625, ptr noundef nonnull align 8 dereferenceable(8) %624)
          to label %6412 unwind label %6421

6412:                                             ; preds = %6411
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %625) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %625) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %624) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %624) #8
  br label %6427

6413:                                             ; preds = %6407
  %6414 = landingpad { ptr, i32 }
          cleanup
  %6415 = extractvalue { ptr, i32 } %6414, 0
  store ptr %6415, ptr %5, align 8
  %6416 = extractvalue { ptr, i32 } %6414, 1
  store i32 %6416, ptr %6, align 4
  br label %6426

6417:                                             ; preds = %6410, %6408
  %6418 = landingpad { ptr, i32 }
          cleanup
  %6419 = extractvalue { ptr, i32 } %6418, 0
  store ptr %6419, ptr %5, align 8
  %6420 = extractvalue { ptr, i32 } %6418, 1
  store i32 %6420, ptr %6, align 4
  br label %6425

6421:                                             ; preds = %6411
  %6422 = landingpad { ptr, i32 }
          cleanup
  %6423 = extractvalue { ptr, i32 } %6422, 0
  store ptr %6423, ptr %5, align 8
  %6424 = extractvalue { ptr, i32 } %6422, 1
  store i32 %6424, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %625) #8
  br label %6425

6425:                                             ; preds = %6421, %6417
  call void @llvm.lifetime.end.p0(i64 8, ptr %625) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %624) #8
  br label %6426

6426:                                             ; preds = %6425, %6413
  call void @llvm.lifetime.end.p0(i64 8, ptr %624) #8
  br label %6463

6427:                                             ; preds = %6412, %6371
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %620) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %620) #8
  %6428 = load ptr, ptr %619, align 8, !tbaa !5
  %6429 = icmp eq ptr %6428, null
  br i1 %6429, label %6431, label %6430

6430:                                             ; preds = %6427
  call void @_ZdaPv(ptr noundef %6428) #10
  br label %6431

6431:                                             ; preds = %6430, %6427
  call void @llvm.lifetime.end.p0(i64 8, ptr %619) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %617) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %616) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %616) #8
  br label %6432

6432:                                             ; preds = %6431
  br label %6433

6433:                                             ; preds = %6432
  br label %6434

6434:                                             ; preds = %6433
  call void @llvm.lifetime.start.p0(i64 392, ptr %626) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %626)
  %6435 = getelementptr inbounds i8, ptr %626, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %6435, ptr noundef @.str.51, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %6436 unwind label %6468

6436:                                             ; preds = %6434
  call void @llvm.lifetime.start.p0(i64 4, ptr %627) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %628) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %628, ptr noundef nonnull align 8 dereferenceable(128) %626)
          to label %6437 unwind label %6472

6437:                                             ; preds = %6436
  %6438 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %628) #8
  %6439 = add i64 %6438, 3
  %6440 = trunc i64 %6439 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %628) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %628) #8
  store i32 %6440, ptr %627, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %629) #8
  %6441 = load i32, ptr %627, align 4, !tbaa !11
  %6442 = sext i32 %6441 to i64
  %6443 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %6442) #9
          to label %6444 unwind label %6476

6444:                                             ; preds = %6437
  store ptr %6443, ptr %629, align 8, !tbaa !5
  %6445 = load ptr, ptr %629, align 8, !tbaa !5
  %6446 = load i32, ptr %627, align 4, !tbaa !11
  %6447 = sub nsw i32 %6446, 1
  %6448 = sext i32 %6447 to i64
  %6449 = getelementptr inbounds i8, ptr %6445, i64 %6448
  store i8 0, ptr %6449, align 1, !tbaa !13
  %6450 = load ptr, ptr %629, align 8, !tbaa !5
  %6451 = load i32, ptr %627, align 4, !tbaa !11
  %6452 = sub nsw i32 %6451, 2
  %6453 = sext i32 %6452 to i64
  %6454 = load double, ptr %3, align 8, !tbaa !9
  %6455 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %6450, i64 noundef %6453, ptr noundef @.str.51, double noundef %6454) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %630) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %631) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %631, ptr noundef nonnull align 8 dereferenceable(128) %626)
          to label %6456 unwind label %6480

6456:                                             ; preds = %6444
  call void @llvm.lifetime.start.p0(i64 32, ptr %632) #8
  %6457 = load ptr, ptr %629, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %633) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %633) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %632, ptr noundef %6457, ptr noundef nonnull align 1 dereferenceable(1) %633)
          to label %6458 unwind label %6484

6458:                                             ; preds = %6456
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %630, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %631, ptr noundef nonnull align 8 dereferenceable(32) %632)
          to label %6459 unwind label %6488

6459:                                             ; preds = %6458
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %632) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %633) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %633) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %632) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %631) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %631) #8
  %6460 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %630)
          to label %6461 unwind label %6494

6461:                                             ; preds = %6459
  br i1 %6460, label %6462, label %6498

6462:                                             ; preds = %6461
  br label %6518

6463:                                             ; preds = %6426, %6403
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %620) #8
  br label %6464

6464:                                             ; preds = %6463, %6402
  call void @llvm.lifetime.end.p0(i64 16, ptr %620) #8
  br label %6465

6465:                                             ; preds = %6464, %6385
  call void @llvm.lifetime.end.p0(i64 8, ptr %619) #8
  br label %6466

6466:                                             ; preds = %6465, %6381
  call void @llvm.lifetime.end.p0(i64 4, ptr %617) #8
  br label %6467

6467:                                             ; preds = %6466, %6377
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %616) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %616) #8
  br label %7986

6468:                                             ; preds = %6434
  %6469 = landingpad { ptr, i32 }
          cleanup
  %6470 = extractvalue { ptr, i32 } %6469, 0
  store ptr %6470, ptr %5, align 8
  %6471 = extractvalue { ptr, i32 } %6469, 1
  store i32 %6471, ptr %6, align 4
  br label %6558

6472:                                             ; preds = %6436
  %6473 = landingpad { ptr, i32 }
          cleanup
  %6474 = extractvalue { ptr, i32 } %6473, 0
  store ptr %6474, ptr %5, align 8
  %6475 = extractvalue { ptr, i32 } %6473, 1
  store i32 %6475, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %628) #8
  br label %6557

6476:                                             ; preds = %6437
  %6477 = landingpad { ptr, i32 }
          cleanup
  %6478 = extractvalue { ptr, i32 } %6477, 0
  store ptr %6478, ptr %5, align 8
  %6479 = extractvalue { ptr, i32 } %6477, 1
  store i32 %6479, ptr %6, align 4
  br label %6556

6480:                                             ; preds = %6444
  %6481 = landingpad { ptr, i32 }
          cleanup
  %6482 = extractvalue { ptr, i32 } %6481, 0
  store ptr %6482, ptr %5, align 8
  %6483 = extractvalue { ptr, i32 } %6481, 1
  store i32 %6483, ptr %6, align 4
  br label %6493

6484:                                             ; preds = %6456
  %6485 = landingpad { ptr, i32 }
          cleanup
  %6486 = extractvalue { ptr, i32 } %6485, 0
  store ptr %6486, ptr %5, align 8
  %6487 = extractvalue { ptr, i32 } %6485, 1
  store i32 %6487, ptr %6, align 4
  br label %6492

6488:                                             ; preds = %6458
  %6489 = landingpad { ptr, i32 }
          cleanup
  %6490 = extractvalue { ptr, i32 } %6489, 0
  store ptr %6490, ptr %5, align 8
  %6491 = extractvalue { ptr, i32 } %6489, 1
  store i32 %6491, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %632) #8
  br label %6492

6492:                                             ; preds = %6488, %6484
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %633) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %633) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %632) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %631) #8
  br label %6493

6493:                                             ; preds = %6492, %6480
  call void @llvm.lifetime.end.p0(i64 32, ptr %631) #8
  br label %6555

6494:                                             ; preds = %6459
  %6495 = landingpad { ptr, i32 }
          cleanup
  %6496 = extractvalue { ptr, i32 } %6495, 0
  store ptr %6496, ptr %5, align 8
  %6497 = extractvalue { ptr, i32 } %6495, 1
  store i32 %6497, ptr %6, align 4
  br label %6554

6498:                                             ; preds = %6461
  call void @llvm.lifetime.start.p0(i64 8, ptr %634) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %634)
          to label %6499 unwind label %6504

6499:                                             ; preds = %6498
  call void @llvm.lifetime.start.p0(i64 8, ptr %635) #8
  %6500 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %630)
          to label %6501 unwind label %6508

6501:                                             ; preds = %6499
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %635, i32 noundef 1, ptr noundef @.str.3, i32 noundef 139, ptr noundef %6500)
          to label %6502 unwind label %6508

6502:                                             ; preds = %6501
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %635, ptr noundef nonnull align 8 dereferenceable(8) %634)
          to label %6503 unwind label %6512

6503:                                             ; preds = %6502
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %635) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %635) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %634) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %634) #8
  br label %6518

6504:                                             ; preds = %6498
  %6505 = landingpad { ptr, i32 }
          cleanup
  %6506 = extractvalue { ptr, i32 } %6505, 0
  store ptr %6506, ptr %5, align 8
  %6507 = extractvalue { ptr, i32 } %6505, 1
  store i32 %6507, ptr %6, align 4
  br label %6517

6508:                                             ; preds = %6501, %6499
  %6509 = landingpad { ptr, i32 }
          cleanup
  %6510 = extractvalue { ptr, i32 } %6509, 0
  store ptr %6510, ptr %5, align 8
  %6511 = extractvalue { ptr, i32 } %6509, 1
  store i32 %6511, ptr %6, align 4
  br label %6516

6512:                                             ; preds = %6502
  %6513 = landingpad { ptr, i32 }
          cleanup
  %6514 = extractvalue { ptr, i32 } %6513, 0
  store ptr %6514, ptr %5, align 8
  %6515 = extractvalue { ptr, i32 } %6513, 1
  store i32 %6515, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %635) #8
  br label %6516

6516:                                             ; preds = %6512, %6508
  call void @llvm.lifetime.end.p0(i64 8, ptr %635) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %634) #8
  br label %6517

6517:                                             ; preds = %6516, %6504
  call void @llvm.lifetime.end.p0(i64 8, ptr %634) #8
  br label %6554

6518:                                             ; preds = %6503, %6462
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %630) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %630) #8
  %6519 = load ptr, ptr %629, align 8, !tbaa !5
  %6520 = icmp eq ptr %6519, null
  br i1 %6520, label %6522, label %6521

6521:                                             ; preds = %6518
  call void @_ZdaPv(ptr noundef %6519) #10
  br label %6522

6522:                                             ; preds = %6521, %6518
  call void @llvm.lifetime.end.p0(i64 8, ptr %629) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %627) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %626) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %626) #8
  br label %6523

6523:                                             ; preds = %6522
  br label %6524

6524:                                             ; preds = %6523
  br label %6525

6525:                                             ; preds = %6524
  call void @llvm.lifetime.start.p0(i64 392, ptr %636) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %636)
  %6526 = getelementptr inbounds i8, ptr %636, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %6526, ptr noundef @.str.52, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %6527 unwind label %6559

6527:                                             ; preds = %6525
  call void @llvm.lifetime.start.p0(i64 4, ptr %637) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %638) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %638, ptr noundef nonnull align 8 dereferenceable(128) %636)
          to label %6528 unwind label %6563

6528:                                             ; preds = %6527
  %6529 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %638) #8
  %6530 = add i64 %6529, 3
  %6531 = trunc i64 %6530 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %638) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %638) #8
  store i32 %6531, ptr %637, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %639) #8
  %6532 = load i32, ptr %637, align 4, !tbaa !11
  %6533 = sext i32 %6532 to i64
  %6534 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %6533) #9
          to label %6535 unwind label %6567

6535:                                             ; preds = %6528
  store ptr %6534, ptr %639, align 8, !tbaa !5
  %6536 = load ptr, ptr %639, align 8, !tbaa !5
  %6537 = load i32, ptr %637, align 4, !tbaa !11
  %6538 = sub nsw i32 %6537, 1
  %6539 = sext i32 %6538 to i64
  %6540 = getelementptr inbounds i8, ptr %6536, i64 %6539
  store i8 0, ptr %6540, align 1, !tbaa !13
  %6541 = load ptr, ptr %639, align 8, !tbaa !5
  %6542 = load i32, ptr %637, align 4, !tbaa !11
  %6543 = sub nsw i32 %6542, 2
  %6544 = sext i32 %6543 to i64
  %6545 = load double, ptr %3, align 8, !tbaa !9
  %6546 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %6541, i64 noundef %6544, ptr noundef @.str.52, double noundef %6545) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %640) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %641) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %641, ptr noundef nonnull align 8 dereferenceable(128) %636)
          to label %6547 unwind label %6571

6547:                                             ; preds = %6535
  call void @llvm.lifetime.start.p0(i64 32, ptr %642) #8
  %6548 = load ptr, ptr %639, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %643) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %643) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %642, ptr noundef %6548, ptr noundef nonnull align 1 dereferenceable(1) %643)
          to label %6549 unwind label %6575

6549:                                             ; preds = %6547
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %640, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %641, ptr noundef nonnull align 8 dereferenceable(32) %642)
          to label %6550 unwind label %6579

6550:                                             ; preds = %6549
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %642) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %643) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %643) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %642) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %641) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %641) #8
  %6551 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %640)
          to label %6552 unwind label %6585

6552:                                             ; preds = %6550
  br i1 %6551, label %6553, label %6589

6553:                                             ; preds = %6552
  br label %6609

6554:                                             ; preds = %6517, %6494
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %630) #8
  br label %6555

6555:                                             ; preds = %6554, %6493
  call void @llvm.lifetime.end.p0(i64 16, ptr %630) #8
  br label %6556

6556:                                             ; preds = %6555, %6476
  call void @llvm.lifetime.end.p0(i64 8, ptr %629) #8
  br label %6557

6557:                                             ; preds = %6556, %6472
  call void @llvm.lifetime.end.p0(i64 4, ptr %627) #8
  br label %6558

6558:                                             ; preds = %6557, %6468
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %626) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %626) #8
  br label %7986

6559:                                             ; preds = %6525
  %6560 = landingpad { ptr, i32 }
          cleanup
  %6561 = extractvalue { ptr, i32 } %6560, 0
  store ptr %6561, ptr %5, align 8
  %6562 = extractvalue { ptr, i32 } %6560, 1
  store i32 %6562, ptr %6, align 4
  br label %6649

6563:                                             ; preds = %6527
  %6564 = landingpad { ptr, i32 }
          cleanup
  %6565 = extractvalue { ptr, i32 } %6564, 0
  store ptr %6565, ptr %5, align 8
  %6566 = extractvalue { ptr, i32 } %6564, 1
  store i32 %6566, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %638) #8
  br label %6648

6567:                                             ; preds = %6528
  %6568 = landingpad { ptr, i32 }
          cleanup
  %6569 = extractvalue { ptr, i32 } %6568, 0
  store ptr %6569, ptr %5, align 8
  %6570 = extractvalue { ptr, i32 } %6568, 1
  store i32 %6570, ptr %6, align 4
  br label %6647

6571:                                             ; preds = %6535
  %6572 = landingpad { ptr, i32 }
          cleanup
  %6573 = extractvalue { ptr, i32 } %6572, 0
  store ptr %6573, ptr %5, align 8
  %6574 = extractvalue { ptr, i32 } %6572, 1
  store i32 %6574, ptr %6, align 4
  br label %6584

6575:                                             ; preds = %6547
  %6576 = landingpad { ptr, i32 }
          cleanup
  %6577 = extractvalue { ptr, i32 } %6576, 0
  store ptr %6577, ptr %5, align 8
  %6578 = extractvalue { ptr, i32 } %6576, 1
  store i32 %6578, ptr %6, align 4
  br label %6583

6579:                                             ; preds = %6549
  %6580 = landingpad { ptr, i32 }
          cleanup
  %6581 = extractvalue { ptr, i32 } %6580, 0
  store ptr %6581, ptr %5, align 8
  %6582 = extractvalue { ptr, i32 } %6580, 1
  store i32 %6582, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %642) #8
  br label %6583

6583:                                             ; preds = %6579, %6575
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %643) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %643) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %642) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %641) #8
  br label %6584

6584:                                             ; preds = %6583, %6571
  call void @llvm.lifetime.end.p0(i64 32, ptr %641) #8
  br label %6646

6585:                                             ; preds = %6550
  %6586 = landingpad { ptr, i32 }
          cleanup
  %6587 = extractvalue { ptr, i32 } %6586, 0
  store ptr %6587, ptr %5, align 8
  %6588 = extractvalue { ptr, i32 } %6586, 1
  store i32 %6588, ptr %6, align 4
  br label %6645

6589:                                             ; preds = %6552
  call void @llvm.lifetime.start.p0(i64 8, ptr %644) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %644)
          to label %6590 unwind label %6595

6590:                                             ; preds = %6589
  call void @llvm.lifetime.start.p0(i64 8, ptr %645) #8
  %6591 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %640)
          to label %6592 unwind label %6599

6592:                                             ; preds = %6590
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %645, i32 noundef 1, ptr noundef @.str.3, i32 noundef 140, ptr noundef %6591)
          to label %6593 unwind label %6599

6593:                                             ; preds = %6592
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %645, ptr noundef nonnull align 8 dereferenceable(8) %644)
          to label %6594 unwind label %6603

6594:                                             ; preds = %6593
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %645) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %645) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %644) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %644) #8
  br label %6609

6595:                                             ; preds = %6589
  %6596 = landingpad { ptr, i32 }
          cleanup
  %6597 = extractvalue { ptr, i32 } %6596, 0
  store ptr %6597, ptr %5, align 8
  %6598 = extractvalue { ptr, i32 } %6596, 1
  store i32 %6598, ptr %6, align 4
  br label %6608

6599:                                             ; preds = %6592, %6590
  %6600 = landingpad { ptr, i32 }
          cleanup
  %6601 = extractvalue { ptr, i32 } %6600, 0
  store ptr %6601, ptr %5, align 8
  %6602 = extractvalue { ptr, i32 } %6600, 1
  store i32 %6602, ptr %6, align 4
  br label %6607

6603:                                             ; preds = %6593
  %6604 = landingpad { ptr, i32 }
          cleanup
  %6605 = extractvalue { ptr, i32 } %6604, 0
  store ptr %6605, ptr %5, align 8
  %6606 = extractvalue { ptr, i32 } %6604, 1
  store i32 %6606, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %645) #8
  br label %6607

6607:                                             ; preds = %6603, %6599
  call void @llvm.lifetime.end.p0(i64 8, ptr %645) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %644) #8
  br label %6608

6608:                                             ; preds = %6607, %6595
  call void @llvm.lifetime.end.p0(i64 8, ptr %644) #8
  br label %6645

6609:                                             ; preds = %6594, %6553
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %640) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %640) #8
  %6610 = load ptr, ptr %639, align 8, !tbaa !5
  %6611 = icmp eq ptr %6610, null
  br i1 %6611, label %6613, label %6612

6612:                                             ; preds = %6609
  call void @_ZdaPv(ptr noundef %6610) #10
  br label %6613

6613:                                             ; preds = %6612, %6609
  call void @llvm.lifetime.end.p0(i64 8, ptr %639) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %637) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %636) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %636) #8
  br label %6614

6614:                                             ; preds = %6613
  br label %6615

6615:                                             ; preds = %6614
  br label %6616

6616:                                             ; preds = %6615
  call void @llvm.lifetime.start.p0(i64 392, ptr %646) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %646)
  %6617 = getelementptr inbounds i8, ptr %646, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %6617, ptr noundef @.str.53, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %6618 unwind label %6650

6618:                                             ; preds = %6616
  call void @llvm.lifetime.start.p0(i64 4, ptr %647) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %648) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %648, ptr noundef nonnull align 8 dereferenceable(128) %646)
          to label %6619 unwind label %6654

6619:                                             ; preds = %6618
  %6620 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %648) #8
  %6621 = add i64 %6620, 3
  %6622 = trunc i64 %6621 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %648) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %648) #8
  store i32 %6622, ptr %647, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %649) #8
  %6623 = load i32, ptr %647, align 4, !tbaa !11
  %6624 = sext i32 %6623 to i64
  %6625 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %6624) #9
          to label %6626 unwind label %6658

6626:                                             ; preds = %6619
  store ptr %6625, ptr %649, align 8, !tbaa !5
  %6627 = load ptr, ptr %649, align 8, !tbaa !5
  %6628 = load i32, ptr %647, align 4, !tbaa !11
  %6629 = sub nsw i32 %6628, 1
  %6630 = sext i32 %6629 to i64
  %6631 = getelementptr inbounds i8, ptr %6627, i64 %6630
  store i8 0, ptr %6631, align 1, !tbaa !13
  %6632 = load ptr, ptr %649, align 8, !tbaa !5
  %6633 = load i32, ptr %647, align 4, !tbaa !11
  %6634 = sub nsw i32 %6633, 2
  %6635 = sext i32 %6634 to i64
  %6636 = load double, ptr %3, align 8, !tbaa !9
  %6637 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %6632, i64 noundef %6635, ptr noundef @.str.53, double noundef %6636) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %650) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %651) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %651, ptr noundef nonnull align 8 dereferenceable(128) %646)
          to label %6638 unwind label %6662

6638:                                             ; preds = %6626
  call void @llvm.lifetime.start.p0(i64 32, ptr %652) #8
  %6639 = load ptr, ptr %649, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %653) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %653) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %652, ptr noundef %6639, ptr noundef nonnull align 1 dereferenceable(1) %653)
          to label %6640 unwind label %6666

6640:                                             ; preds = %6638
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %650, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %651, ptr noundef nonnull align 8 dereferenceable(32) %652)
          to label %6641 unwind label %6670

6641:                                             ; preds = %6640
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %652) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %653) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %653) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %652) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %651) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %651) #8
  %6642 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %650)
          to label %6643 unwind label %6676

6643:                                             ; preds = %6641
  br i1 %6642, label %6644, label %6680

6644:                                             ; preds = %6643
  br label %6700

6645:                                             ; preds = %6608, %6585
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %640) #8
  br label %6646

6646:                                             ; preds = %6645, %6584
  call void @llvm.lifetime.end.p0(i64 16, ptr %640) #8
  br label %6647

6647:                                             ; preds = %6646, %6567
  call void @llvm.lifetime.end.p0(i64 8, ptr %639) #8
  br label %6648

6648:                                             ; preds = %6647, %6563
  call void @llvm.lifetime.end.p0(i64 4, ptr %637) #8
  br label %6649

6649:                                             ; preds = %6648, %6559
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %636) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %636) #8
  br label %7986

6650:                                             ; preds = %6616
  %6651 = landingpad { ptr, i32 }
          cleanup
  %6652 = extractvalue { ptr, i32 } %6651, 0
  store ptr %6652, ptr %5, align 8
  %6653 = extractvalue { ptr, i32 } %6651, 1
  store i32 %6653, ptr %6, align 4
  br label %6740

6654:                                             ; preds = %6618
  %6655 = landingpad { ptr, i32 }
          cleanup
  %6656 = extractvalue { ptr, i32 } %6655, 0
  store ptr %6656, ptr %5, align 8
  %6657 = extractvalue { ptr, i32 } %6655, 1
  store i32 %6657, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %648) #8
  br label %6739

6658:                                             ; preds = %6619
  %6659 = landingpad { ptr, i32 }
          cleanup
  %6660 = extractvalue { ptr, i32 } %6659, 0
  store ptr %6660, ptr %5, align 8
  %6661 = extractvalue { ptr, i32 } %6659, 1
  store i32 %6661, ptr %6, align 4
  br label %6738

6662:                                             ; preds = %6626
  %6663 = landingpad { ptr, i32 }
          cleanup
  %6664 = extractvalue { ptr, i32 } %6663, 0
  store ptr %6664, ptr %5, align 8
  %6665 = extractvalue { ptr, i32 } %6663, 1
  store i32 %6665, ptr %6, align 4
  br label %6675

6666:                                             ; preds = %6638
  %6667 = landingpad { ptr, i32 }
          cleanup
  %6668 = extractvalue { ptr, i32 } %6667, 0
  store ptr %6668, ptr %5, align 8
  %6669 = extractvalue { ptr, i32 } %6667, 1
  store i32 %6669, ptr %6, align 4
  br label %6674

6670:                                             ; preds = %6640
  %6671 = landingpad { ptr, i32 }
          cleanup
  %6672 = extractvalue { ptr, i32 } %6671, 0
  store ptr %6672, ptr %5, align 8
  %6673 = extractvalue { ptr, i32 } %6671, 1
  store i32 %6673, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %652) #8
  br label %6674

6674:                                             ; preds = %6670, %6666
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %653) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %653) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %652) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %651) #8
  br label %6675

6675:                                             ; preds = %6674, %6662
  call void @llvm.lifetime.end.p0(i64 32, ptr %651) #8
  br label %6737

6676:                                             ; preds = %6641
  %6677 = landingpad { ptr, i32 }
          cleanup
  %6678 = extractvalue { ptr, i32 } %6677, 0
  store ptr %6678, ptr %5, align 8
  %6679 = extractvalue { ptr, i32 } %6677, 1
  store i32 %6679, ptr %6, align 4
  br label %6736

6680:                                             ; preds = %6643
  call void @llvm.lifetime.start.p0(i64 8, ptr %654) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %654)
          to label %6681 unwind label %6686

6681:                                             ; preds = %6680
  call void @llvm.lifetime.start.p0(i64 8, ptr %655) #8
  %6682 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %650)
          to label %6683 unwind label %6690

6683:                                             ; preds = %6681
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %655, i32 noundef 1, ptr noundef @.str.3, i32 noundef 141, ptr noundef %6682)
          to label %6684 unwind label %6690

6684:                                             ; preds = %6683
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %655, ptr noundef nonnull align 8 dereferenceable(8) %654)
          to label %6685 unwind label %6694

6685:                                             ; preds = %6684
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %655) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %655) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %654) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %654) #8
  br label %6700

6686:                                             ; preds = %6680
  %6687 = landingpad { ptr, i32 }
          cleanup
  %6688 = extractvalue { ptr, i32 } %6687, 0
  store ptr %6688, ptr %5, align 8
  %6689 = extractvalue { ptr, i32 } %6687, 1
  store i32 %6689, ptr %6, align 4
  br label %6699

6690:                                             ; preds = %6683, %6681
  %6691 = landingpad { ptr, i32 }
          cleanup
  %6692 = extractvalue { ptr, i32 } %6691, 0
  store ptr %6692, ptr %5, align 8
  %6693 = extractvalue { ptr, i32 } %6691, 1
  store i32 %6693, ptr %6, align 4
  br label %6698

6694:                                             ; preds = %6684
  %6695 = landingpad { ptr, i32 }
          cleanup
  %6696 = extractvalue { ptr, i32 } %6695, 0
  store ptr %6696, ptr %5, align 8
  %6697 = extractvalue { ptr, i32 } %6695, 1
  store i32 %6697, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %655) #8
  br label %6698

6698:                                             ; preds = %6694, %6690
  call void @llvm.lifetime.end.p0(i64 8, ptr %655) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %654) #8
  br label %6699

6699:                                             ; preds = %6698, %6686
  call void @llvm.lifetime.end.p0(i64 8, ptr %654) #8
  br label %6736

6700:                                             ; preds = %6685, %6644
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %650) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %650) #8
  %6701 = load ptr, ptr %649, align 8, !tbaa !5
  %6702 = icmp eq ptr %6701, null
  br i1 %6702, label %6704, label %6703

6703:                                             ; preds = %6700
  call void @_ZdaPv(ptr noundef %6701) #10
  br label %6704

6704:                                             ; preds = %6703, %6700
  call void @llvm.lifetime.end.p0(i64 8, ptr %649) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %647) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %646) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %646) #8
  br label %6705

6705:                                             ; preds = %6704
  br label %6706

6706:                                             ; preds = %6705
  br label %6707

6707:                                             ; preds = %6706
  call void @llvm.lifetime.start.p0(i64 392, ptr %656) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %656)
  %6708 = getelementptr inbounds i8, ptr %656, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %6708, ptr noundef @.str.54, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %6709 unwind label %6741

6709:                                             ; preds = %6707
  call void @llvm.lifetime.start.p0(i64 4, ptr %657) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %658) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %658, ptr noundef nonnull align 8 dereferenceable(128) %656)
          to label %6710 unwind label %6745

6710:                                             ; preds = %6709
  %6711 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %658) #8
  %6712 = add i64 %6711, 3
  %6713 = trunc i64 %6712 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %658) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %658) #8
  store i32 %6713, ptr %657, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %659) #8
  %6714 = load i32, ptr %657, align 4, !tbaa !11
  %6715 = sext i32 %6714 to i64
  %6716 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %6715) #9
          to label %6717 unwind label %6749

6717:                                             ; preds = %6710
  store ptr %6716, ptr %659, align 8, !tbaa !5
  %6718 = load ptr, ptr %659, align 8, !tbaa !5
  %6719 = load i32, ptr %657, align 4, !tbaa !11
  %6720 = sub nsw i32 %6719, 1
  %6721 = sext i32 %6720 to i64
  %6722 = getelementptr inbounds i8, ptr %6718, i64 %6721
  store i8 0, ptr %6722, align 1, !tbaa !13
  %6723 = load ptr, ptr %659, align 8, !tbaa !5
  %6724 = load i32, ptr %657, align 4, !tbaa !11
  %6725 = sub nsw i32 %6724, 2
  %6726 = sext i32 %6725 to i64
  %6727 = load double, ptr %3, align 8, !tbaa !9
  %6728 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %6723, i64 noundef %6726, ptr noundef @.str.54, double noundef %6727) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %660) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %661) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %661, ptr noundef nonnull align 8 dereferenceable(128) %656)
          to label %6729 unwind label %6753

6729:                                             ; preds = %6717
  call void @llvm.lifetime.start.p0(i64 32, ptr %662) #8
  %6730 = load ptr, ptr %659, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %663) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %663) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %662, ptr noundef %6730, ptr noundef nonnull align 1 dereferenceable(1) %663)
          to label %6731 unwind label %6757

6731:                                             ; preds = %6729
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %660, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %661, ptr noundef nonnull align 8 dereferenceable(32) %662)
          to label %6732 unwind label %6761

6732:                                             ; preds = %6731
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %662) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %663) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %663) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %662) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %661) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %661) #8
  %6733 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %660)
          to label %6734 unwind label %6767

6734:                                             ; preds = %6732
  br i1 %6733, label %6735, label %6771

6735:                                             ; preds = %6734
  br label %6791

6736:                                             ; preds = %6699, %6676
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %650) #8
  br label %6737

6737:                                             ; preds = %6736, %6675
  call void @llvm.lifetime.end.p0(i64 16, ptr %650) #8
  br label %6738

6738:                                             ; preds = %6737, %6658
  call void @llvm.lifetime.end.p0(i64 8, ptr %649) #8
  br label %6739

6739:                                             ; preds = %6738, %6654
  call void @llvm.lifetime.end.p0(i64 4, ptr %647) #8
  br label %6740

6740:                                             ; preds = %6739, %6650
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %646) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %646) #8
  br label %7986

6741:                                             ; preds = %6707
  %6742 = landingpad { ptr, i32 }
          cleanup
  %6743 = extractvalue { ptr, i32 } %6742, 0
  store ptr %6743, ptr %5, align 8
  %6744 = extractvalue { ptr, i32 } %6742, 1
  store i32 %6744, ptr %6, align 4
  br label %6831

6745:                                             ; preds = %6709
  %6746 = landingpad { ptr, i32 }
          cleanup
  %6747 = extractvalue { ptr, i32 } %6746, 0
  store ptr %6747, ptr %5, align 8
  %6748 = extractvalue { ptr, i32 } %6746, 1
  store i32 %6748, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %658) #8
  br label %6830

6749:                                             ; preds = %6710
  %6750 = landingpad { ptr, i32 }
          cleanup
  %6751 = extractvalue { ptr, i32 } %6750, 0
  store ptr %6751, ptr %5, align 8
  %6752 = extractvalue { ptr, i32 } %6750, 1
  store i32 %6752, ptr %6, align 4
  br label %6829

6753:                                             ; preds = %6717
  %6754 = landingpad { ptr, i32 }
          cleanup
  %6755 = extractvalue { ptr, i32 } %6754, 0
  store ptr %6755, ptr %5, align 8
  %6756 = extractvalue { ptr, i32 } %6754, 1
  store i32 %6756, ptr %6, align 4
  br label %6766

6757:                                             ; preds = %6729
  %6758 = landingpad { ptr, i32 }
          cleanup
  %6759 = extractvalue { ptr, i32 } %6758, 0
  store ptr %6759, ptr %5, align 8
  %6760 = extractvalue { ptr, i32 } %6758, 1
  store i32 %6760, ptr %6, align 4
  br label %6765

6761:                                             ; preds = %6731
  %6762 = landingpad { ptr, i32 }
          cleanup
  %6763 = extractvalue { ptr, i32 } %6762, 0
  store ptr %6763, ptr %5, align 8
  %6764 = extractvalue { ptr, i32 } %6762, 1
  store i32 %6764, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %662) #8
  br label %6765

6765:                                             ; preds = %6761, %6757
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %663) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %663) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %662) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %661) #8
  br label %6766

6766:                                             ; preds = %6765, %6753
  call void @llvm.lifetime.end.p0(i64 32, ptr %661) #8
  br label %6828

6767:                                             ; preds = %6732
  %6768 = landingpad { ptr, i32 }
          cleanup
  %6769 = extractvalue { ptr, i32 } %6768, 0
  store ptr %6769, ptr %5, align 8
  %6770 = extractvalue { ptr, i32 } %6768, 1
  store i32 %6770, ptr %6, align 4
  br label %6827

6771:                                             ; preds = %6734
  call void @llvm.lifetime.start.p0(i64 8, ptr %664) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %664)
          to label %6772 unwind label %6777

6772:                                             ; preds = %6771
  call void @llvm.lifetime.start.p0(i64 8, ptr %665) #8
  %6773 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %660)
          to label %6774 unwind label %6781

6774:                                             ; preds = %6772
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %665, i32 noundef 1, ptr noundef @.str.3, i32 noundef 142, ptr noundef %6773)
          to label %6775 unwind label %6781

6775:                                             ; preds = %6774
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %665, ptr noundef nonnull align 8 dereferenceable(8) %664)
          to label %6776 unwind label %6785

6776:                                             ; preds = %6775
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %665) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %665) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %664) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %664) #8
  br label %6791

6777:                                             ; preds = %6771
  %6778 = landingpad { ptr, i32 }
          cleanup
  %6779 = extractvalue { ptr, i32 } %6778, 0
  store ptr %6779, ptr %5, align 8
  %6780 = extractvalue { ptr, i32 } %6778, 1
  store i32 %6780, ptr %6, align 4
  br label %6790

6781:                                             ; preds = %6774, %6772
  %6782 = landingpad { ptr, i32 }
          cleanup
  %6783 = extractvalue { ptr, i32 } %6782, 0
  store ptr %6783, ptr %5, align 8
  %6784 = extractvalue { ptr, i32 } %6782, 1
  store i32 %6784, ptr %6, align 4
  br label %6789

6785:                                             ; preds = %6775
  %6786 = landingpad { ptr, i32 }
          cleanup
  %6787 = extractvalue { ptr, i32 } %6786, 0
  store ptr %6787, ptr %5, align 8
  %6788 = extractvalue { ptr, i32 } %6786, 1
  store i32 %6788, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %665) #8
  br label %6789

6789:                                             ; preds = %6785, %6781
  call void @llvm.lifetime.end.p0(i64 8, ptr %665) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %664) #8
  br label %6790

6790:                                             ; preds = %6789, %6777
  call void @llvm.lifetime.end.p0(i64 8, ptr %664) #8
  br label %6827

6791:                                             ; preds = %6776, %6735
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %660) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %660) #8
  %6792 = load ptr, ptr %659, align 8, !tbaa !5
  %6793 = icmp eq ptr %6792, null
  br i1 %6793, label %6795, label %6794

6794:                                             ; preds = %6791
  call void @_ZdaPv(ptr noundef %6792) #10
  br label %6795

6795:                                             ; preds = %6794, %6791
  call void @llvm.lifetime.end.p0(i64 8, ptr %659) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %657) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %656) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %656) #8
  br label %6796

6796:                                             ; preds = %6795
  br label %6797

6797:                                             ; preds = %6796
  br label %6798

6798:                                             ; preds = %6797
  call void @llvm.lifetime.start.p0(i64 392, ptr %666) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %666)
  %6799 = getelementptr inbounds i8, ptr %666, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %6799, ptr noundef @.str.55, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %6800 unwind label %6832

6800:                                             ; preds = %6798
  call void @llvm.lifetime.start.p0(i64 4, ptr %667) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %668) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %668, ptr noundef nonnull align 8 dereferenceable(128) %666)
          to label %6801 unwind label %6836

6801:                                             ; preds = %6800
  %6802 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %668) #8
  %6803 = add i64 %6802, 3
  %6804 = trunc i64 %6803 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %668) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %668) #8
  store i32 %6804, ptr %667, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %669) #8
  %6805 = load i32, ptr %667, align 4, !tbaa !11
  %6806 = sext i32 %6805 to i64
  %6807 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %6806) #9
          to label %6808 unwind label %6840

6808:                                             ; preds = %6801
  store ptr %6807, ptr %669, align 8, !tbaa !5
  %6809 = load ptr, ptr %669, align 8, !tbaa !5
  %6810 = load i32, ptr %667, align 4, !tbaa !11
  %6811 = sub nsw i32 %6810, 1
  %6812 = sext i32 %6811 to i64
  %6813 = getelementptr inbounds i8, ptr %6809, i64 %6812
  store i8 0, ptr %6813, align 1, !tbaa !13
  %6814 = load ptr, ptr %669, align 8, !tbaa !5
  %6815 = load i32, ptr %667, align 4, !tbaa !11
  %6816 = sub nsw i32 %6815, 2
  %6817 = sext i32 %6816 to i64
  %6818 = load double, ptr %3, align 8, !tbaa !9
  %6819 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %6814, i64 noundef %6817, ptr noundef @.str.55, double noundef %6818) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %670) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %671) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %671, ptr noundef nonnull align 8 dereferenceable(128) %666)
          to label %6820 unwind label %6844

6820:                                             ; preds = %6808
  call void @llvm.lifetime.start.p0(i64 32, ptr %672) #8
  %6821 = load ptr, ptr %669, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %673) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %673) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %672, ptr noundef %6821, ptr noundef nonnull align 1 dereferenceable(1) %673)
          to label %6822 unwind label %6848

6822:                                             ; preds = %6820
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %670, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %671, ptr noundef nonnull align 8 dereferenceable(32) %672)
          to label %6823 unwind label %6852

6823:                                             ; preds = %6822
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %672) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %673) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %673) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %672) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %671) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %671) #8
  %6824 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %670)
          to label %6825 unwind label %6858

6825:                                             ; preds = %6823
  br i1 %6824, label %6826, label %6862

6826:                                             ; preds = %6825
  br label %6882

6827:                                             ; preds = %6790, %6767
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %660) #8
  br label %6828

6828:                                             ; preds = %6827, %6766
  call void @llvm.lifetime.end.p0(i64 16, ptr %660) #8
  br label %6829

6829:                                             ; preds = %6828, %6749
  call void @llvm.lifetime.end.p0(i64 8, ptr %659) #8
  br label %6830

6830:                                             ; preds = %6829, %6745
  call void @llvm.lifetime.end.p0(i64 4, ptr %657) #8
  br label %6831

6831:                                             ; preds = %6830, %6741
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %656) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %656) #8
  br label %7986

6832:                                             ; preds = %6798
  %6833 = landingpad { ptr, i32 }
          cleanup
  %6834 = extractvalue { ptr, i32 } %6833, 0
  store ptr %6834, ptr %5, align 8
  %6835 = extractvalue { ptr, i32 } %6833, 1
  store i32 %6835, ptr %6, align 4
  br label %6922

6836:                                             ; preds = %6800
  %6837 = landingpad { ptr, i32 }
          cleanup
  %6838 = extractvalue { ptr, i32 } %6837, 0
  store ptr %6838, ptr %5, align 8
  %6839 = extractvalue { ptr, i32 } %6837, 1
  store i32 %6839, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %668) #8
  br label %6921

6840:                                             ; preds = %6801
  %6841 = landingpad { ptr, i32 }
          cleanup
  %6842 = extractvalue { ptr, i32 } %6841, 0
  store ptr %6842, ptr %5, align 8
  %6843 = extractvalue { ptr, i32 } %6841, 1
  store i32 %6843, ptr %6, align 4
  br label %6920

6844:                                             ; preds = %6808
  %6845 = landingpad { ptr, i32 }
          cleanup
  %6846 = extractvalue { ptr, i32 } %6845, 0
  store ptr %6846, ptr %5, align 8
  %6847 = extractvalue { ptr, i32 } %6845, 1
  store i32 %6847, ptr %6, align 4
  br label %6857

6848:                                             ; preds = %6820
  %6849 = landingpad { ptr, i32 }
          cleanup
  %6850 = extractvalue { ptr, i32 } %6849, 0
  store ptr %6850, ptr %5, align 8
  %6851 = extractvalue { ptr, i32 } %6849, 1
  store i32 %6851, ptr %6, align 4
  br label %6856

6852:                                             ; preds = %6822
  %6853 = landingpad { ptr, i32 }
          cleanup
  %6854 = extractvalue { ptr, i32 } %6853, 0
  store ptr %6854, ptr %5, align 8
  %6855 = extractvalue { ptr, i32 } %6853, 1
  store i32 %6855, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %672) #8
  br label %6856

6856:                                             ; preds = %6852, %6848
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %673) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %673) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %672) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %671) #8
  br label %6857

6857:                                             ; preds = %6856, %6844
  call void @llvm.lifetime.end.p0(i64 32, ptr %671) #8
  br label %6919

6858:                                             ; preds = %6823
  %6859 = landingpad { ptr, i32 }
          cleanup
  %6860 = extractvalue { ptr, i32 } %6859, 0
  store ptr %6860, ptr %5, align 8
  %6861 = extractvalue { ptr, i32 } %6859, 1
  store i32 %6861, ptr %6, align 4
  br label %6918

6862:                                             ; preds = %6825
  call void @llvm.lifetime.start.p0(i64 8, ptr %674) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %674)
          to label %6863 unwind label %6868

6863:                                             ; preds = %6862
  call void @llvm.lifetime.start.p0(i64 8, ptr %675) #8
  %6864 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %670)
          to label %6865 unwind label %6872

6865:                                             ; preds = %6863
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %675, i32 noundef 1, ptr noundef @.str.3, i32 noundef 143, ptr noundef %6864)
          to label %6866 unwind label %6872

6866:                                             ; preds = %6865
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %675, ptr noundef nonnull align 8 dereferenceable(8) %674)
          to label %6867 unwind label %6876

6867:                                             ; preds = %6866
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %675) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %675) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %674) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %674) #8
  br label %6882

6868:                                             ; preds = %6862
  %6869 = landingpad { ptr, i32 }
          cleanup
  %6870 = extractvalue { ptr, i32 } %6869, 0
  store ptr %6870, ptr %5, align 8
  %6871 = extractvalue { ptr, i32 } %6869, 1
  store i32 %6871, ptr %6, align 4
  br label %6881

6872:                                             ; preds = %6865, %6863
  %6873 = landingpad { ptr, i32 }
          cleanup
  %6874 = extractvalue { ptr, i32 } %6873, 0
  store ptr %6874, ptr %5, align 8
  %6875 = extractvalue { ptr, i32 } %6873, 1
  store i32 %6875, ptr %6, align 4
  br label %6880

6876:                                             ; preds = %6866
  %6877 = landingpad { ptr, i32 }
          cleanup
  %6878 = extractvalue { ptr, i32 } %6877, 0
  store ptr %6878, ptr %5, align 8
  %6879 = extractvalue { ptr, i32 } %6877, 1
  store i32 %6879, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %675) #8
  br label %6880

6880:                                             ; preds = %6876, %6872
  call void @llvm.lifetime.end.p0(i64 8, ptr %675) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %674) #8
  br label %6881

6881:                                             ; preds = %6880, %6868
  call void @llvm.lifetime.end.p0(i64 8, ptr %674) #8
  br label %6918

6882:                                             ; preds = %6867, %6826
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %670) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %670) #8
  %6883 = load ptr, ptr %669, align 8, !tbaa !5
  %6884 = icmp eq ptr %6883, null
  br i1 %6884, label %6886, label %6885

6885:                                             ; preds = %6882
  call void @_ZdaPv(ptr noundef %6883) #10
  br label %6886

6886:                                             ; preds = %6885, %6882
  call void @llvm.lifetime.end.p0(i64 8, ptr %669) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %667) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %666) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %666) #8
  br label %6887

6887:                                             ; preds = %6886
  br label %6888

6888:                                             ; preds = %6887
  br label %6889

6889:                                             ; preds = %6888
  call void @llvm.lifetime.start.p0(i64 392, ptr %676) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %676)
  %6890 = getelementptr inbounds i8, ptr %676, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %6890, ptr noundef @.str.56, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %6891 unwind label %6923

6891:                                             ; preds = %6889
  call void @llvm.lifetime.start.p0(i64 4, ptr %677) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %678) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %678, ptr noundef nonnull align 8 dereferenceable(128) %676)
          to label %6892 unwind label %6927

6892:                                             ; preds = %6891
  %6893 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %678) #8
  %6894 = add i64 %6893, 3
  %6895 = trunc i64 %6894 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %678) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %678) #8
  store i32 %6895, ptr %677, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %679) #8
  %6896 = load i32, ptr %677, align 4, !tbaa !11
  %6897 = sext i32 %6896 to i64
  %6898 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %6897) #9
          to label %6899 unwind label %6931

6899:                                             ; preds = %6892
  store ptr %6898, ptr %679, align 8, !tbaa !5
  %6900 = load ptr, ptr %679, align 8, !tbaa !5
  %6901 = load i32, ptr %677, align 4, !tbaa !11
  %6902 = sub nsw i32 %6901, 1
  %6903 = sext i32 %6902 to i64
  %6904 = getelementptr inbounds i8, ptr %6900, i64 %6903
  store i8 0, ptr %6904, align 1, !tbaa !13
  %6905 = load ptr, ptr %679, align 8, !tbaa !5
  %6906 = load i32, ptr %677, align 4, !tbaa !11
  %6907 = sub nsw i32 %6906, 2
  %6908 = sext i32 %6907 to i64
  %6909 = load double, ptr %3, align 8, !tbaa !9
  %6910 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %6905, i64 noundef %6908, ptr noundef @.str.56, double noundef %6909) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %680) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %681) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %681, ptr noundef nonnull align 8 dereferenceable(128) %676)
          to label %6911 unwind label %6935

6911:                                             ; preds = %6899
  call void @llvm.lifetime.start.p0(i64 32, ptr %682) #8
  %6912 = load ptr, ptr %679, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %683) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %683) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %682, ptr noundef %6912, ptr noundef nonnull align 1 dereferenceable(1) %683)
          to label %6913 unwind label %6939

6913:                                             ; preds = %6911
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %680, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %681, ptr noundef nonnull align 8 dereferenceable(32) %682)
          to label %6914 unwind label %6943

6914:                                             ; preds = %6913
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %682) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %683) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %683) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %682) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %681) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %681) #8
  %6915 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %680)
          to label %6916 unwind label %6949

6916:                                             ; preds = %6914
  br i1 %6915, label %6917, label %6953

6917:                                             ; preds = %6916
  br label %6973

6918:                                             ; preds = %6881, %6858
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %670) #8
  br label %6919

6919:                                             ; preds = %6918, %6857
  call void @llvm.lifetime.end.p0(i64 16, ptr %670) #8
  br label %6920

6920:                                             ; preds = %6919, %6840
  call void @llvm.lifetime.end.p0(i64 8, ptr %669) #8
  br label %6921

6921:                                             ; preds = %6920, %6836
  call void @llvm.lifetime.end.p0(i64 4, ptr %667) #8
  br label %6922

6922:                                             ; preds = %6921, %6832
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %666) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %666) #8
  br label %7986

6923:                                             ; preds = %6889
  %6924 = landingpad { ptr, i32 }
          cleanup
  %6925 = extractvalue { ptr, i32 } %6924, 0
  store ptr %6925, ptr %5, align 8
  %6926 = extractvalue { ptr, i32 } %6924, 1
  store i32 %6926, ptr %6, align 4
  br label %7013

6927:                                             ; preds = %6891
  %6928 = landingpad { ptr, i32 }
          cleanup
  %6929 = extractvalue { ptr, i32 } %6928, 0
  store ptr %6929, ptr %5, align 8
  %6930 = extractvalue { ptr, i32 } %6928, 1
  store i32 %6930, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %678) #8
  br label %7012

6931:                                             ; preds = %6892
  %6932 = landingpad { ptr, i32 }
          cleanup
  %6933 = extractvalue { ptr, i32 } %6932, 0
  store ptr %6933, ptr %5, align 8
  %6934 = extractvalue { ptr, i32 } %6932, 1
  store i32 %6934, ptr %6, align 4
  br label %7011

6935:                                             ; preds = %6899
  %6936 = landingpad { ptr, i32 }
          cleanup
  %6937 = extractvalue { ptr, i32 } %6936, 0
  store ptr %6937, ptr %5, align 8
  %6938 = extractvalue { ptr, i32 } %6936, 1
  store i32 %6938, ptr %6, align 4
  br label %6948

6939:                                             ; preds = %6911
  %6940 = landingpad { ptr, i32 }
          cleanup
  %6941 = extractvalue { ptr, i32 } %6940, 0
  store ptr %6941, ptr %5, align 8
  %6942 = extractvalue { ptr, i32 } %6940, 1
  store i32 %6942, ptr %6, align 4
  br label %6947

6943:                                             ; preds = %6913
  %6944 = landingpad { ptr, i32 }
          cleanup
  %6945 = extractvalue { ptr, i32 } %6944, 0
  store ptr %6945, ptr %5, align 8
  %6946 = extractvalue { ptr, i32 } %6944, 1
  store i32 %6946, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %682) #8
  br label %6947

6947:                                             ; preds = %6943, %6939
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %683) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %683) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %682) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %681) #8
  br label %6948

6948:                                             ; preds = %6947, %6935
  call void @llvm.lifetime.end.p0(i64 32, ptr %681) #8
  br label %7010

6949:                                             ; preds = %6914
  %6950 = landingpad { ptr, i32 }
          cleanup
  %6951 = extractvalue { ptr, i32 } %6950, 0
  store ptr %6951, ptr %5, align 8
  %6952 = extractvalue { ptr, i32 } %6950, 1
  store i32 %6952, ptr %6, align 4
  br label %7009

6953:                                             ; preds = %6916
  call void @llvm.lifetime.start.p0(i64 8, ptr %684) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %684)
          to label %6954 unwind label %6959

6954:                                             ; preds = %6953
  call void @llvm.lifetime.start.p0(i64 8, ptr %685) #8
  %6955 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %680)
          to label %6956 unwind label %6963

6956:                                             ; preds = %6954
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %685, i32 noundef 1, ptr noundef @.str.3, i32 noundef 144, ptr noundef %6955)
          to label %6957 unwind label %6963

6957:                                             ; preds = %6956
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %685, ptr noundef nonnull align 8 dereferenceable(8) %684)
          to label %6958 unwind label %6967

6958:                                             ; preds = %6957
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %685) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %685) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %684) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %684) #8
  br label %6973

6959:                                             ; preds = %6953
  %6960 = landingpad { ptr, i32 }
          cleanup
  %6961 = extractvalue { ptr, i32 } %6960, 0
  store ptr %6961, ptr %5, align 8
  %6962 = extractvalue { ptr, i32 } %6960, 1
  store i32 %6962, ptr %6, align 4
  br label %6972

6963:                                             ; preds = %6956, %6954
  %6964 = landingpad { ptr, i32 }
          cleanup
  %6965 = extractvalue { ptr, i32 } %6964, 0
  store ptr %6965, ptr %5, align 8
  %6966 = extractvalue { ptr, i32 } %6964, 1
  store i32 %6966, ptr %6, align 4
  br label %6971

6967:                                             ; preds = %6957
  %6968 = landingpad { ptr, i32 }
          cleanup
  %6969 = extractvalue { ptr, i32 } %6968, 0
  store ptr %6969, ptr %5, align 8
  %6970 = extractvalue { ptr, i32 } %6968, 1
  store i32 %6970, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %685) #8
  br label %6971

6971:                                             ; preds = %6967, %6963
  call void @llvm.lifetime.end.p0(i64 8, ptr %685) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %684) #8
  br label %6972

6972:                                             ; preds = %6971, %6959
  call void @llvm.lifetime.end.p0(i64 8, ptr %684) #8
  br label %7009

6973:                                             ; preds = %6958, %6917
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %680) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %680) #8
  %6974 = load ptr, ptr %679, align 8, !tbaa !5
  %6975 = icmp eq ptr %6974, null
  br i1 %6975, label %6977, label %6976

6976:                                             ; preds = %6973
  call void @_ZdaPv(ptr noundef %6974) #10
  br label %6977

6977:                                             ; preds = %6976, %6973
  call void @llvm.lifetime.end.p0(i64 8, ptr %679) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %677) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %676) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %676) #8
  br label %6978

6978:                                             ; preds = %6977
  br label %6979

6979:                                             ; preds = %6978
  br label %6980

6980:                                             ; preds = %6979
  call void @llvm.lifetime.start.p0(i64 392, ptr %686) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %686)
  %6981 = getelementptr inbounds i8, ptr %686, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %6981, ptr noundef @.str.42, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %6982 unwind label %7014

6982:                                             ; preds = %6980
  call void @llvm.lifetime.start.p0(i64 4, ptr %687) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %688) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %688, ptr noundef nonnull align 8 dereferenceable(128) %686)
          to label %6983 unwind label %7018

6983:                                             ; preds = %6982
  %6984 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %688) #8
  %6985 = add i64 %6984, 3
  %6986 = trunc i64 %6985 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %688) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %688) #8
  store i32 %6986, ptr %687, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %689) #8
  %6987 = load i32, ptr %687, align 4, !tbaa !11
  %6988 = sext i32 %6987 to i64
  %6989 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %6988) #9
          to label %6990 unwind label %7022

6990:                                             ; preds = %6983
  store ptr %6989, ptr %689, align 8, !tbaa !5
  %6991 = load ptr, ptr %689, align 8, !tbaa !5
  %6992 = load i32, ptr %687, align 4, !tbaa !11
  %6993 = sub nsw i32 %6992, 1
  %6994 = sext i32 %6993 to i64
  %6995 = getelementptr inbounds i8, ptr %6991, i64 %6994
  store i8 0, ptr %6995, align 1, !tbaa !13
  %6996 = load ptr, ptr %689, align 8, !tbaa !5
  %6997 = load i32, ptr %687, align 4, !tbaa !11
  %6998 = sub nsw i32 %6997, 2
  %6999 = sext i32 %6998 to i64
  %7000 = load double, ptr %3, align 8, !tbaa !9
  %7001 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %6996, i64 noundef %6999, ptr noundef @.str.42, double noundef %7000) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %690) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %691) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %691, ptr noundef nonnull align 8 dereferenceable(128) %686)
          to label %7002 unwind label %7026

7002:                                             ; preds = %6990
  call void @llvm.lifetime.start.p0(i64 32, ptr %692) #8
  %7003 = load ptr, ptr %689, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %693) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %693) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %692, ptr noundef %7003, ptr noundef nonnull align 1 dereferenceable(1) %693)
          to label %7004 unwind label %7030

7004:                                             ; preds = %7002
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %690, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %691, ptr noundef nonnull align 8 dereferenceable(32) %692)
          to label %7005 unwind label %7034

7005:                                             ; preds = %7004
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %692) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %693) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %693) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %692) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %691) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %691) #8
  %7006 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %690)
          to label %7007 unwind label %7040

7007:                                             ; preds = %7005
  br i1 %7006, label %7008, label %7044

7008:                                             ; preds = %7007
  br label %7064

7009:                                             ; preds = %6972, %6949
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %680) #8
  br label %7010

7010:                                             ; preds = %7009, %6948
  call void @llvm.lifetime.end.p0(i64 16, ptr %680) #8
  br label %7011

7011:                                             ; preds = %7010, %6931
  call void @llvm.lifetime.end.p0(i64 8, ptr %679) #8
  br label %7012

7012:                                             ; preds = %7011, %6927
  call void @llvm.lifetime.end.p0(i64 4, ptr %677) #8
  br label %7013

7013:                                             ; preds = %7012, %6923
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %676) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %676) #8
  br label %7986

7014:                                             ; preds = %6980
  %7015 = landingpad { ptr, i32 }
          cleanup
  %7016 = extractvalue { ptr, i32 } %7015, 0
  store ptr %7016, ptr %5, align 8
  %7017 = extractvalue { ptr, i32 } %7015, 1
  store i32 %7017, ptr %6, align 4
  br label %7104

7018:                                             ; preds = %6982
  %7019 = landingpad { ptr, i32 }
          cleanup
  %7020 = extractvalue { ptr, i32 } %7019, 0
  store ptr %7020, ptr %5, align 8
  %7021 = extractvalue { ptr, i32 } %7019, 1
  store i32 %7021, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %688) #8
  br label %7103

7022:                                             ; preds = %6983
  %7023 = landingpad { ptr, i32 }
          cleanup
  %7024 = extractvalue { ptr, i32 } %7023, 0
  store ptr %7024, ptr %5, align 8
  %7025 = extractvalue { ptr, i32 } %7023, 1
  store i32 %7025, ptr %6, align 4
  br label %7102

7026:                                             ; preds = %6990
  %7027 = landingpad { ptr, i32 }
          cleanup
  %7028 = extractvalue { ptr, i32 } %7027, 0
  store ptr %7028, ptr %5, align 8
  %7029 = extractvalue { ptr, i32 } %7027, 1
  store i32 %7029, ptr %6, align 4
  br label %7039

7030:                                             ; preds = %7002
  %7031 = landingpad { ptr, i32 }
          cleanup
  %7032 = extractvalue { ptr, i32 } %7031, 0
  store ptr %7032, ptr %5, align 8
  %7033 = extractvalue { ptr, i32 } %7031, 1
  store i32 %7033, ptr %6, align 4
  br label %7038

7034:                                             ; preds = %7004
  %7035 = landingpad { ptr, i32 }
          cleanup
  %7036 = extractvalue { ptr, i32 } %7035, 0
  store ptr %7036, ptr %5, align 8
  %7037 = extractvalue { ptr, i32 } %7035, 1
  store i32 %7037, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %692) #8
  br label %7038

7038:                                             ; preds = %7034, %7030
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %693) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %693) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %692) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %691) #8
  br label %7039

7039:                                             ; preds = %7038, %7026
  call void @llvm.lifetime.end.p0(i64 32, ptr %691) #8
  br label %7101

7040:                                             ; preds = %7005
  %7041 = landingpad { ptr, i32 }
          cleanup
  %7042 = extractvalue { ptr, i32 } %7041, 0
  store ptr %7042, ptr %5, align 8
  %7043 = extractvalue { ptr, i32 } %7041, 1
  store i32 %7043, ptr %6, align 4
  br label %7100

7044:                                             ; preds = %7007
  call void @llvm.lifetime.start.p0(i64 8, ptr %694) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %694)
          to label %7045 unwind label %7050

7045:                                             ; preds = %7044
  call void @llvm.lifetime.start.p0(i64 8, ptr %695) #8
  %7046 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %690)
          to label %7047 unwind label %7054

7047:                                             ; preds = %7045
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %695, i32 noundef 1, ptr noundef @.str.3, i32 noundef 145, ptr noundef %7046)
          to label %7048 unwind label %7054

7048:                                             ; preds = %7047
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %695, ptr noundef nonnull align 8 dereferenceable(8) %694)
          to label %7049 unwind label %7058

7049:                                             ; preds = %7048
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %695) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %695) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %694) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %694) #8
  br label %7064

7050:                                             ; preds = %7044
  %7051 = landingpad { ptr, i32 }
          cleanup
  %7052 = extractvalue { ptr, i32 } %7051, 0
  store ptr %7052, ptr %5, align 8
  %7053 = extractvalue { ptr, i32 } %7051, 1
  store i32 %7053, ptr %6, align 4
  br label %7063

7054:                                             ; preds = %7047, %7045
  %7055 = landingpad { ptr, i32 }
          cleanup
  %7056 = extractvalue { ptr, i32 } %7055, 0
  store ptr %7056, ptr %5, align 8
  %7057 = extractvalue { ptr, i32 } %7055, 1
  store i32 %7057, ptr %6, align 4
  br label %7062

7058:                                             ; preds = %7048
  %7059 = landingpad { ptr, i32 }
          cleanup
  %7060 = extractvalue { ptr, i32 } %7059, 0
  store ptr %7060, ptr %5, align 8
  %7061 = extractvalue { ptr, i32 } %7059, 1
  store i32 %7061, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %695) #8
  br label %7062

7062:                                             ; preds = %7058, %7054
  call void @llvm.lifetime.end.p0(i64 8, ptr %695) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %694) #8
  br label %7063

7063:                                             ; preds = %7062, %7050
  call void @llvm.lifetime.end.p0(i64 8, ptr %694) #8
  br label %7100

7064:                                             ; preds = %7049, %7008
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %690) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %690) #8
  %7065 = load ptr, ptr %689, align 8, !tbaa !5
  %7066 = icmp eq ptr %7065, null
  br i1 %7066, label %7068, label %7067

7067:                                             ; preds = %7064
  call void @_ZdaPv(ptr noundef %7065) #10
  br label %7068

7068:                                             ; preds = %7067, %7064
  call void @llvm.lifetime.end.p0(i64 8, ptr %689) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %687) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %686) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %686) #8
  br label %7069

7069:                                             ; preds = %7068
  br label %7070

7070:                                             ; preds = %7069
  br label %7071

7071:                                             ; preds = %7070
  call void @llvm.lifetime.start.p0(i64 392, ptr %696) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %696)
  %7072 = getelementptr inbounds i8, ptr %696, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %7072, ptr noundef @.str.57, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %7073 unwind label %7105

7073:                                             ; preds = %7071
  call void @llvm.lifetime.start.p0(i64 4, ptr %697) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %698) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %698, ptr noundef nonnull align 8 dereferenceable(128) %696)
          to label %7074 unwind label %7109

7074:                                             ; preds = %7073
  %7075 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %698) #8
  %7076 = add i64 %7075, 3
  %7077 = trunc i64 %7076 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %698) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %698) #8
  store i32 %7077, ptr %697, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %699) #8
  %7078 = load i32, ptr %697, align 4, !tbaa !11
  %7079 = sext i32 %7078 to i64
  %7080 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %7079) #9
          to label %7081 unwind label %7113

7081:                                             ; preds = %7074
  store ptr %7080, ptr %699, align 8, !tbaa !5
  %7082 = load ptr, ptr %699, align 8, !tbaa !5
  %7083 = load i32, ptr %697, align 4, !tbaa !11
  %7084 = sub nsw i32 %7083, 1
  %7085 = sext i32 %7084 to i64
  %7086 = getelementptr inbounds i8, ptr %7082, i64 %7085
  store i8 0, ptr %7086, align 1, !tbaa !13
  %7087 = load ptr, ptr %699, align 8, !tbaa !5
  %7088 = load i32, ptr %697, align 4, !tbaa !11
  %7089 = sub nsw i32 %7088, 2
  %7090 = sext i32 %7089 to i64
  %7091 = load double, ptr %3, align 8, !tbaa !9
  %7092 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %7087, i64 noundef %7090, ptr noundef @.str.57, double noundef %7091) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %700) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %701) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %701, ptr noundef nonnull align 8 dereferenceable(128) %696)
          to label %7093 unwind label %7117

7093:                                             ; preds = %7081
  call void @llvm.lifetime.start.p0(i64 32, ptr %702) #8
  %7094 = load ptr, ptr %699, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %703) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %703) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %702, ptr noundef %7094, ptr noundef nonnull align 1 dereferenceable(1) %703)
          to label %7095 unwind label %7121

7095:                                             ; preds = %7093
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %700, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %701, ptr noundef nonnull align 8 dereferenceable(32) %702)
          to label %7096 unwind label %7125

7096:                                             ; preds = %7095
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %702) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %703) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %703) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %702) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %701) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %701) #8
  %7097 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %700)
          to label %7098 unwind label %7131

7098:                                             ; preds = %7096
  br i1 %7097, label %7099, label %7135

7099:                                             ; preds = %7098
  br label %7155

7100:                                             ; preds = %7063, %7040
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %690) #8
  br label %7101

7101:                                             ; preds = %7100, %7039
  call void @llvm.lifetime.end.p0(i64 16, ptr %690) #8
  br label %7102

7102:                                             ; preds = %7101, %7022
  call void @llvm.lifetime.end.p0(i64 8, ptr %689) #8
  br label %7103

7103:                                             ; preds = %7102, %7018
  call void @llvm.lifetime.end.p0(i64 4, ptr %687) #8
  br label %7104

7104:                                             ; preds = %7103, %7014
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %686) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %686) #8
  br label %7986

7105:                                             ; preds = %7071
  %7106 = landingpad { ptr, i32 }
          cleanup
  %7107 = extractvalue { ptr, i32 } %7106, 0
  store ptr %7107, ptr %5, align 8
  %7108 = extractvalue { ptr, i32 } %7106, 1
  store i32 %7108, ptr %6, align 4
  br label %7195

7109:                                             ; preds = %7073
  %7110 = landingpad { ptr, i32 }
          cleanup
  %7111 = extractvalue { ptr, i32 } %7110, 0
  store ptr %7111, ptr %5, align 8
  %7112 = extractvalue { ptr, i32 } %7110, 1
  store i32 %7112, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %698) #8
  br label %7194

7113:                                             ; preds = %7074
  %7114 = landingpad { ptr, i32 }
          cleanup
  %7115 = extractvalue { ptr, i32 } %7114, 0
  store ptr %7115, ptr %5, align 8
  %7116 = extractvalue { ptr, i32 } %7114, 1
  store i32 %7116, ptr %6, align 4
  br label %7193

7117:                                             ; preds = %7081
  %7118 = landingpad { ptr, i32 }
          cleanup
  %7119 = extractvalue { ptr, i32 } %7118, 0
  store ptr %7119, ptr %5, align 8
  %7120 = extractvalue { ptr, i32 } %7118, 1
  store i32 %7120, ptr %6, align 4
  br label %7130

7121:                                             ; preds = %7093
  %7122 = landingpad { ptr, i32 }
          cleanup
  %7123 = extractvalue { ptr, i32 } %7122, 0
  store ptr %7123, ptr %5, align 8
  %7124 = extractvalue { ptr, i32 } %7122, 1
  store i32 %7124, ptr %6, align 4
  br label %7129

7125:                                             ; preds = %7095
  %7126 = landingpad { ptr, i32 }
          cleanup
  %7127 = extractvalue { ptr, i32 } %7126, 0
  store ptr %7127, ptr %5, align 8
  %7128 = extractvalue { ptr, i32 } %7126, 1
  store i32 %7128, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %702) #8
  br label %7129

7129:                                             ; preds = %7125, %7121
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %703) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %703) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %702) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %701) #8
  br label %7130

7130:                                             ; preds = %7129, %7117
  call void @llvm.lifetime.end.p0(i64 32, ptr %701) #8
  br label %7192

7131:                                             ; preds = %7096
  %7132 = landingpad { ptr, i32 }
          cleanup
  %7133 = extractvalue { ptr, i32 } %7132, 0
  store ptr %7133, ptr %5, align 8
  %7134 = extractvalue { ptr, i32 } %7132, 1
  store i32 %7134, ptr %6, align 4
  br label %7191

7135:                                             ; preds = %7098
  call void @llvm.lifetime.start.p0(i64 8, ptr %704) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %704)
          to label %7136 unwind label %7141

7136:                                             ; preds = %7135
  call void @llvm.lifetime.start.p0(i64 8, ptr %705) #8
  %7137 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %700)
          to label %7138 unwind label %7145

7138:                                             ; preds = %7136
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %705, i32 noundef 1, ptr noundef @.str.3, i32 noundef 146, ptr noundef %7137)
          to label %7139 unwind label %7145

7139:                                             ; preds = %7138
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %705, ptr noundef nonnull align 8 dereferenceable(8) %704)
          to label %7140 unwind label %7149

7140:                                             ; preds = %7139
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %705) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %705) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %704) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %704) #8
  br label %7155

7141:                                             ; preds = %7135
  %7142 = landingpad { ptr, i32 }
          cleanup
  %7143 = extractvalue { ptr, i32 } %7142, 0
  store ptr %7143, ptr %5, align 8
  %7144 = extractvalue { ptr, i32 } %7142, 1
  store i32 %7144, ptr %6, align 4
  br label %7154

7145:                                             ; preds = %7138, %7136
  %7146 = landingpad { ptr, i32 }
          cleanup
  %7147 = extractvalue { ptr, i32 } %7146, 0
  store ptr %7147, ptr %5, align 8
  %7148 = extractvalue { ptr, i32 } %7146, 1
  store i32 %7148, ptr %6, align 4
  br label %7153

7149:                                             ; preds = %7139
  %7150 = landingpad { ptr, i32 }
          cleanup
  %7151 = extractvalue { ptr, i32 } %7150, 0
  store ptr %7151, ptr %5, align 8
  %7152 = extractvalue { ptr, i32 } %7150, 1
  store i32 %7152, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %705) #8
  br label %7153

7153:                                             ; preds = %7149, %7145
  call void @llvm.lifetime.end.p0(i64 8, ptr %705) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %704) #8
  br label %7154

7154:                                             ; preds = %7153, %7141
  call void @llvm.lifetime.end.p0(i64 8, ptr %704) #8
  br label %7191

7155:                                             ; preds = %7140, %7099
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %700) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %700) #8
  %7156 = load ptr, ptr %699, align 8, !tbaa !5
  %7157 = icmp eq ptr %7156, null
  br i1 %7157, label %7159, label %7158

7158:                                             ; preds = %7155
  call void @_ZdaPv(ptr noundef %7156) #10
  br label %7159

7159:                                             ; preds = %7158, %7155
  call void @llvm.lifetime.end.p0(i64 8, ptr %699) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %697) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %696) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %696) #8
  br label %7160

7160:                                             ; preds = %7159
  br label %7161

7161:                                             ; preds = %7160
  br label %7162

7162:                                             ; preds = %7161
  call void @llvm.lifetime.start.p0(i64 392, ptr %706) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %706)
  %7163 = getelementptr inbounds i8, ptr %706, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %7163, ptr noundef @.str.58, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %7164 unwind label %7196

7164:                                             ; preds = %7162
  call void @llvm.lifetime.start.p0(i64 4, ptr %707) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %708) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %708, ptr noundef nonnull align 8 dereferenceable(128) %706)
          to label %7165 unwind label %7200

7165:                                             ; preds = %7164
  %7166 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %708) #8
  %7167 = add i64 %7166, 3
  %7168 = trunc i64 %7167 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %708) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %708) #8
  store i32 %7168, ptr %707, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %709) #8
  %7169 = load i32, ptr %707, align 4, !tbaa !11
  %7170 = sext i32 %7169 to i64
  %7171 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %7170) #9
          to label %7172 unwind label %7204

7172:                                             ; preds = %7165
  store ptr %7171, ptr %709, align 8, !tbaa !5
  %7173 = load ptr, ptr %709, align 8, !tbaa !5
  %7174 = load i32, ptr %707, align 4, !tbaa !11
  %7175 = sub nsw i32 %7174, 1
  %7176 = sext i32 %7175 to i64
  %7177 = getelementptr inbounds i8, ptr %7173, i64 %7176
  store i8 0, ptr %7177, align 1, !tbaa !13
  %7178 = load ptr, ptr %709, align 8, !tbaa !5
  %7179 = load i32, ptr %707, align 4, !tbaa !11
  %7180 = sub nsw i32 %7179, 2
  %7181 = sext i32 %7180 to i64
  %7182 = load double, ptr %3, align 8, !tbaa !9
  %7183 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %7178, i64 noundef %7181, ptr noundef @.str.58, double noundef %7182) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %710) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %711) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %711, ptr noundef nonnull align 8 dereferenceable(128) %706)
          to label %7184 unwind label %7208

7184:                                             ; preds = %7172
  call void @llvm.lifetime.start.p0(i64 32, ptr %712) #8
  %7185 = load ptr, ptr %709, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %713) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %713) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %712, ptr noundef %7185, ptr noundef nonnull align 1 dereferenceable(1) %713)
          to label %7186 unwind label %7212

7186:                                             ; preds = %7184
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %710, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %711, ptr noundef nonnull align 8 dereferenceable(32) %712)
          to label %7187 unwind label %7216

7187:                                             ; preds = %7186
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %712) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %713) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %713) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %712) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %711) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %711) #8
  %7188 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %710)
          to label %7189 unwind label %7222

7189:                                             ; preds = %7187
  br i1 %7188, label %7190, label %7226

7190:                                             ; preds = %7189
  br label %7246

7191:                                             ; preds = %7154, %7131
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %700) #8
  br label %7192

7192:                                             ; preds = %7191, %7130
  call void @llvm.lifetime.end.p0(i64 16, ptr %700) #8
  br label %7193

7193:                                             ; preds = %7192, %7113
  call void @llvm.lifetime.end.p0(i64 8, ptr %699) #8
  br label %7194

7194:                                             ; preds = %7193, %7109
  call void @llvm.lifetime.end.p0(i64 4, ptr %697) #8
  br label %7195

7195:                                             ; preds = %7194, %7105
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %696) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %696) #8
  br label %7986

7196:                                             ; preds = %7162
  %7197 = landingpad { ptr, i32 }
          cleanup
  %7198 = extractvalue { ptr, i32 } %7197, 0
  store ptr %7198, ptr %5, align 8
  %7199 = extractvalue { ptr, i32 } %7197, 1
  store i32 %7199, ptr %6, align 4
  br label %7286

7200:                                             ; preds = %7164
  %7201 = landingpad { ptr, i32 }
          cleanup
  %7202 = extractvalue { ptr, i32 } %7201, 0
  store ptr %7202, ptr %5, align 8
  %7203 = extractvalue { ptr, i32 } %7201, 1
  store i32 %7203, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %708) #8
  br label %7285

7204:                                             ; preds = %7165
  %7205 = landingpad { ptr, i32 }
          cleanup
  %7206 = extractvalue { ptr, i32 } %7205, 0
  store ptr %7206, ptr %5, align 8
  %7207 = extractvalue { ptr, i32 } %7205, 1
  store i32 %7207, ptr %6, align 4
  br label %7284

7208:                                             ; preds = %7172
  %7209 = landingpad { ptr, i32 }
          cleanup
  %7210 = extractvalue { ptr, i32 } %7209, 0
  store ptr %7210, ptr %5, align 8
  %7211 = extractvalue { ptr, i32 } %7209, 1
  store i32 %7211, ptr %6, align 4
  br label %7221

7212:                                             ; preds = %7184
  %7213 = landingpad { ptr, i32 }
          cleanup
  %7214 = extractvalue { ptr, i32 } %7213, 0
  store ptr %7214, ptr %5, align 8
  %7215 = extractvalue { ptr, i32 } %7213, 1
  store i32 %7215, ptr %6, align 4
  br label %7220

7216:                                             ; preds = %7186
  %7217 = landingpad { ptr, i32 }
          cleanup
  %7218 = extractvalue { ptr, i32 } %7217, 0
  store ptr %7218, ptr %5, align 8
  %7219 = extractvalue { ptr, i32 } %7217, 1
  store i32 %7219, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %712) #8
  br label %7220

7220:                                             ; preds = %7216, %7212
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %713) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %713) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %712) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %711) #8
  br label %7221

7221:                                             ; preds = %7220, %7208
  call void @llvm.lifetime.end.p0(i64 32, ptr %711) #8
  br label %7283

7222:                                             ; preds = %7187
  %7223 = landingpad { ptr, i32 }
          cleanup
  %7224 = extractvalue { ptr, i32 } %7223, 0
  store ptr %7224, ptr %5, align 8
  %7225 = extractvalue { ptr, i32 } %7223, 1
  store i32 %7225, ptr %6, align 4
  br label %7282

7226:                                             ; preds = %7189
  call void @llvm.lifetime.start.p0(i64 8, ptr %714) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %714)
          to label %7227 unwind label %7232

7227:                                             ; preds = %7226
  call void @llvm.lifetime.start.p0(i64 8, ptr %715) #8
  %7228 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %710)
          to label %7229 unwind label %7236

7229:                                             ; preds = %7227
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %715, i32 noundef 1, ptr noundef @.str.3, i32 noundef 147, ptr noundef %7228)
          to label %7230 unwind label %7236

7230:                                             ; preds = %7229
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %715, ptr noundef nonnull align 8 dereferenceable(8) %714)
          to label %7231 unwind label %7240

7231:                                             ; preds = %7230
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %715) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %715) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %714) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %714) #8
  br label %7246

7232:                                             ; preds = %7226
  %7233 = landingpad { ptr, i32 }
          cleanup
  %7234 = extractvalue { ptr, i32 } %7233, 0
  store ptr %7234, ptr %5, align 8
  %7235 = extractvalue { ptr, i32 } %7233, 1
  store i32 %7235, ptr %6, align 4
  br label %7245

7236:                                             ; preds = %7229, %7227
  %7237 = landingpad { ptr, i32 }
          cleanup
  %7238 = extractvalue { ptr, i32 } %7237, 0
  store ptr %7238, ptr %5, align 8
  %7239 = extractvalue { ptr, i32 } %7237, 1
  store i32 %7239, ptr %6, align 4
  br label %7244

7240:                                             ; preds = %7230
  %7241 = landingpad { ptr, i32 }
          cleanup
  %7242 = extractvalue { ptr, i32 } %7241, 0
  store ptr %7242, ptr %5, align 8
  %7243 = extractvalue { ptr, i32 } %7241, 1
  store i32 %7243, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %715) #8
  br label %7244

7244:                                             ; preds = %7240, %7236
  call void @llvm.lifetime.end.p0(i64 8, ptr %715) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %714) #8
  br label %7245

7245:                                             ; preds = %7244, %7232
  call void @llvm.lifetime.end.p0(i64 8, ptr %714) #8
  br label %7282

7246:                                             ; preds = %7231, %7190
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %710) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %710) #8
  %7247 = load ptr, ptr %709, align 8, !tbaa !5
  %7248 = icmp eq ptr %7247, null
  br i1 %7248, label %7250, label %7249

7249:                                             ; preds = %7246
  call void @_ZdaPv(ptr noundef %7247) #10
  br label %7250

7250:                                             ; preds = %7249, %7246
  call void @llvm.lifetime.end.p0(i64 8, ptr %709) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %707) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %706) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %706) #8
  br label %7251

7251:                                             ; preds = %7250
  br label %7252

7252:                                             ; preds = %7251
  br label %7253

7253:                                             ; preds = %7252
  call void @llvm.lifetime.start.p0(i64 392, ptr %716) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %716)
  %7254 = getelementptr inbounds i8, ptr %716, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %7254, ptr noundef @.str.59, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %7255 unwind label %7287

7255:                                             ; preds = %7253
  call void @llvm.lifetime.start.p0(i64 4, ptr %717) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %718) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %718, ptr noundef nonnull align 8 dereferenceable(128) %716)
          to label %7256 unwind label %7291

7256:                                             ; preds = %7255
  %7257 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %718) #8
  %7258 = add i64 %7257, 3
  %7259 = trunc i64 %7258 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %718) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %718) #8
  store i32 %7259, ptr %717, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %719) #8
  %7260 = load i32, ptr %717, align 4, !tbaa !11
  %7261 = sext i32 %7260 to i64
  %7262 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %7261) #9
          to label %7263 unwind label %7295

7263:                                             ; preds = %7256
  store ptr %7262, ptr %719, align 8, !tbaa !5
  %7264 = load ptr, ptr %719, align 8, !tbaa !5
  %7265 = load i32, ptr %717, align 4, !tbaa !11
  %7266 = sub nsw i32 %7265, 1
  %7267 = sext i32 %7266 to i64
  %7268 = getelementptr inbounds i8, ptr %7264, i64 %7267
  store i8 0, ptr %7268, align 1, !tbaa !13
  %7269 = load ptr, ptr %719, align 8, !tbaa !5
  %7270 = load i32, ptr %717, align 4, !tbaa !11
  %7271 = sub nsw i32 %7270, 2
  %7272 = sext i32 %7271 to i64
  %7273 = load double, ptr %3, align 8, !tbaa !9
  %7274 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %7269, i64 noundef %7272, ptr noundef @.str.59, double noundef %7273) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %720) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %721) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %721, ptr noundef nonnull align 8 dereferenceable(128) %716)
          to label %7275 unwind label %7299

7275:                                             ; preds = %7263
  call void @llvm.lifetime.start.p0(i64 32, ptr %722) #8
  %7276 = load ptr, ptr %719, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %723) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %723) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %722, ptr noundef %7276, ptr noundef nonnull align 1 dereferenceable(1) %723)
          to label %7277 unwind label %7303

7277:                                             ; preds = %7275
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %720, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %721, ptr noundef nonnull align 8 dereferenceable(32) %722)
          to label %7278 unwind label %7307

7278:                                             ; preds = %7277
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %722) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %723) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %723) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %722) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %721) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %721) #8
  %7279 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %720)
          to label %7280 unwind label %7313

7280:                                             ; preds = %7278
  br i1 %7279, label %7281, label %7317

7281:                                             ; preds = %7280
  br label %7337

7282:                                             ; preds = %7245, %7222
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %710) #8
  br label %7283

7283:                                             ; preds = %7282, %7221
  call void @llvm.lifetime.end.p0(i64 16, ptr %710) #8
  br label %7284

7284:                                             ; preds = %7283, %7204
  call void @llvm.lifetime.end.p0(i64 8, ptr %709) #8
  br label %7285

7285:                                             ; preds = %7284, %7200
  call void @llvm.lifetime.end.p0(i64 4, ptr %707) #8
  br label %7286

7286:                                             ; preds = %7285, %7196
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %706) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %706) #8
  br label %7986

7287:                                             ; preds = %7253
  %7288 = landingpad { ptr, i32 }
          cleanup
  %7289 = extractvalue { ptr, i32 } %7288, 0
  store ptr %7289, ptr %5, align 8
  %7290 = extractvalue { ptr, i32 } %7288, 1
  store i32 %7290, ptr %6, align 4
  br label %7377

7291:                                             ; preds = %7255
  %7292 = landingpad { ptr, i32 }
          cleanup
  %7293 = extractvalue { ptr, i32 } %7292, 0
  store ptr %7293, ptr %5, align 8
  %7294 = extractvalue { ptr, i32 } %7292, 1
  store i32 %7294, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %718) #8
  br label %7376

7295:                                             ; preds = %7256
  %7296 = landingpad { ptr, i32 }
          cleanup
  %7297 = extractvalue { ptr, i32 } %7296, 0
  store ptr %7297, ptr %5, align 8
  %7298 = extractvalue { ptr, i32 } %7296, 1
  store i32 %7298, ptr %6, align 4
  br label %7375

7299:                                             ; preds = %7263
  %7300 = landingpad { ptr, i32 }
          cleanup
  %7301 = extractvalue { ptr, i32 } %7300, 0
  store ptr %7301, ptr %5, align 8
  %7302 = extractvalue { ptr, i32 } %7300, 1
  store i32 %7302, ptr %6, align 4
  br label %7312

7303:                                             ; preds = %7275
  %7304 = landingpad { ptr, i32 }
          cleanup
  %7305 = extractvalue { ptr, i32 } %7304, 0
  store ptr %7305, ptr %5, align 8
  %7306 = extractvalue { ptr, i32 } %7304, 1
  store i32 %7306, ptr %6, align 4
  br label %7311

7307:                                             ; preds = %7277
  %7308 = landingpad { ptr, i32 }
          cleanup
  %7309 = extractvalue { ptr, i32 } %7308, 0
  store ptr %7309, ptr %5, align 8
  %7310 = extractvalue { ptr, i32 } %7308, 1
  store i32 %7310, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %722) #8
  br label %7311

7311:                                             ; preds = %7307, %7303
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %723) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %723) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %722) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %721) #8
  br label %7312

7312:                                             ; preds = %7311, %7299
  call void @llvm.lifetime.end.p0(i64 32, ptr %721) #8
  br label %7374

7313:                                             ; preds = %7278
  %7314 = landingpad { ptr, i32 }
          cleanup
  %7315 = extractvalue { ptr, i32 } %7314, 0
  store ptr %7315, ptr %5, align 8
  %7316 = extractvalue { ptr, i32 } %7314, 1
  store i32 %7316, ptr %6, align 4
  br label %7373

7317:                                             ; preds = %7280
  call void @llvm.lifetime.start.p0(i64 8, ptr %724) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %724)
          to label %7318 unwind label %7323

7318:                                             ; preds = %7317
  call void @llvm.lifetime.start.p0(i64 8, ptr %725) #8
  %7319 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %720)
          to label %7320 unwind label %7327

7320:                                             ; preds = %7318
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %725, i32 noundef 1, ptr noundef @.str.3, i32 noundef 148, ptr noundef %7319)
          to label %7321 unwind label %7327

7321:                                             ; preds = %7320
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %725, ptr noundef nonnull align 8 dereferenceable(8) %724)
          to label %7322 unwind label %7331

7322:                                             ; preds = %7321
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %725) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %725) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %724) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %724) #8
  br label %7337

7323:                                             ; preds = %7317
  %7324 = landingpad { ptr, i32 }
          cleanup
  %7325 = extractvalue { ptr, i32 } %7324, 0
  store ptr %7325, ptr %5, align 8
  %7326 = extractvalue { ptr, i32 } %7324, 1
  store i32 %7326, ptr %6, align 4
  br label %7336

7327:                                             ; preds = %7320, %7318
  %7328 = landingpad { ptr, i32 }
          cleanup
  %7329 = extractvalue { ptr, i32 } %7328, 0
  store ptr %7329, ptr %5, align 8
  %7330 = extractvalue { ptr, i32 } %7328, 1
  store i32 %7330, ptr %6, align 4
  br label %7335

7331:                                             ; preds = %7321
  %7332 = landingpad { ptr, i32 }
          cleanup
  %7333 = extractvalue { ptr, i32 } %7332, 0
  store ptr %7333, ptr %5, align 8
  %7334 = extractvalue { ptr, i32 } %7332, 1
  store i32 %7334, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %725) #8
  br label %7335

7335:                                             ; preds = %7331, %7327
  call void @llvm.lifetime.end.p0(i64 8, ptr %725) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %724) #8
  br label %7336

7336:                                             ; preds = %7335, %7323
  call void @llvm.lifetime.end.p0(i64 8, ptr %724) #8
  br label %7373

7337:                                             ; preds = %7322, %7281
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %720) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %720) #8
  %7338 = load ptr, ptr %719, align 8, !tbaa !5
  %7339 = icmp eq ptr %7338, null
  br i1 %7339, label %7341, label %7340

7340:                                             ; preds = %7337
  call void @_ZdaPv(ptr noundef %7338) #10
  br label %7341

7341:                                             ; preds = %7340, %7337
  call void @llvm.lifetime.end.p0(i64 8, ptr %719) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %717) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %716) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %716) #8
  br label %7342

7342:                                             ; preds = %7341
  br label %7343

7343:                                             ; preds = %7342
  br label %7344

7344:                                             ; preds = %7343
  call void @llvm.lifetime.start.p0(i64 392, ptr %726) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %726)
  %7345 = getelementptr inbounds i8, ptr %726, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %7345, ptr noundef @.str.60, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %7346 unwind label %7378

7346:                                             ; preds = %7344
  call void @llvm.lifetime.start.p0(i64 4, ptr %727) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %728) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %728, ptr noundef nonnull align 8 dereferenceable(128) %726)
          to label %7347 unwind label %7382

7347:                                             ; preds = %7346
  %7348 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %728) #8
  %7349 = add i64 %7348, 3
  %7350 = trunc i64 %7349 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %728) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %728) #8
  store i32 %7350, ptr %727, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %729) #8
  %7351 = load i32, ptr %727, align 4, !tbaa !11
  %7352 = sext i32 %7351 to i64
  %7353 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %7352) #9
          to label %7354 unwind label %7386

7354:                                             ; preds = %7347
  store ptr %7353, ptr %729, align 8, !tbaa !5
  %7355 = load ptr, ptr %729, align 8, !tbaa !5
  %7356 = load i32, ptr %727, align 4, !tbaa !11
  %7357 = sub nsw i32 %7356, 1
  %7358 = sext i32 %7357 to i64
  %7359 = getelementptr inbounds i8, ptr %7355, i64 %7358
  store i8 0, ptr %7359, align 1, !tbaa !13
  %7360 = load ptr, ptr %729, align 8, !tbaa !5
  %7361 = load i32, ptr %727, align 4, !tbaa !11
  %7362 = sub nsw i32 %7361, 2
  %7363 = sext i32 %7362 to i64
  %7364 = load double, ptr %3, align 8, !tbaa !9
  %7365 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %7360, i64 noundef %7363, ptr noundef @.str.60, double noundef %7364) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %730) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %731) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %731, ptr noundef nonnull align 8 dereferenceable(128) %726)
          to label %7366 unwind label %7390

7366:                                             ; preds = %7354
  call void @llvm.lifetime.start.p0(i64 32, ptr %732) #8
  %7367 = load ptr, ptr %729, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %733) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %733) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %732, ptr noundef %7367, ptr noundef nonnull align 1 dereferenceable(1) %733)
          to label %7368 unwind label %7394

7368:                                             ; preds = %7366
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %730, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %731, ptr noundef nonnull align 8 dereferenceable(32) %732)
          to label %7369 unwind label %7398

7369:                                             ; preds = %7368
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %732) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %733) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %733) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %732) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %731) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %731) #8
  %7370 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %730)
          to label %7371 unwind label %7404

7371:                                             ; preds = %7369
  br i1 %7370, label %7372, label %7408

7372:                                             ; preds = %7371
  br label %7428

7373:                                             ; preds = %7336, %7313
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %720) #8
  br label %7374

7374:                                             ; preds = %7373, %7312
  call void @llvm.lifetime.end.p0(i64 16, ptr %720) #8
  br label %7375

7375:                                             ; preds = %7374, %7295
  call void @llvm.lifetime.end.p0(i64 8, ptr %719) #8
  br label %7376

7376:                                             ; preds = %7375, %7291
  call void @llvm.lifetime.end.p0(i64 4, ptr %717) #8
  br label %7377

7377:                                             ; preds = %7376, %7287
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %716) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %716) #8
  br label %7986

7378:                                             ; preds = %7344
  %7379 = landingpad { ptr, i32 }
          cleanup
  %7380 = extractvalue { ptr, i32 } %7379, 0
  store ptr %7380, ptr %5, align 8
  %7381 = extractvalue { ptr, i32 } %7379, 1
  store i32 %7381, ptr %6, align 4
  br label %7468

7382:                                             ; preds = %7346
  %7383 = landingpad { ptr, i32 }
          cleanup
  %7384 = extractvalue { ptr, i32 } %7383, 0
  store ptr %7384, ptr %5, align 8
  %7385 = extractvalue { ptr, i32 } %7383, 1
  store i32 %7385, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %728) #8
  br label %7467

7386:                                             ; preds = %7347
  %7387 = landingpad { ptr, i32 }
          cleanup
  %7388 = extractvalue { ptr, i32 } %7387, 0
  store ptr %7388, ptr %5, align 8
  %7389 = extractvalue { ptr, i32 } %7387, 1
  store i32 %7389, ptr %6, align 4
  br label %7466

7390:                                             ; preds = %7354
  %7391 = landingpad { ptr, i32 }
          cleanup
  %7392 = extractvalue { ptr, i32 } %7391, 0
  store ptr %7392, ptr %5, align 8
  %7393 = extractvalue { ptr, i32 } %7391, 1
  store i32 %7393, ptr %6, align 4
  br label %7403

7394:                                             ; preds = %7366
  %7395 = landingpad { ptr, i32 }
          cleanup
  %7396 = extractvalue { ptr, i32 } %7395, 0
  store ptr %7396, ptr %5, align 8
  %7397 = extractvalue { ptr, i32 } %7395, 1
  store i32 %7397, ptr %6, align 4
  br label %7402

7398:                                             ; preds = %7368
  %7399 = landingpad { ptr, i32 }
          cleanup
  %7400 = extractvalue { ptr, i32 } %7399, 0
  store ptr %7400, ptr %5, align 8
  %7401 = extractvalue { ptr, i32 } %7399, 1
  store i32 %7401, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %732) #8
  br label %7402

7402:                                             ; preds = %7398, %7394
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %733) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %733) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %732) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %731) #8
  br label %7403

7403:                                             ; preds = %7402, %7390
  call void @llvm.lifetime.end.p0(i64 32, ptr %731) #8
  br label %7465

7404:                                             ; preds = %7369
  %7405 = landingpad { ptr, i32 }
          cleanup
  %7406 = extractvalue { ptr, i32 } %7405, 0
  store ptr %7406, ptr %5, align 8
  %7407 = extractvalue { ptr, i32 } %7405, 1
  store i32 %7407, ptr %6, align 4
  br label %7464

7408:                                             ; preds = %7371
  call void @llvm.lifetime.start.p0(i64 8, ptr %734) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %734)
          to label %7409 unwind label %7414

7409:                                             ; preds = %7408
  call void @llvm.lifetime.start.p0(i64 8, ptr %735) #8
  %7410 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %730)
          to label %7411 unwind label %7418

7411:                                             ; preds = %7409
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %735, i32 noundef 1, ptr noundef @.str.3, i32 noundef 149, ptr noundef %7410)
          to label %7412 unwind label %7418

7412:                                             ; preds = %7411
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %735, ptr noundef nonnull align 8 dereferenceable(8) %734)
          to label %7413 unwind label %7422

7413:                                             ; preds = %7412
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %735) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %735) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %734) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %734) #8
  br label %7428

7414:                                             ; preds = %7408
  %7415 = landingpad { ptr, i32 }
          cleanup
  %7416 = extractvalue { ptr, i32 } %7415, 0
  store ptr %7416, ptr %5, align 8
  %7417 = extractvalue { ptr, i32 } %7415, 1
  store i32 %7417, ptr %6, align 4
  br label %7427

7418:                                             ; preds = %7411, %7409
  %7419 = landingpad { ptr, i32 }
          cleanup
  %7420 = extractvalue { ptr, i32 } %7419, 0
  store ptr %7420, ptr %5, align 8
  %7421 = extractvalue { ptr, i32 } %7419, 1
  store i32 %7421, ptr %6, align 4
  br label %7426

7422:                                             ; preds = %7412
  %7423 = landingpad { ptr, i32 }
          cleanup
  %7424 = extractvalue { ptr, i32 } %7423, 0
  store ptr %7424, ptr %5, align 8
  %7425 = extractvalue { ptr, i32 } %7423, 1
  store i32 %7425, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %735) #8
  br label %7426

7426:                                             ; preds = %7422, %7418
  call void @llvm.lifetime.end.p0(i64 8, ptr %735) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %734) #8
  br label %7427

7427:                                             ; preds = %7426, %7414
  call void @llvm.lifetime.end.p0(i64 8, ptr %734) #8
  br label %7464

7428:                                             ; preds = %7413, %7372
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %730) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %730) #8
  %7429 = load ptr, ptr %729, align 8, !tbaa !5
  %7430 = icmp eq ptr %7429, null
  br i1 %7430, label %7432, label %7431

7431:                                             ; preds = %7428
  call void @_ZdaPv(ptr noundef %7429) #10
  br label %7432

7432:                                             ; preds = %7431, %7428
  call void @llvm.lifetime.end.p0(i64 8, ptr %729) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %727) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %726) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %726) #8
  br label %7433

7433:                                             ; preds = %7432
  br label %7434

7434:                                             ; preds = %7433
  br label %7435

7435:                                             ; preds = %7434
  call void @llvm.lifetime.start.p0(i64 392, ptr %736) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %736)
  %7436 = getelementptr inbounds i8, ptr %736, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %7436, ptr noundef @.str.61, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %7437 unwind label %7469

7437:                                             ; preds = %7435
  call void @llvm.lifetime.start.p0(i64 4, ptr %737) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %738) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %738, ptr noundef nonnull align 8 dereferenceable(128) %736)
          to label %7438 unwind label %7473

7438:                                             ; preds = %7437
  %7439 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %738) #8
  %7440 = add i64 %7439, 3
  %7441 = trunc i64 %7440 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %738) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %738) #8
  store i32 %7441, ptr %737, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %739) #8
  %7442 = load i32, ptr %737, align 4, !tbaa !11
  %7443 = sext i32 %7442 to i64
  %7444 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %7443) #9
          to label %7445 unwind label %7477

7445:                                             ; preds = %7438
  store ptr %7444, ptr %739, align 8, !tbaa !5
  %7446 = load ptr, ptr %739, align 8, !tbaa !5
  %7447 = load i32, ptr %737, align 4, !tbaa !11
  %7448 = sub nsw i32 %7447, 1
  %7449 = sext i32 %7448 to i64
  %7450 = getelementptr inbounds i8, ptr %7446, i64 %7449
  store i8 0, ptr %7450, align 1, !tbaa !13
  %7451 = load ptr, ptr %739, align 8, !tbaa !5
  %7452 = load i32, ptr %737, align 4, !tbaa !11
  %7453 = sub nsw i32 %7452, 2
  %7454 = sext i32 %7453 to i64
  %7455 = load double, ptr %3, align 8, !tbaa !9
  %7456 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %7451, i64 noundef %7454, ptr noundef @.str.61, double noundef %7455) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %740) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %741) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %741, ptr noundef nonnull align 8 dereferenceable(128) %736)
          to label %7457 unwind label %7481

7457:                                             ; preds = %7445
  call void @llvm.lifetime.start.p0(i64 32, ptr %742) #8
  %7458 = load ptr, ptr %739, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %743) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %743) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %742, ptr noundef %7458, ptr noundef nonnull align 1 dereferenceable(1) %743)
          to label %7459 unwind label %7485

7459:                                             ; preds = %7457
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %740, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %741, ptr noundef nonnull align 8 dereferenceable(32) %742)
          to label %7460 unwind label %7489

7460:                                             ; preds = %7459
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %742) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %743) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %743) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %742) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %741) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %741) #8
  %7461 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %740)
          to label %7462 unwind label %7495

7462:                                             ; preds = %7460
  br i1 %7461, label %7463, label %7499

7463:                                             ; preds = %7462
  br label %7519

7464:                                             ; preds = %7427, %7404
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %730) #8
  br label %7465

7465:                                             ; preds = %7464, %7403
  call void @llvm.lifetime.end.p0(i64 16, ptr %730) #8
  br label %7466

7466:                                             ; preds = %7465, %7386
  call void @llvm.lifetime.end.p0(i64 8, ptr %729) #8
  br label %7467

7467:                                             ; preds = %7466, %7382
  call void @llvm.lifetime.end.p0(i64 4, ptr %727) #8
  br label %7468

7468:                                             ; preds = %7467, %7378
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %726) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %726) #8
  br label %7986

7469:                                             ; preds = %7435
  %7470 = landingpad { ptr, i32 }
          cleanup
  %7471 = extractvalue { ptr, i32 } %7470, 0
  store ptr %7471, ptr %5, align 8
  %7472 = extractvalue { ptr, i32 } %7470, 1
  store i32 %7472, ptr %6, align 4
  br label %7559

7473:                                             ; preds = %7437
  %7474 = landingpad { ptr, i32 }
          cleanup
  %7475 = extractvalue { ptr, i32 } %7474, 0
  store ptr %7475, ptr %5, align 8
  %7476 = extractvalue { ptr, i32 } %7474, 1
  store i32 %7476, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %738) #8
  br label %7558

7477:                                             ; preds = %7438
  %7478 = landingpad { ptr, i32 }
          cleanup
  %7479 = extractvalue { ptr, i32 } %7478, 0
  store ptr %7479, ptr %5, align 8
  %7480 = extractvalue { ptr, i32 } %7478, 1
  store i32 %7480, ptr %6, align 4
  br label %7557

7481:                                             ; preds = %7445
  %7482 = landingpad { ptr, i32 }
          cleanup
  %7483 = extractvalue { ptr, i32 } %7482, 0
  store ptr %7483, ptr %5, align 8
  %7484 = extractvalue { ptr, i32 } %7482, 1
  store i32 %7484, ptr %6, align 4
  br label %7494

7485:                                             ; preds = %7457
  %7486 = landingpad { ptr, i32 }
          cleanup
  %7487 = extractvalue { ptr, i32 } %7486, 0
  store ptr %7487, ptr %5, align 8
  %7488 = extractvalue { ptr, i32 } %7486, 1
  store i32 %7488, ptr %6, align 4
  br label %7493

7489:                                             ; preds = %7459
  %7490 = landingpad { ptr, i32 }
          cleanup
  %7491 = extractvalue { ptr, i32 } %7490, 0
  store ptr %7491, ptr %5, align 8
  %7492 = extractvalue { ptr, i32 } %7490, 1
  store i32 %7492, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %742) #8
  br label %7493

7493:                                             ; preds = %7489, %7485
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %743) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %743) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %742) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %741) #8
  br label %7494

7494:                                             ; preds = %7493, %7481
  call void @llvm.lifetime.end.p0(i64 32, ptr %741) #8
  br label %7556

7495:                                             ; preds = %7460
  %7496 = landingpad { ptr, i32 }
          cleanup
  %7497 = extractvalue { ptr, i32 } %7496, 0
  store ptr %7497, ptr %5, align 8
  %7498 = extractvalue { ptr, i32 } %7496, 1
  store i32 %7498, ptr %6, align 4
  br label %7555

7499:                                             ; preds = %7462
  call void @llvm.lifetime.start.p0(i64 8, ptr %744) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %744)
          to label %7500 unwind label %7505

7500:                                             ; preds = %7499
  call void @llvm.lifetime.start.p0(i64 8, ptr %745) #8
  %7501 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %740)
          to label %7502 unwind label %7509

7502:                                             ; preds = %7500
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %745, i32 noundef 1, ptr noundef @.str.3, i32 noundef 150, ptr noundef %7501)
          to label %7503 unwind label %7509

7503:                                             ; preds = %7502
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %745, ptr noundef nonnull align 8 dereferenceable(8) %744)
          to label %7504 unwind label %7513

7504:                                             ; preds = %7503
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %745) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %745) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %744) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %744) #8
  br label %7519

7505:                                             ; preds = %7499
  %7506 = landingpad { ptr, i32 }
          cleanup
  %7507 = extractvalue { ptr, i32 } %7506, 0
  store ptr %7507, ptr %5, align 8
  %7508 = extractvalue { ptr, i32 } %7506, 1
  store i32 %7508, ptr %6, align 4
  br label %7518

7509:                                             ; preds = %7502, %7500
  %7510 = landingpad { ptr, i32 }
          cleanup
  %7511 = extractvalue { ptr, i32 } %7510, 0
  store ptr %7511, ptr %5, align 8
  %7512 = extractvalue { ptr, i32 } %7510, 1
  store i32 %7512, ptr %6, align 4
  br label %7517

7513:                                             ; preds = %7503
  %7514 = landingpad { ptr, i32 }
          cleanup
  %7515 = extractvalue { ptr, i32 } %7514, 0
  store ptr %7515, ptr %5, align 8
  %7516 = extractvalue { ptr, i32 } %7514, 1
  store i32 %7516, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %745) #8
  br label %7517

7517:                                             ; preds = %7513, %7509
  call void @llvm.lifetime.end.p0(i64 8, ptr %745) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %744) #8
  br label %7518

7518:                                             ; preds = %7517, %7505
  call void @llvm.lifetime.end.p0(i64 8, ptr %744) #8
  br label %7555

7519:                                             ; preds = %7504, %7463
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %740) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %740) #8
  %7520 = load ptr, ptr %739, align 8, !tbaa !5
  %7521 = icmp eq ptr %7520, null
  br i1 %7521, label %7523, label %7522

7522:                                             ; preds = %7519
  call void @_ZdaPv(ptr noundef %7520) #10
  br label %7523

7523:                                             ; preds = %7522, %7519
  call void @llvm.lifetime.end.p0(i64 8, ptr %739) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %737) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %736) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %736) #8
  br label %7524

7524:                                             ; preds = %7523
  br label %7525

7525:                                             ; preds = %7524
  br label %7526

7526:                                             ; preds = %7525
  call void @llvm.lifetime.start.p0(i64 392, ptr %746) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %746)
  %7527 = getelementptr inbounds i8, ptr %746, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %7527, ptr noundef @.str.62, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %7528 unwind label %7560

7528:                                             ; preds = %7526
  call void @llvm.lifetime.start.p0(i64 4, ptr %747) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %748) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %748, ptr noundef nonnull align 8 dereferenceable(128) %746)
          to label %7529 unwind label %7564

7529:                                             ; preds = %7528
  %7530 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %748) #8
  %7531 = add i64 %7530, 3
  %7532 = trunc i64 %7531 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %748) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %748) #8
  store i32 %7532, ptr %747, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %749) #8
  %7533 = load i32, ptr %747, align 4, !tbaa !11
  %7534 = sext i32 %7533 to i64
  %7535 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %7534) #9
          to label %7536 unwind label %7568

7536:                                             ; preds = %7529
  store ptr %7535, ptr %749, align 8, !tbaa !5
  %7537 = load ptr, ptr %749, align 8, !tbaa !5
  %7538 = load i32, ptr %747, align 4, !tbaa !11
  %7539 = sub nsw i32 %7538, 1
  %7540 = sext i32 %7539 to i64
  %7541 = getelementptr inbounds i8, ptr %7537, i64 %7540
  store i8 0, ptr %7541, align 1, !tbaa !13
  %7542 = load ptr, ptr %749, align 8, !tbaa !5
  %7543 = load i32, ptr %747, align 4, !tbaa !11
  %7544 = sub nsw i32 %7543, 2
  %7545 = sext i32 %7544 to i64
  %7546 = load double, ptr %3, align 8, !tbaa !9
  %7547 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %7542, i64 noundef %7545, ptr noundef @.str.62, double noundef %7546) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %750) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %751) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %751, ptr noundef nonnull align 8 dereferenceable(128) %746)
          to label %7548 unwind label %7572

7548:                                             ; preds = %7536
  call void @llvm.lifetime.start.p0(i64 32, ptr %752) #8
  %7549 = load ptr, ptr %749, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %753) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %753) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %752, ptr noundef %7549, ptr noundef nonnull align 1 dereferenceable(1) %753)
          to label %7550 unwind label %7576

7550:                                             ; preds = %7548
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %750, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %751, ptr noundef nonnull align 8 dereferenceable(32) %752)
          to label %7551 unwind label %7580

7551:                                             ; preds = %7550
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %752) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %753) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %753) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %752) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %751) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %751) #8
  %7552 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %750)
          to label %7553 unwind label %7586

7553:                                             ; preds = %7551
  br i1 %7552, label %7554, label %7590

7554:                                             ; preds = %7553
  br label %7610

7555:                                             ; preds = %7518, %7495
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %740) #8
  br label %7556

7556:                                             ; preds = %7555, %7494
  call void @llvm.lifetime.end.p0(i64 16, ptr %740) #8
  br label %7557

7557:                                             ; preds = %7556, %7477
  call void @llvm.lifetime.end.p0(i64 8, ptr %739) #8
  br label %7558

7558:                                             ; preds = %7557, %7473
  call void @llvm.lifetime.end.p0(i64 4, ptr %737) #8
  br label %7559

7559:                                             ; preds = %7558, %7469
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %736) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %736) #8
  br label %7986

7560:                                             ; preds = %7526
  %7561 = landingpad { ptr, i32 }
          cleanup
  %7562 = extractvalue { ptr, i32 } %7561, 0
  store ptr %7562, ptr %5, align 8
  %7563 = extractvalue { ptr, i32 } %7561, 1
  store i32 %7563, ptr %6, align 4
  br label %7650

7564:                                             ; preds = %7528
  %7565 = landingpad { ptr, i32 }
          cleanup
  %7566 = extractvalue { ptr, i32 } %7565, 0
  store ptr %7566, ptr %5, align 8
  %7567 = extractvalue { ptr, i32 } %7565, 1
  store i32 %7567, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %748) #8
  br label %7649

7568:                                             ; preds = %7529
  %7569 = landingpad { ptr, i32 }
          cleanup
  %7570 = extractvalue { ptr, i32 } %7569, 0
  store ptr %7570, ptr %5, align 8
  %7571 = extractvalue { ptr, i32 } %7569, 1
  store i32 %7571, ptr %6, align 4
  br label %7648

7572:                                             ; preds = %7536
  %7573 = landingpad { ptr, i32 }
          cleanup
  %7574 = extractvalue { ptr, i32 } %7573, 0
  store ptr %7574, ptr %5, align 8
  %7575 = extractvalue { ptr, i32 } %7573, 1
  store i32 %7575, ptr %6, align 4
  br label %7585

7576:                                             ; preds = %7548
  %7577 = landingpad { ptr, i32 }
          cleanup
  %7578 = extractvalue { ptr, i32 } %7577, 0
  store ptr %7578, ptr %5, align 8
  %7579 = extractvalue { ptr, i32 } %7577, 1
  store i32 %7579, ptr %6, align 4
  br label %7584

7580:                                             ; preds = %7550
  %7581 = landingpad { ptr, i32 }
          cleanup
  %7582 = extractvalue { ptr, i32 } %7581, 0
  store ptr %7582, ptr %5, align 8
  %7583 = extractvalue { ptr, i32 } %7581, 1
  store i32 %7583, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %752) #8
  br label %7584

7584:                                             ; preds = %7580, %7576
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %753) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %753) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %752) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %751) #8
  br label %7585

7585:                                             ; preds = %7584, %7572
  call void @llvm.lifetime.end.p0(i64 32, ptr %751) #8
  br label %7647

7586:                                             ; preds = %7551
  %7587 = landingpad { ptr, i32 }
          cleanup
  %7588 = extractvalue { ptr, i32 } %7587, 0
  store ptr %7588, ptr %5, align 8
  %7589 = extractvalue { ptr, i32 } %7587, 1
  store i32 %7589, ptr %6, align 4
  br label %7646

7590:                                             ; preds = %7553
  call void @llvm.lifetime.start.p0(i64 8, ptr %754) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %754)
          to label %7591 unwind label %7596

7591:                                             ; preds = %7590
  call void @llvm.lifetime.start.p0(i64 8, ptr %755) #8
  %7592 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %750)
          to label %7593 unwind label %7600

7593:                                             ; preds = %7591
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %755, i32 noundef 1, ptr noundef @.str.3, i32 noundef 151, ptr noundef %7592)
          to label %7594 unwind label %7600

7594:                                             ; preds = %7593
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %755, ptr noundef nonnull align 8 dereferenceable(8) %754)
          to label %7595 unwind label %7604

7595:                                             ; preds = %7594
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %755) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %755) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %754) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %754) #8
  br label %7610

7596:                                             ; preds = %7590
  %7597 = landingpad { ptr, i32 }
          cleanup
  %7598 = extractvalue { ptr, i32 } %7597, 0
  store ptr %7598, ptr %5, align 8
  %7599 = extractvalue { ptr, i32 } %7597, 1
  store i32 %7599, ptr %6, align 4
  br label %7609

7600:                                             ; preds = %7593, %7591
  %7601 = landingpad { ptr, i32 }
          cleanup
  %7602 = extractvalue { ptr, i32 } %7601, 0
  store ptr %7602, ptr %5, align 8
  %7603 = extractvalue { ptr, i32 } %7601, 1
  store i32 %7603, ptr %6, align 4
  br label %7608

7604:                                             ; preds = %7594
  %7605 = landingpad { ptr, i32 }
          cleanup
  %7606 = extractvalue { ptr, i32 } %7605, 0
  store ptr %7606, ptr %5, align 8
  %7607 = extractvalue { ptr, i32 } %7605, 1
  store i32 %7607, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %755) #8
  br label %7608

7608:                                             ; preds = %7604, %7600
  call void @llvm.lifetime.end.p0(i64 8, ptr %755) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %754) #8
  br label %7609

7609:                                             ; preds = %7608, %7596
  call void @llvm.lifetime.end.p0(i64 8, ptr %754) #8
  br label %7646

7610:                                             ; preds = %7595, %7554
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %750) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %750) #8
  %7611 = load ptr, ptr %749, align 8, !tbaa !5
  %7612 = icmp eq ptr %7611, null
  br i1 %7612, label %7614, label %7613

7613:                                             ; preds = %7610
  call void @_ZdaPv(ptr noundef %7611) #10
  br label %7614

7614:                                             ; preds = %7613, %7610
  call void @llvm.lifetime.end.p0(i64 8, ptr %749) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %747) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %746) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %746) #8
  br label %7615

7615:                                             ; preds = %7614
  br label %7616

7616:                                             ; preds = %7615
  br label %7617

7617:                                             ; preds = %7616
  call void @llvm.lifetime.start.p0(i64 392, ptr %756) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %756)
  %7618 = getelementptr inbounds i8, ptr %756, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %7618, ptr noundef @.str.63, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %7619 unwind label %7651

7619:                                             ; preds = %7617
  call void @llvm.lifetime.start.p0(i64 4, ptr %757) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %758) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %758, ptr noundef nonnull align 8 dereferenceable(128) %756)
          to label %7620 unwind label %7655

7620:                                             ; preds = %7619
  %7621 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %758) #8
  %7622 = add i64 %7621, 3
  %7623 = trunc i64 %7622 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %758) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %758) #8
  store i32 %7623, ptr %757, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %759) #8
  %7624 = load i32, ptr %757, align 4, !tbaa !11
  %7625 = sext i32 %7624 to i64
  %7626 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %7625) #9
          to label %7627 unwind label %7659

7627:                                             ; preds = %7620
  store ptr %7626, ptr %759, align 8, !tbaa !5
  %7628 = load ptr, ptr %759, align 8, !tbaa !5
  %7629 = load i32, ptr %757, align 4, !tbaa !11
  %7630 = sub nsw i32 %7629, 1
  %7631 = sext i32 %7630 to i64
  %7632 = getelementptr inbounds i8, ptr %7628, i64 %7631
  store i8 0, ptr %7632, align 1, !tbaa !13
  %7633 = load ptr, ptr %759, align 8, !tbaa !5
  %7634 = load i32, ptr %757, align 4, !tbaa !11
  %7635 = sub nsw i32 %7634, 2
  %7636 = sext i32 %7635 to i64
  %7637 = load double, ptr %3, align 8, !tbaa !9
  %7638 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %7633, i64 noundef %7636, ptr noundef @.str.63, double noundef %7637) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %760) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %761) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %761, ptr noundef nonnull align 8 dereferenceable(128) %756)
          to label %7639 unwind label %7663

7639:                                             ; preds = %7627
  call void @llvm.lifetime.start.p0(i64 32, ptr %762) #8
  %7640 = load ptr, ptr %759, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %763) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %763) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %762, ptr noundef %7640, ptr noundef nonnull align 1 dereferenceable(1) %763)
          to label %7641 unwind label %7667

7641:                                             ; preds = %7639
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %760, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %761, ptr noundef nonnull align 8 dereferenceable(32) %762)
          to label %7642 unwind label %7671

7642:                                             ; preds = %7641
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %762) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %763) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %763) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %762) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %761) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %761) #8
  %7643 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %760)
          to label %7644 unwind label %7677

7644:                                             ; preds = %7642
  br i1 %7643, label %7645, label %7681

7645:                                             ; preds = %7644
  br label %7701

7646:                                             ; preds = %7609, %7586
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %750) #8
  br label %7647

7647:                                             ; preds = %7646, %7585
  call void @llvm.lifetime.end.p0(i64 16, ptr %750) #8
  br label %7648

7648:                                             ; preds = %7647, %7568
  call void @llvm.lifetime.end.p0(i64 8, ptr %749) #8
  br label %7649

7649:                                             ; preds = %7648, %7564
  call void @llvm.lifetime.end.p0(i64 4, ptr %747) #8
  br label %7650

7650:                                             ; preds = %7649, %7560
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %746) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %746) #8
  br label %7986

7651:                                             ; preds = %7617
  %7652 = landingpad { ptr, i32 }
          cleanup
  %7653 = extractvalue { ptr, i32 } %7652, 0
  store ptr %7653, ptr %5, align 8
  %7654 = extractvalue { ptr, i32 } %7652, 1
  store i32 %7654, ptr %6, align 4
  br label %7741

7655:                                             ; preds = %7619
  %7656 = landingpad { ptr, i32 }
          cleanup
  %7657 = extractvalue { ptr, i32 } %7656, 0
  store ptr %7657, ptr %5, align 8
  %7658 = extractvalue { ptr, i32 } %7656, 1
  store i32 %7658, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %758) #8
  br label %7740

7659:                                             ; preds = %7620
  %7660 = landingpad { ptr, i32 }
          cleanup
  %7661 = extractvalue { ptr, i32 } %7660, 0
  store ptr %7661, ptr %5, align 8
  %7662 = extractvalue { ptr, i32 } %7660, 1
  store i32 %7662, ptr %6, align 4
  br label %7739

7663:                                             ; preds = %7627
  %7664 = landingpad { ptr, i32 }
          cleanup
  %7665 = extractvalue { ptr, i32 } %7664, 0
  store ptr %7665, ptr %5, align 8
  %7666 = extractvalue { ptr, i32 } %7664, 1
  store i32 %7666, ptr %6, align 4
  br label %7676

7667:                                             ; preds = %7639
  %7668 = landingpad { ptr, i32 }
          cleanup
  %7669 = extractvalue { ptr, i32 } %7668, 0
  store ptr %7669, ptr %5, align 8
  %7670 = extractvalue { ptr, i32 } %7668, 1
  store i32 %7670, ptr %6, align 4
  br label %7675

7671:                                             ; preds = %7641
  %7672 = landingpad { ptr, i32 }
          cleanup
  %7673 = extractvalue { ptr, i32 } %7672, 0
  store ptr %7673, ptr %5, align 8
  %7674 = extractvalue { ptr, i32 } %7672, 1
  store i32 %7674, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %762) #8
  br label %7675

7675:                                             ; preds = %7671, %7667
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %763) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %763) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %762) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %761) #8
  br label %7676

7676:                                             ; preds = %7675, %7663
  call void @llvm.lifetime.end.p0(i64 32, ptr %761) #8
  br label %7738

7677:                                             ; preds = %7642
  %7678 = landingpad { ptr, i32 }
          cleanup
  %7679 = extractvalue { ptr, i32 } %7678, 0
  store ptr %7679, ptr %5, align 8
  %7680 = extractvalue { ptr, i32 } %7678, 1
  store i32 %7680, ptr %6, align 4
  br label %7737

7681:                                             ; preds = %7644
  call void @llvm.lifetime.start.p0(i64 8, ptr %764) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %764)
          to label %7682 unwind label %7687

7682:                                             ; preds = %7681
  call void @llvm.lifetime.start.p0(i64 8, ptr %765) #8
  %7683 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %760)
          to label %7684 unwind label %7691

7684:                                             ; preds = %7682
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %765, i32 noundef 1, ptr noundef @.str.3, i32 noundef 152, ptr noundef %7683)
          to label %7685 unwind label %7691

7685:                                             ; preds = %7684
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %765, ptr noundef nonnull align 8 dereferenceable(8) %764)
          to label %7686 unwind label %7695

7686:                                             ; preds = %7685
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %765) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %765) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %764) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %764) #8
  br label %7701

7687:                                             ; preds = %7681
  %7688 = landingpad { ptr, i32 }
          cleanup
  %7689 = extractvalue { ptr, i32 } %7688, 0
  store ptr %7689, ptr %5, align 8
  %7690 = extractvalue { ptr, i32 } %7688, 1
  store i32 %7690, ptr %6, align 4
  br label %7700

7691:                                             ; preds = %7684, %7682
  %7692 = landingpad { ptr, i32 }
          cleanup
  %7693 = extractvalue { ptr, i32 } %7692, 0
  store ptr %7693, ptr %5, align 8
  %7694 = extractvalue { ptr, i32 } %7692, 1
  store i32 %7694, ptr %6, align 4
  br label %7699

7695:                                             ; preds = %7685
  %7696 = landingpad { ptr, i32 }
          cleanup
  %7697 = extractvalue { ptr, i32 } %7696, 0
  store ptr %7697, ptr %5, align 8
  %7698 = extractvalue { ptr, i32 } %7696, 1
  store i32 %7698, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %765) #8
  br label %7699

7699:                                             ; preds = %7695, %7691
  call void @llvm.lifetime.end.p0(i64 8, ptr %765) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %764) #8
  br label %7700

7700:                                             ; preds = %7699, %7687
  call void @llvm.lifetime.end.p0(i64 8, ptr %764) #8
  br label %7737

7701:                                             ; preds = %7686, %7645
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %760) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %760) #8
  %7702 = load ptr, ptr %759, align 8, !tbaa !5
  %7703 = icmp eq ptr %7702, null
  br i1 %7703, label %7705, label %7704

7704:                                             ; preds = %7701
  call void @_ZdaPv(ptr noundef %7702) #10
  br label %7705

7705:                                             ; preds = %7704, %7701
  call void @llvm.lifetime.end.p0(i64 8, ptr %759) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %757) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %756) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %756) #8
  br label %7706

7706:                                             ; preds = %7705
  br label %7707

7707:                                             ; preds = %7706
  br label %7708

7708:                                             ; preds = %7707
  call void @llvm.lifetime.start.p0(i64 392, ptr %766) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %766)
  %7709 = getelementptr inbounds i8, ptr %766, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %7709, ptr noundef @.str.64, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %7710 unwind label %7742

7710:                                             ; preds = %7708
  call void @llvm.lifetime.start.p0(i64 4, ptr %767) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %768) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %768, ptr noundef nonnull align 8 dereferenceable(128) %766)
          to label %7711 unwind label %7746

7711:                                             ; preds = %7710
  %7712 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %768) #8
  %7713 = add i64 %7712, 3
  %7714 = trunc i64 %7713 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %768) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %768) #8
  store i32 %7714, ptr %767, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %769) #8
  %7715 = load i32, ptr %767, align 4, !tbaa !11
  %7716 = sext i32 %7715 to i64
  %7717 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %7716) #9
          to label %7718 unwind label %7750

7718:                                             ; preds = %7711
  store ptr %7717, ptr %769, align 8, !tbaa !5
  %7719 = load ptr, ptr %769, align 8, !tbaa !5
  %7720 = load i32, ptr %767, align 4, !tbaa !11
  %7721 = sub nsw i32 %7720, 1
  %7722 = sext i32 %7721 to i64
  %7723 = getelementptr inbounds i8, ptr %7719, i64 %7722
  store i8 0, ptr %7723, align 1, !tbaa !13
  %7724 = load ptr, ptr %769, align 8, !tbaa !5
  %7725 = load i32, ptr %767, align 4, !tbaa !11
  %7726 = sub nsw i32 %7725, 2
  %7727 = sext i32 %7726 to i64
  %7728 = load double, ptr %3, align 8, !tbaa !9
  %7729 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %7724, i64 noundef %7727, ptr noundef @.str.64, double noundef %7728) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %770) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %771) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %771, ptr noundef nonnull align 8 dereferenceable(128) %766)
          to label %7730 unwind label %7754

7730:                                             ; preds = %7718
  call void @llvm.lifetime.start.p0(i64 32, ptr %772) #8
  %7731 = load ptr, ptr %769, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %773) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %773) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %772, ptr noundef %7731, ptr noundef nonnull align 1 dereferenceable(1) %773)
          to label %7732 unwind label %7758

7732:                                             ; preds = %7730
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %770, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %771, ptr noundef nonnull align 8 dereferenceable(32) %772)
          to label %7733 unwind label %7762

7733:                                             ; preds = %7732
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %772) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %773) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %773) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %772) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %771) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %771) #8
  %7734 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %770)
          to label %7735 unwind label %7768

7735:                                             ; preds = %7733
  br i1 %7734, label %7736, label %7772

7736:                                             ; preds = %7735
  br label %7792

7737:                                             ; preds = %7700, %7677
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %760) #8
  br label %7738

7738:                                             ; preds = %7737, %7676
  call void @llvm.lifetime.end.p0(i64 16, ptr %760) #8
  br label %7739

7739:                                             ; preds = %7738, %7659
  call void @llvm.lifetime.end.p0(i64 8, ptr %759) #8
  br label %7740

7740:                                             ; preds = %7739, %7655
  call void @llvm.lifetime.end.p0(i64 4, ptr %757) #8
  br label %7741

7741:                                             ; preds = %7740, %7651
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %756) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %756) #8
  br label %7986

7742:                                             ; preds = %7708
  %7743 = landingpad { ptr, i32 }
          cleanup
  %7744 = extractvalue { ptr, i32 } %7743, 0
  store ptr %7744, ptr %5, align 8
  %7745 = extractvalue { ptr, i32 } %7743, 1
  store i32 %7745, ptr %6, align 4
  br label %7832

7746:                                             ; preds = %7710
  %7747 = landingpad { ptr, i32 }
          cleanup
  %7748 = extractvalue { ptr, i32 } %7747, 0
  store ptr %7748, ptr %5, align 8
  %7749 = extractvalue { ptr, i32 } %7747, 1
  store i32 %7749, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %768) #8
  br label %7831

7750:                                             ; preds = %7711
  %7751 = landingpad { ptr, i32 }
          cleanup
  %7752 = extractvalue { ptr, i32 } %7751, 0
  store ptr %7752, ptr %5, align 8
  %7753 = extractvalue { ptr, i32 } %7751, 1
  store i32 %7753, ptr %6, align 4
  br label %7830

7754:                                             ; preds = %7718
  %7755 = landingpad { ptr, i32 }
          cleanup
  %7756 = extractvalue { ptr, i32 } %7755, 0
  store ptr %7756, ptr %5, align 8
  %7757 = extractvalue { ptr, i32 } %7755, 1
  store i32 %7757, ptr %6, align 4
  br label %7767

7758:                                             ; preds = %7730
  %7759 = landingpad { ptr, i32 }
          cleanup
  %7760 = extractvalue { ptr, i32 } %7759, 0
  store ptr %7760, ptr %5, align 8
  %7761 = extractvalue { ptr, i32 } %7759, 1
  store i32 %7761, ptr %6, align 4
  br label %7766

7762:                                             ; preds = %7732
  %7763 = landingpad { ptr, i32 }
          cleanup
  %7764 = extractvalue { ptr, i32 } %7763, 0
  store ptr %7764, ptr %5, align 8
  %7765 = extractvalue { ptr, i32 } %7763, 1
  store i32 %7765, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %772) #8
  br label %7766

7766:                                             ; preds = %7762, %7758
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %773) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %773) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %772) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %771) #8
  br label %7767

7767:                                             ; preds = %7766, %7754
  call void @llvm.lifetime.end.p0(i64 32, ptr %771) #8
  br label %7829

7768:                                             ; preds = %7733
  %7769 = landingpad { ptr, i32 }
          cleanup
  %7770 = extractvalue { ptr, i32 } %7769, 0
  store ptr %7770, ptr %5, align 8
  %7771 = extractvalue { ptr, i32 } %7769, 1
  store i32 %7771, ptr %6, align 4
  br label %7828

7772:                                             ; preds = %7735
  call void @llvm.lifetime.start.p0(i64 8, ptr %774) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %774)
          to label %7773 unwind label %7778

7773:                                             ; preds = %7772
  call void @llvm.lifetime.start.p0(i64 8, ptr %775) #8
  %7774 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %770)
          to label %7775 unwind label %7782

7775:                                             ; preds = %7773
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %775, i32 noundef 1, ptr noundef @.str.3, i32 noundef 153, ptr noundef %7774)
          to label %7776 unwind label %7782

7776:                                             ; preds = %7775
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %775, ptr noundef nonnull align 8 dereferenceable(8) %774)
          to label %7777 unwind label %7786

7777:                                             ; preds = %7776
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %775) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %775) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %774) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %774) #8
  br label %7792

7778:                                             ; preds = %7772
  %7779 = landingpad { ptr, i32 }
          cleanup
  %7780 = extractvalue { ptr, i32 } %7779, 0
  store ptr %7780, ptr %5, align 8
  %7781 = extractvalue { ptr, i32 } %7779, 1
  store i32 %7781, ptr %6, align 4
  br label %7791

7782:                                             ; preds = %7775, %7773
  %7783 = landingpad { ptr, i32 }
          cleanup
  %7784 = extractvalue { ptr, i32 } %7783, 0
  store ptr %7784, ptr %5, align 8
  %7785 = extractvalue { ptr, i32 } %7783, 1
  store i32 %7785, ptr %6, align 4
  br label %7790

7786:                                             ; preds = %7776
  %7787 = landingpad { ptr, i32 }
          cleanup
  %7788 = extractvalue { ptr, i32 } %7787, 0
  store ptr %7788, ptr %5, align 8
  %7789 = extractvalue { ptr, i32 } %7787, 1
  store i32 %7789, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %775) #8
  br label %7790

7790:                                             ; preds = %7786, %7782
  call void @llvm.lifetime.end.p0(i64 8, ptr %775) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %774) #8
  br label %7791

7791:                                             ; preds = %7790, %7778
  call void @llvm.lifetime.end.p0(i64 8, ptr %774) #8
  br label %7828

7792:                                             ; preds = %7777, %7736
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %770) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %770) #8
  %7793 = load ptr, ptr %769, align 8, !tbaa !5
  %7794 = icmp eq ptr %7793, null
  br i1 %7794, label %7796, label %7795

7795:                                             ; preds = %7792
  call void @_ZdaPv(ptr noundef %7793) #10
  br label %7796

7796:                                             ; preds = %7795, %7792
  call void @llvm.lifetime.end.p0(i64 8, ptr %769) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %767) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %766) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %766) #8
  br label %7797

7797:                                             ; preds = %7796
  br label %7798

7798:                                             ; preds = %7797
  br label %7799

7799:                                             ; preds = %7798
  call void @llvm.lifetime.start.p0(i64 392, ptr %776) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %776)
  %7800 = getelementptr inbounds i8, ptr %776, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %7800, ptr noundef @.str.65, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %7801 unwind label %7833

7801:                                             ; preds = %7799
  call void @llvm.lifetime.start.p0(i64 4, ptr %777) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %778) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %778, ptr noundef nonnull align 8 dereferenceable(128) %776)
          to label %7802 unwind label %7837

7802:                                             ; preds = %7801
  %7803 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %778) #8
  %7804 = add i64 %7803, 3
  %7805 = trunc i64 %7804 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %778) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %778) #8
  store i32 %7805, ptr %777, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %779) #8
  %7806 = load i32, ptr %777, align 4, !tbaa !11
  %7807 = sext i32 %7806 to i64
  %7808 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %7807) #9
          to label %7809 unwind label %7841

7809:                                             ; preds = %7802
  store ptr %7808, ptr %779, align 8, !tbaa !5
  %7810 = load ptr, ptr %779, align 8, !tbaa !5
  %7811 = load i32, ptr %777, align 4, !tbaa !11
  %7812 = sub nsw i32 %7811, 1
  %7813 = sext i32 %7812 to i64
  %7814 = getelementptr inbounds i8, ptr %7810, i64 %7813
  store i8 0, ptr %7814, align 1, !tbaa !13
  %7815 = load ptr, ptr %779, align 8, !tbaa !5
  %7816 = load i32, ptr %777, align 4, !tbaa !11
  %7817 = sub nsw i32 %7816, 2
  %7818 = sext i32 %7817 to i64
  %7819 = load double, ptr %3, align 8, !tbaa !9
  %7820 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %7815, i64 noundef %7818, ptr noundef @.str.65, double noundef %7819) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %780) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %781) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %781, ptr noundef nonnull align 8 dereferenceable(128) %776)
          to label %7821 unwind label %7845

7821:                                             ; preds = %7809
  call void @llvm.lifetime.start.p0(i64 32, ptr %782) #8
  %7822 = load ptr, ptr %779, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %783) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %783) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %782, ptr noundef %7822, ptr noundef nonnull align 1 dereferenceable(1) %783)
          to label %7823 unwind label %7849

7823:                                             ; preds = %7821
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %780, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %781, ptr noundef nonnull align 8 dereferenceable(32) %782)
          to label %7824 unwind label %7853

7824:                                             ; preds = %7823
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %782) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %783) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %783) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %782) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %781) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %781) #8
  %7825 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %780)
          to label %7826 unwind label %7859

7826:                                             ; preds = %7824
  br i1 %7825, label %7827, label %7863

7827:                                             ; preds = %7826
  br label %7883

7828:                                             ; preds = %7791, %7768
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %770) #8
  br label %7829

7829:                                             ; preds = %7828, %7767
  call void @llvm.lifetime.end.p0(i64 16, ptr %770) #8
  br label %7830

7830:                                             ; preds = %7829, %7750
  call void @llvm.lifetime.end.p0(i64 8, ptr %769) #8
  br label %7831

7831:                                             ; preds = %7830, %7746
  call void @llvm.lifetime.end.p0(i64 4, ptr %767) #8
  br label %7832

7832:                                             ; preds = %7831, %7742
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %766) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %766) #8
  br label %7986

7833:                                             ; preds = %7799
  %7834 = landingpad { ptr, i32 }
          cleanup
  %7835 = extractvalue { ptr, i32 } %7834, 0
  store ptr %7835, ptr %5, align 8
  %7836 = extractvalue { ptr, i32 } %7834, 1
  store i32 %7836, ptr %6, align 4
  br label %7923

7837:                                             ; preds = %7801
  %7838 = landingpad { ptr, i32 }
          cleanup
  %7839 = extractvalue { ptr, i32 } %7838, 0
  store ptr %7839, ptr %5, align 8
  %7840 = extractvalue { ptr, i32 } %7838, 1
  store i32 %7840, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %778) #8
  br label %7922

7841:                                             ; preds = %7802
  %7842 = landingpad { ptr, i32 }
          cleanup
  %7843 = extractvalue { ptr, i32 } %7842, 0
  store ptr %7843, ptr %5, align 8
  %7844 = extractvalue { ptr, i32 } %7842, 1
  store i32 %7844, ptr %6, align 4
  br label %7921

7845:                                             ; preds = %7809
  %7846 = landingpad { ptr, i32 }
          cleanup
  %7847 = extractvalue { ptr, i32 } %7846, 0
  store ptr %7847, ptr %5, align 8
  %7848 = extractvalue { ptr, i32 } %7846, 1
  store i32 %7848, ptr %6, align 4
  br label %7858

7849:                                             ; preds = %7821
  %7850 = landingpad { ptr, i32 }
          cleanup
  %7851 = extractvalue { ptr, i32 } %7850, 0
  store ptr %7851, ptr %5, align 8
  %7852 = extractvalue { ptr, i32 } %7850, 1
  store i32 %7852, ptr %6, align 4
  br label %7857

7853:                                             ; preds = %7823
  %7854 = landingpad { ptr, i32 }
          cleanup
  %7855 = extractvalue { ptr, i32 } %7854, 0
  store ptr %7855, ptr %5, align 8
  %7856 = extractvalue { ptr, i32 } %7854, 1
  store i32 %7856, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %782) #8
  br label %7857

7857:                                             ; preds = %7853, %7849
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %783) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %783) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %782) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %781) #8
  br label %7858

7858:                                             ; preds = %7857, %7845
  call void @llvm.lifetime.end.p0(i64 32, ptr %781) #8
  br label %7920

7859:                                             ; preds = %7824
  %7860 = landingpad { ptr, i32 }
          cleanup
  %7861 = extractvalue { ptr, i32 } %7860, 0
  store ptr %7861, ptr %5, align 8
  %7862 = extractvalue { ptr, i32 } %7860, 1
  store i32 %7862, ptr %6, align 4
  br label %7919

7863:                                             ; preds = %7826
  call void @llvm.lifetime.start.p0(i64 8, ptr %784) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %784)
          to label %7864 unwind label %7869

7864:                                             ; preds = %7863
  call void @llvm.lifetime.start.p0(i64 8, ptr %785) #8
  %7865 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %780)
          to label %7866 unwind label %7873

7866:                                             ; preds = %7864
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %785, i32 noundef 1, ptr noundef @.str.3, i32 noundef 154, ptr noundef %7865)
          to label %7867 unwind label %7873

7867:                                             ; preds = %7866
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %785, ptr noundef nonnull align 8 dereferenceable(8) %784)
          to label %7868 unwind label %7877

7868:                                             ; preds = %7867
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %785) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %785) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %784) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %784) #8
  br label %7883

7869:                                             ; preds = %7863
  %7870 = landingpad { ptr, i32 }
          cleanup
  %7871 = extractvalue { ptr, i32 } %7870, 0
  store ptr %7871, ptr %5, align 8
  %7872 = extractvalue { ptr, i32 } %7870, 1
  store i32 %7872, ptr %6, align 4
  br label %7882

7873:                                             ; preds = %7866, %7864
  %7874 = landingpad { ptr, i32 }
          cleanup
  %7875 = extractvalue { ptr, i32 } %7874, 0
  store ptr %7875, ptr %5, align 8
  %7876 = extractvalue { ptr, i32 } %7874, 1
  store i32 %7876, ptr %6, align 4
  br label %7881

7877:                                             ; preds = %7867
  %7878 = landingpad { ptr, i32 }
          cleanup
  %7879 = extractvalue { ptr, i32 } %7878, 0
  store ptr %7879, ptr %5, align 8
  %7880 = extractvalue { ptr, i32 } %7878, 1
  store i32 %7880, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %785) #8
  br label %7881

7881:                                             ; preds = %7877, %7873
  call void @llvm.lifetime.end.p0(i64 8, ptr %785) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %784) #8
  br label %7882

7882:                                             ; preds = %7881, %7869
  call void @llvm.lifetime.end.p0(i64 8, ptr %784) #8
  br label %7919

7883:                                             ; preds = %7868, %7827
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %780) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %780) #8
  %7884 = load ptr, ptr %779, align 8, !tbaa !5
  %7885 = icmp eq ptr %7884, null
  br i1 %7885, label %7887, label %7886

7886:                                             ; preds = %7883
  call void @_ZdaPv(ptr noundef %7884) #10
  br label %7887

7887:                                             ; preds = %7886, %7883
  call void @llvm.lifetime.end.p0(i64 8, ptr %779) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %777) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %776) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %776) #8
  br label %7888

7888:                                             ; preds = %7887
  br label %7889

7889:                                             ; preds = %7888
  br label %7890

7890:                                             ; preds = %7889
  call void @llvm.lifetime.start.p0(i64 392, ptr %786) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %786)
  %7891 = getelementptr inbounds i8, ptr %786, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %7891, ptr noundef @.str.66, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %7892 unwind label %7924

7892:                                             ; preds = %7890
  call void @llvm.lifetime.start.p0(i64 4, ptr %787) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %788) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %788, ptr noundef nonnull align 8 dereferenceable(128) %786)
          to label %7893 unwind label %7928

7893:                                             ; preds = %7892
  %7894 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %788) #8
  %7895 = add i64 %7894, 3
  %7896 = trunc i64 %7895 to i32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %788) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %788) #8
  store i32 %7896, ptr %787, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %789) #8
  %7897 = load i32, ptr %787, align 4, !tbaa !11
  %7898 = sext i32 %7897 to i64
  %7899 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %7898) #9
          to label %7900 unwind label %7932

7900:                                             ; preds = %7893
  store ptr %7899, ptr %789, align 8, !tbaa !5
  %7901 = load ptr, ptr %789, align 8, !tbaa !5
  %7902 = load i32, ptr %787, align 4, !tbaa !11
  %7903 = sub nsw i32 %7902, 1
  %7904 = sext i32 %7903 to i64
  %7905 = getelementptr inbounds i8, ptr %7901, i64 %7904
  store i8 0, ptr %7905, align 1, !tbaa !13
  %7906 = load ptr, ptr %789, align 8, !tbaa !5
  %7907 = load i32, ptr %787, align 4, !tbaa !11
  %7908 = sub nsw i32 %7907, 2
  %7909 = sext i32 %7908 to i64
  %7910 = load double, ptr %3, align 8, !tbaa !9
  %7911 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %7906, i64 noundef %7909, ptr noundef @.str.66, double noundef %7910) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %790) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %791) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %791, ptr noundef nonnull align 8 dereferenceable(128) %786)
          to label %7912 unwind label %7936

7912:                                             ; preds = %7900
  call void @llvm.lifetime.start.p0(i64 32, ptr %792) #8
  %7913 = load ptr, ptr %789, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %793) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %793) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %792, ptr noundef %7913, ptr noundef nonnull align 1 dereferenceable(1) %793)
          to label %7914 unwind label %7940

7914:                                             ; preds = %7912
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %790, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %791, ptr noundef nonnull align 8 dereferenceable(32) %792)
          to label %7915 unwind label %7944

7915:                                             ; preds = %7914
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %792) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %793) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %793) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %792) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %791) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %791) #8
  %7916 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %790)
          to label %7917 unwind label %7950

7917:                                             ; preds = %7915
  br i1 %7916, label %7918, label %7954

7918:                                             ; preds = %7917
  br label %7974

7919:                                             ; preds = %7882, %7859
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %780) #8
  br label %7920

7920:                                             ; preds = %7919, %7858
  call void @llvm.lifetime.end.p0(i64 16, ptr %780) #8
  br label %7921

7921:                                             ; preds = %7920, %7841
  call void @llvm.lifetime.end.p0(i64 8, ptr %779) #8
  br label %7922

7922:                                             ; preds = %7921, %7837
  call void @llvm.lifetime.end.p0(i64 4, ptr %777) #8
  br label %7923

7923:                                             ; preds = %7922, %7833
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %776) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %776) #8
  br label %7986

7924:                                             ; preds = %7890
  %7925 = landingpad { ptr, i32 }
          cleanup
  %7926 = extractvalue { ptr, i32 } %7925, 0
  store ptr %7926, ptr %5, align 8
  %7927 = extractvalue { ptr, i32 } %7925, 1
  store i32 %7927, ptr %6, align 4
  br label %7985

7928:                                             ; preds = %7892
  %7929 = landingpad { ptr, i32 }
          cleanup
  %7930 = extractvalue { ptr, i32 } %7929, 0
  store ptr %7930, ptr %5, align 8
  %7931 = extractvalue { ptr, i32 } %7929, 1
  store i32 %7931, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %788) #8
  br label %7984

7932:                                             ; preds = %7893
  %7933 = landingpad { ptr, i32 }
          cleanup
  %7934 = extractvalue { ptr, i32 } %7933, 0
  store ptr %7934, ptr %5, align 8
  %7935 = extractvalue { ptr, i32 } %7933, 1
  store i32 %7935, ptr %6, align 4
  br label %7983

7936:                                             ; preds = %7900
  %7937 = landingpad { ptr, i32 }
          cleanup
  %7938 = extractvalue { ptr, i32 } %7937, 0
  store ptr %7938, ptr %5, align 8
  %7939 = extractvalue { ptr, i32 } %7937, 1
  store i32 %7939, ptr %6, align 4
  br label %7949

7940:                                             ; preds = %7912
  %7941 = landingpad { ptr, i32 }
          cleanup
  %7942 = extractvalue { ptr, i32 } %7941, 0
  store ptr %7942, ptr %5, align 8
  %7943 = extractvalue { ptr, i32 } %7941, 1
  store i32 %7943, ptr %6, align 4
  br label %7948

7944:                                             ; preds = %7914
  %7945 = landingpad { ptr, i32 }
          cleanup
  %7946 = extractvalue { ptr, i32 } %7945, 0
  store ptr %7946, ptr %5, align 8
  %7947 = extractvalue { ptr, i32 } %7945, 1
  store i32 %7947, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %792) #8
  br label %7948

7948:                                             ; preds = %7944, %7940
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %793) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %793) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %792) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %791) #8
  br label %7949

7949:                                             ; preds = %7948, %7936
  call void @llvm.lifetime.end.p0(i64 32, ptr %791) #8
  br label %7982

7950:                                             ; preds = %7915
  %7951 = landingpad { ptr, i32 }
          cleanup
  %7952 = extractvalue { ptr, i32 } %7951, 0
  store ptr %7952, ptr %5, align 8
  %7953 = extractvalue { ptr, i32 } %7951, 1
  store i32 %7953, ptr %6, align 4
  br label %7981

7954:                                             ; preds = %7917
  call void @llvm.lifetime.start.p0(i64 8, ptr %794) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %794)
          to label %7955 unwind label %7960

7955:                                             ; preds = %7954
  call void @llvm.lifetime.start.p0(i64 8, ptr %795) #8
  %7956 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %790)
          to label %7957 unwind label %7964

7957:                                             ; preds = %7955
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %795, i32 noundef 1, ptr noundef @.str.3, i32 noundef 155, ptr noundef %7956)
          to label %7958 unwind label %7964

7958:                                             ; preds = %7957
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %795, ptr noundef nonnull align 8 dereferenceable(8) %794)
          to label %7959 unwind label %7968

7959:                                             ; preds = %7958
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %795) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %795) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %794) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %794) #8
  br label %7974

7960:                                             ; preds = %7954
  %7961 = landingpad { ptr, i32 }
          cleanup
  %7962 = extractvalue { ptr, i32 } %7961, 0
  store ptr %7962, ptr %5, align 8
  %7963 = extractvalue { ptr, i32 } %7961, 1
  store i32 %7963, ptr %6, align 4
  br label %7973

7964:                                             ; preds = %7957, %7955
  %7965 = landingpad { ptr, i32 }
          cleanup
  %7966 = extractvalue { ptr, i32 } %7965, 0
  store ptr %7966, ptr %5, align 8
  %7967 = extractvalue { ptr, i32 } %7965, 1
  store i32 %7967, ptr %6, align 4
  br label %7972

7968:                                             ; preds = %7958
  %7969 = landingpad { ptr, i32 }
          cleanup
  %7970 = extractvalue { ptr, i32 } %7969, 0
  store ptr %7970, ptr %5, align 8
  %7971 = extractvalue { ptr, i32 } %7969, 1
  store i32 %7971, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %795) #8
  br label %7972

7972:                                             ; preds = %7968, %7964
  call void @llvm.lifetime.end.p0(i64 8, ptr %795) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %794) #8
  br label %7973

7973:                                             ; preds = %7972, %7960
  call void @llvm.lifetime.end.p0(i64 8, ptr %794) #8
  br label %7981

7974:                                             ; preds = %7959, %7918
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %790) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %790) #8
  %7975 = load ptr, ptr %789, align 8, !tbaa !5
  %7976 = icmp eq ptr %7975, null
  br i1 %7976, label %7978, label %7977

7977:                                             ; preds = %7974
  call void @_ZdaPv(ptr noundef %7975) #10
  br label %7978

7978:                                             ; preds = %7977, %7974
  call void @llvm.lifetime.end.p0(i64 8, ptr %789) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %787) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %786) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %786) #8
  br label %7979

7979:                                             ; preds = %7978
  br label %7980

7980:                                             ; preds = %7979
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #8
  ret void

7981:                                             ; preds = %7973, %7950
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %790) #8
  br label %7982

7982:                                             ; preds = %7981, %7949
  call void @llvm.lifetime.end.p0(i64 16, ptr %790) #8
  br label %7983

7983:                                             ; preds = %7982, %7932
  call void @llvm.lifetime.end.p0(i64 8, ptr %789) #8
  br label %7984

7984:                                             ; preds = %7983, %7928
  call void @llvm.lifetime.end.p0(i64 4, ptr %787) #8
  br label %7985

7985:                                             ; preds = %7984, %7924
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %786) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %786) #8
  br label %7986

7986:                                             ; preds = %7985, %7923, %7832, %7741, %7650, %7559, %7468, %7377, %7286, %7195, %7104, %7013, %6922, %6831, %6740, %6649, %6558, %6467, %6376, %6285, %6194, %6103, %6012, %5921, %5830, %5739, %5648, %5557, %5466, %5375, %5284, %5193, %5102, %5011, %4920, %4829, %4738, %4647, %4556, %4465, %4374, %4283, %4192, %4101, %4010, %3919, %3828, %3737, %3646, %3555, %3464, %3373, %3282, %3191, %3100, %3009, %2918, %2827, %2736, %2645, %2554, %2463, %2372, %2281, %2190, %2099, %2008, %1917, %1826, %1735, %1644, %1553, %1462, %1371, %1280, %1189, %1098, %1007, %916
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #8
  br label %7987

7987:                                             ; preds = %7986
  %7988 = load ptr, ptr %5, align 8
  %7989 = load i32, ptr %6, align 4
  %7990 = insertvalue { ptr, i32 } poison, ptr %7988, 0
  %7991 = insertvalue { ptr, i32 } %7990, i32 %7989, 1
  resume { ptr, i32 } %7991
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef nonnull align 8 dereferenceable(8)) #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"="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 #3 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress 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 = { nobuiltin 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 #8 = { nounwind }
attributes #9 = { builtin allocsize(0) }
attributes #10 = { builtin 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 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!7, !7, i64 0}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.testing::AssertionResult" = type { i8, %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::allocator" = type { i8 }
%"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 }

@.str.3 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [8 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

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

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #2 align 2

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #3

; Function Attrs: nofree nounwind
declare noundef i32 @snprintf(ptr noalias nocapture noundef writeonly, i64 noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 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 #5

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

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

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

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

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

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) local_unnamed_addr #8

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN26CPrintf_FloatingPoint_Test8TestBodyEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(16) %0) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca double, align 8
  %3 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.testing::AssertionResult", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator", align 1
  %9 = alloca %"class.testing::Message", align 8
  %10 = alloca %"class.testing::internal::AssertHelper", align 8
  %11 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.testing::AssertionResult", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator", align 1
  %17 = alloca %"class.testing::Message", align 8
  %18 = alloca %"class.testing::internal::AssertHelper", align 8
  %19 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.testing::AssertionResult", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator", align 1
  %25 = alloca %"class.testing::Message", align 8
  %26 = alloca %"class.testing::internal::AssertHelper", align 8
  %27 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.testing::AssertionResult", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator", align 1
  %33 = alloca %"class.testing::Message", align 8
  %34 = alloca %"class.testing::internal::AssertHelper", align 8
  %35 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.testing::AssertionResult", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator", align 1
  %41 = alloca %"class.testing::Message", align 8
  %42 = alloca %"class.testing::internal::AssertHelper", align 8
  %43 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.testing::AssertionResult", align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator", align 1
  %49 = alloca %"class.testing::Message", align 8
  %50 = alloca %"class.testing::internal::AssertHelper", align 8
  %51 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.testing::AssertionResult", align 8
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::allocator", align 1
  %57 = alloca %"class.testing::Message", align 8
  %58 = alloca %"class.testing::internal::AssertHelper", align 8
  %59 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.testing::AssertionResult", align 8
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::allocator", align 1
  %65 = alloca %"class.testing::Message", align 8
  %66 = alloca %"class.testing::internal::AssertHelper", align 8
  %67 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca %"class.testing::AssertionResult", align 8
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca %"class.std::allocator", align 1
  %73 = alloca %"class.testing::Message", align 8
  %74 = alloca %"class.testing::internal::AssertHelper", align 8
  %75 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.testing::AssertionResult", align 8
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca %"class.std::__cxx11::basic_string", align 8
  %80 = alloca %"class.std::allocator", align 1
  %81 = alloca %"class.testing::Message", align 8
  %82 = alloca %"class.testing::internal::AssertHelper", align 8
  %83 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %84 = alloca %"class.std::__cxx11::basic_string", align 8
  %85 = alloca %"class.testing::AssertionResult", align 8
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca %"class.std::__cxx11::basic_string", align 8
  %88 = alloca %"class.std::allocator", align 1
  %89 = alloca %"class.testing::Message", align 8
  %90 = alloca %"class.testing::internal::AssertHelper", align 8
  %91 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca %"class.testing::AssertionResult", align 8
  %94 = alloca %"class.std::__cxx11::basic_string", align 8
  %95 = alloca %"class.std::__cxx11::basic_string", align 8
  %96 = alloca %"class.std::allocator", align 1
  %97 = alloca %"class.testing::Message", align 8
  %98 = alloca %"class.testing::internal::AssertHelper", align 8
  %99 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %100 = alloca %"class.std::__cxx11::basic_string", align 8
  %101 = alloca %"class.testing::AssertionResult", align 8
  %102 = alloca %"class.std::__cxx11::basic_string", align 8
  %103 = alloca %"class.std::__cxx11::basic_string", align 8
  %104 = alloca %"class.std::allocator", align 1
  %105 = alloca %"class.testing::Message", align 8
  %106 = alloca %"class.testing::internal::AssertHelper", align 8
  %107 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %108 = alloca %"class.std::__cxx11::basic_string", align 8
  %109 = alloca %"class.testing::AssertionResult", align 8
  %110 = alloca %"class.std::__cxx11::basic_string", align 8
  %111 = alloca %"class.std::__cxx11::basic_string", align 8
  %112 = alloca %"class.std::allocator", align 1
  %113 = alloca %"class.testing::Message", align 8
  %114 = alloca %"class.testing::internal::AssertHelper", align 8
  %115 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %116 = alloca %"class.std::__cxx11::basic_string", align 8
  %117 = alloca %"class.testing::AssertionResult", align 8
  %118 = alloca %"class.std::__cxx11::basic_string", align 8
  %119 = alloca %"class.std::__cxx11::basic_string", align 8
  %120 = alloca %"class.std::allocator", align 1
  %121 = alloca %"class.testing::Message", align 8
  %122 = alloca %"class.testing::internal::AssertHelper", align 8
  %123 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %124 = alloca %"class.std::__cxx11::basic_string", align 8
  %125 = alloca %"class.testing::AssertionResult", align 8
  %126 = alloca %"class.std::__cxx11::basic_string", align 8
  %127 = alloca %"class.std::__cxx11::basic_string", align 8
  %128 = alloca %"class.std::allocator", align 1
  %129 = alloca %"class.testing::Message", align 8
  %130 = alloca %"class.testing::internal::AssertHelper", align 8
  %131 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %132 = alloca %"class.std::__cxx11::basic_string", align 8
  %133 = alloca %"class.testing::AssertionResult", align 8
  %134 = alloca %"class.std::__cxx11::basic_string", align 8
  %135 = alloca %"class.std::__cxx11::basic_string", align 8
  %136 = alloca %"class.std::allocator", align 1
  %137 = alloca %"class.testing::Message", align 8
  %138 = alloca %"class.testing::internal::AssertHelper", align 8
  %139 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %140 = alloca %"class.std::__cxx11::basic_string", align 8
  %141 = alloca %"class.testing::AssertionResult", align 8
  %142 = alloca %"class.std::__cxx11::basic_string", align 8
  %143 = alloca %"class.std::__cxx11::basic_string", align 8
  %144 = alloca %"class.std::allocator", align 1
  %145 = alloca %"class.testing::Message", align 8
  %146 = alloca %"class.testing::internal::AssertHelper", align 8
  %147 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %148 = alloca %"class.std::__cxx11::basic_string", align 8
  %149 = alloca %"class.testing::AssertionResult", align 8
  %150 = alloca %"class.std::__cxx11::basic_string", align 8
  %151 = alloca %"class.std::__cxx11::basic_string", align 8
  %152 = alloca %"class.std::allocator", align 1
  %153 = alloca %"class.testing::Message", align 8
  %154 = alloca %"class.testing::internal::AssertHelper", align 8
  %155 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %156 = alloca %"class.std::__cxx11::basic_string", align 8
  %157 = alloca %"class.testing::AssertionResult", align 8
  %158 = alloca %"class.std::__cxx11::basic_string", align 8
  %159 = alloca %"class.std::__cxx11::basic_string", align 8
  %160 = alloca %"class.std::allocator", align 1
  %161 = alloca %"class.testing::Message", align 8
  %162 = alloca %"class.testing::internal::AssertHelper", align 8
  %163 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %164 = alloca %"class.std::__cxx11::basic_string", align 8
  %165 = alloca %"class.testing::AssertionResult", align 8
  %166 = alloca %"class.std::__cxx11::basic_string", align 8
  %167 = alloca %"class.std::__cxx11::basic_string", align 8
  %168 = alloca %"class.std::allocator", align 1
  %169 = alloca %"class.testing::Message", align 8
  %170 = alloca %"class.testing::internal::AssertHelper", align 8
  %171 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %172 = alloca %"class.std::__cxx11::basic_string", align 8
  %173 = alloca %"class.testing::AssertionResult", align 8
  %174 = alloca %"class.std::__cxx11::basic_string", align 8
  %175 = alloca %"class.std::__cxx11::basic_string", align 8
  %176 = alloca %"class.std::allocator", align 1
  %177 = alloca %"class.testing::Message", align 8
  %178 = alloca %"class.testing::internal::AssertHelper", align 8
  %179 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %180 = alloca %"class.std::__cxx11::basic_string", align 8
  %181 = alloca %"class.testing::AssertionResult", align 8
  %182 = alloca %"class.std::__cxx11::basic_string", align 8
  %183 = alloca %"class.std::__cxx11::basic_string", align 8
  %184 = alloca %"class.std::allocator", align 1
  %185 = alloca %"class.testing::Message", align 8
  %186 = alloca %"class.testing::internal::AssertHelper", align 8
  %187 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %188 = alloca %"class.std::__cxx11::basic_string", align 8
  %189 = alloca %"class.testing::AssertionResult", align 8
  %190 = alloca %"class.std::__cxx11::basic_string", align 8
  %191 = alloca %"class.std::__cxx11::basic_string", align 8
  %192 = alloca %"class.std::allocator", align 1
  %193 = alloca %"class.testing::Message", align 8
  %194 = alloca %"class.testing::internal::AssertHelper", align 8
  %195 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %196 = alloca %"class.std::__cxx11::basic_string", align 8
  %197 = alloca %"class.testing::AssertionResult", align 8
  %198 = alloca %"class.std::__cxx11::basic_string", align 8
  %199 = alloca %"class.std::__cxx11::basic_string", align 8
  %200 = alloca %"class.std::allocator", align 1
  %201 = alloca %"class.testing::Message", align 8
  %202 = alloca %"class.testing::internal::AssertHelper", align 8
  %203 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %204 = alloca %"class.std::__cxx11::basic_string", align 8
  %205 = alloca %"class.testing::AssertionResult", align 8
  %206 = alloca %"class.std::__cxx11::basic_string", align 8
  %207 = alloca %"class.std::__cxx11::basic_string", align 8
  %208 = alloca %"class.std::allocator", align 1
  %209 = alloca %"class.testing::Message", align 8
  %210 = alloca %"class.testing::internal::AssertHelper", align 8
  %211 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %212 = alloca %"class.std::__cxx11::basic_string", align 8
  %213 = alloca %"class.testing::AssertionResult", align 8
  %214 = alloca %"class.std::__cxx11::basic_string", align 8
  %215 = alloca %"class.std::__cxx11::basic_string", align 8
  %216 = alloca %"class.std::allocator", align 1
  %217 = alloca %"class.testing::Message", align 8
  %218 = alloca %"class.testing::internal::AssertHelper", align 8
  %219 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %220 = alloca %"class.std::__cxx11::basic_string", align 8
  %221 = alloca %"class.testing::AssertionResult", align 8
  %222 = alloca %"class.std::__cxx11::basic_string", align 8
  %223 = alloca %"class.std::__cxx11::basic_string", align 8
  %224 = alloca %"class.std::allocator", align 1
  %225 = alloca %"class.testing::Message", align 8
  %226 = alloca %"class.testing::internal::AssertHelper", align 8
  %227 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %228 = alloca %"class.std::__cxx11::basic_string", align 8
  %229 = alloca %"class.testing::AssertionResult", align 8
  %230 = alloca %"class.std::__cxx11::basic_string", align 8
  %231 = alloca %"class.std::__cxx11::basic_string", align 8
  %232 = alloca %"class.std::allocator", align 1
  %233 = alloca %"class.testing::Message", align 8
  %234 = alloca %"class.testing::internal::AssertHelper", align 8
  %235 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %236 = alloca %"class.std::__cxx11::basic_string", align 8
  %237 = alloca %"class.testing::AssertionResult", align 8
  %238 = alloca %"class.std::__cxx11::basic_string", align 8
  %239 = alloca %"class.std::__cxx11::basic_string", align 8
  %240 = alloca %"class.std::allocator", align 1
  %241 = alloca %"class.testing::Message", align 8
  %242 = alloca %"class.testing::internal::AssertHelper", align 8
  %243 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %244 = alloca %"class.std::__cxx11::basic_string", align 8
  %245 = alloca %"class.testing::AssertionResult", align 8
  %246 = alloca %"class.std::__cxx11::basic_string", align 8
  %247 = alloca %"class.std::__cxx11::basic_string", align 8
  %248 = alloca %"class.std::allocator", align 1
  %249 = alloca %"class.testing::Message", align 8
  %250 = alloca %"class.testing::internal::AssertHelper", align 8
  %251 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %252 = alloca %"class.std::__cxx11::basic_string", align 8
  %253 = alloca %"class.testing::AssertionResult", align 8
  %254 = alloca %"class.std::__cxx11::basic_string", align 8
  %255 = alloca %"class.std::__cxx11::basic_string", align 8
  %256 = alloca %"class.std::allocator", align 1
  %257 = alloca %"class.testing::Message", align 8
  %258 = alloca %"class.testing::internal::AssertHelper", align 8
  %259 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %260 = alloca %"class.std::__cxx11::basic_string", align 8
  %261 = alloca %"class.testing::AssertionResult", align 8
  %262 = alloca %"class.std::__cxx11::basic_string", align 8
  %263 = alloca %"class.std::__cxx11::basic_string", align 8
  %264 = alloca %"class.std::allocator", align 1
  %265 = alloca %"class.testing::Message", align 8
  %266 = alloca %"class.testing::internal::AssertHelper", align 8
  %267 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %268 = alloca %"class.std::__cxx11::basic_string", align 8
  %269 = alloca %"class.testing::AssertionResult", align 8
  %270 = alloca %"class.std::__cxx11::basic_string", align 8
  %271 = alloca %"class.std::__cxx11::basic_string", align 8
  %272 = alloca %"class.std::allocator", align 1
  %273 = alloca %"class.testing::Message", align 8
  %274 = alloca %"class.testing::internal::AssertHelper", align 8
  %275 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %276 = alloca %"class.std::__cxx11::basic_string", align 8
  %277 = alloca %"class.testing::AssertionResult", align 8
  %278 = alloca %"class.std::__cxx11::basic_string", align 8
  %279 = alloca %"class.std::__cxx11::basic_string", align 8
  %280 = alloca %"class.std::allocator", align 1
  %281 = alloca %"class.testing::Message", align 8
  %282 = alloca %"class.testing::internal::AssertHelper", align 8
  %283 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %284 = alloca %"class.std::__cxx11::basic_string", align 8
  %285 = alloca %"class.testing::AssertionResult", align 8
  %286 = alloca %"class.std::__cxx11::basic_string", align 8
  %287 = alloca %"class.std::__cxx11::basic_string", align 8
  %288 = alloca %"class.std::allocator", align 1
  %289 = alloca %"class.testing::Message", align 8
  %290 = alloca %"class.testing::internal::AssertHelper", align 8
  %291 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %292 = alloca %"class.std::__cxx11::basic_string", align 8
  %293 = alloca %"class.testing::AssertionResult", align 8
  %294 = alloca %"class.std::__cxx11::basic_string", align 8
  %295 = alloca %"class.std::__cxx11::basic_string", align 8
  %296 = alloca %"class.std::allocator", align 1
  %297 = alloca %"class.testing::Message", align 8
  %298 = alloca %"class.testing::internal::AssertHelper", align 8
  %299 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %300 = alloca %"class.std::__cxx11::basic_string", align 8
  %301 = alloca %"class.testing::AssertionResult", align 8
  %302 = alloca %"class.std::__cxx11::basic_string", align 8
  %303 = alloca %"class.std::__cxx11::basic_string", align 8
  %304 = alloca %"class.std::allocator", align 1
  %305 = alloca %"class.testing::Message", align 8
  %306 = alloca %"class.testing::internal::AssertHelper", align 8
  %307 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %308 = alloca %"class.std::__cxx11::basic_string", align 8
  %309 = alloca %"class.testing::AssertionResult", align 8
  %310 = alloca %"class.std::__cxx11::basic_string", align 8
  %311 = alloca %"class.std::__cxx11::basic_string", align 8
  %312 = alloca %"class.std::allocator", align 1
  %313 = alloca %"class.testing::Message", align 8
  %314 = alloca %"class.testing::internal::AssertHelper", align 8
  %315 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %316 = alloca %"class.std::__cxx11::basic_string", align 8
  %317 = alloca %"class.testing::AssertionResult", align 8
  %318 = alloca %"class.std::__cxx11::basic_string", align 8
  %319 = alloca %"class.std::__cxx11::basic_string", align 8
  %320 = alloca %"class.std::allocator", align 1
  %321 = alloca %"class.testing::Message", align 8
  %322 = alloca %"class.testing::internal::AssertHelper", align 8
  %323 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %324 = alloca %"class.std::__cxx11::basic_string", align 8
  %325 = alloca %"class.testing::AssertionResult", align 8
  %326 = alloca %"class.std::__cxx11::basic_string", align 8
  %327 = alloca %"class.std::__cxx11::basic_string", align 8
  %328 = alloca %"class.std::allocator", align 1
  %329 = alloca %"class.testing::Message", align 8
  %330 = alloca %"class.testing::internal::AssertHelper", align 8
  %331 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %332 = alloca %"class.std::__cxx11::basic_string", align 8
  %333 = alloca %"class.testing::AssertionResult", align 8
  %334 = alloca %"class.std::__cxx11::basic_string", align 8
  %335 = alloca %"class.std::__cxx11::basic_string", align 8
  %336 = alloca %"class.std::allocator", align 1
  %337 = alloca %"class.testing::Message", align 8
  %338 = alloca %"class.testing::internal::AssertHelper", align 8
  %339 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %340 = alloca %"class.std::__cxx11::basic_string", align 8
  %341 = alloca %"class.testing::AssertionResult", align 8
  %342 = alloca %"class.std::__cxx11::basic_string", align 8
  %343 = alloca %"class.std::__cxx11::basic_string", align 8
  %344 = alloca %"class.std::allocator", align 1
  %345 = alloca %"class.testing::Message", align 8
  %346 = alloca %"class.testing::internal::AssertHelper", align 8
  %347 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %348 = alloca %"class.std::__cxx11::basic_string", align 8
  %349 = alloca %"class.testing::AssertionResult", align 8
  %350 = alloca %"class.std::__cxx11::basic_string", align 8
  %351 = alloca %"class.std::__cxx11::basic_string", align 8
  %352 = alloca %"class.std::allocator", align 1
  %353 = alloca %"class.testing::Message", align 8
  %354 = alloca %"class.testing::internal::AssertHelper", align 8
  %355 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %356 = alloca %"class.std::__cxx11::basic_string", align 8
  %357 = alloca %"class.testing::AssertionResult", align 8
  %358 = alloca %"class.std::__cxx11::basic_string", align 8
  %359 = alloca %"class.std::__cxx11::basic_string", align 8
  %360 = alloca %"class.std::allocator", align 1
  %361 = alloca %"class.testing::Message", align 8
  %362 = alloca %"class.testing::internal::AssertHelper", align 8
  %363 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %364 = alloca %"class.std::__cxx11::basic_string", align 8
  %365 = alloca %"class.testing::AssertionResult", align 8
  %366 = alloca %"class.std::__cxx11::basic_string", align 8
  %367 = alloca %"class.std::__cxx11::basic_string", align 8
  %368 = alloca %"class.std::allocator", align 1
  %369 = alloca %"class.testing::Message", align 8
  %370 = alloca %"class.testing::internal::AssertHelper", align 8
  %371 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %372 = alloca %"class.std::__cxx11::basic_string", align 8
  %373 = alloca %"class.testing::AssertionResult", align 8
  %374 = alloca %"class.std::__cxx11::basic_string", align 8
  %375 = alloca %"class.std::__cxx11::basic_string", align 8
  %376 = alloca %"class.std::allocator", align 1
  %377 = alloca %"class.testing::Message", align 8
  %378 = alloca %"class.testing::internal::AssertHelper", align 8
  %379 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %380 = alloca %"class.std::__cxx11::basic_string", align 8
  %381 = alloca %"class.testing::AssertionResult", align 8
  %382 = alloca %"class.std::__cxx11::basic_string", align 8
  %383 = alloca %"class.std::__cxx11::basic_string", align 8
  %384 = alloca %"class.std::allocator", align 1
  %385 = alloca %"class.testing::Message", align 8
  %386 = alloca %"class.testing::internal::AssertHelper", align 8
  %387 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %388 = alloca %"class.std::__cxx11::basic_string", align 8
  %389 = alloca %"class.testing::AssertionResult", align 8
  %390 = alloca %"class.std::__cxx11::basic_string", align 8
  %391 = alloca %"class.std::__cxx11::basic_string", align 8
  %392 = alloca %"class.std::allocator", align 1
  %393 = alloca %"class.testing::Message", align 8
  %394 = alloca %"class.testing::internal::AssertHelper", align 8
  %395 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %396 = alloca %"class.std::__cxx11::basic_string", align 8
  %397 = alloca %"class.testing::AssertionResult", align 8
  %398 = alloca %"class.std::__cxx11::basic_string", align 8
  %399 = alloca %"class.std::__cxx11::basic_string", align 8
  %400 = alloca %"class.std::allocator", align 1
  %401 = alloca %"class.testing::Message", align 8
  %402 = alloca %"class.testing::internal::AssertHelper", align 8
  %403 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %404 = alloca %"class.std::__cxx11::basic_string", align 8
  %405 = alloca %"class.testing::AssertionResult", align 8
  %406 = alloca %"class.std::__cxx11::basic_string", align 8
  %407 = alloca %"class.std::__cxx11::basic_string", align 8
  %408 = alloca %"class.std::allocator", align 1
  %409 = alloca %"class.testing::Message", align 8
  %410 = alloca %"class.testing::internal::AssertHelper", align 8
  %411 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %412 = alloca %"class.std::__cxx11::basic_string", align 8
  %413 = alloca %"class.testing::AssertionResult", align 8
  %414 = alloca %"class.std::__cxx11::basic_string", align 8
  %415 = alloca %"class.std::__cxx11::basic_string", align 8
  %416 = alloca %"class.std::allocator", align 1
  %417 = alloca %"class.testing::Message", align 8
  %418 = alloca %"class.testing::internal::AssertHelper", align 8
  %419 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %420 = alloca %"class.std::__cxx11::basic_string", align 8
  %421 = alloca %"class.testing::AssertionResult", align 8
  %422 = alloca %"class.std::__cxx11::basic_string", align 8
  %423 = alloca %"class.std::__cxx11::basic_string", align 8
  %424 = alloca %"class.std::allocator", align 1
  %425 = alloca %"class.testing::Message", align 8
  %426 = alloca %"class.testing::internal::AssertHelper", align 8
  %427 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %428 = alloca %"class.std::__cxx11::basic_string", align 8
  %429 = alloca %"class.testing::AssertionResult", align 8
  %430 = alloca %"class.std::__cxx11::basic_string", align 8
  %431 = alloca %"class.std::__cxx11::basic_string", align 8
  %432 = alloca %"class.std::allocator", align 1
  %433 = alloca %"class.testing::Message", align 8
  %434 = alloca %"class.testing::internal::AssertHelper", align 8
  %435 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %436 = alloca %"class.std::__cxx11::basic_string", align 8
  %437 = alloca %"class.testing::AssertionResult", align 8
  %438 = alloca %"class.std::__cxx11::basic_string", align 8
  %439 = alloca %"class.std::__cxx11::basic_string", align 8
  %440 = alloca %"class.std::allocator", align 1
  %441 = alloca %"class.testing::Message", align 8
  %442 = alloca %"class.testing::internal::AssertHelper", align 8
  %443 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %444 = alloca %"class.std::__cxx11::basic_string", align 8
  %445 = alloca %"class.testing::AssertionResult", align 8
  %446 = alloca %"class.std::__cxx11::basic_string", align 8
  %447 = alloca %"class.std::__cxx11::basic_string", align 8
  %448 = alloca %"class.std::allocator", align 1
  %449 = alloca %"class.testing::Message", align 8
  %450 = alloca %"class.testing::internal::AssertHelper", align 8
  %451 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %452 = alloca %"class.std::__cxx11::basic_string", align 8
  %453 = alloca %"class.testing::AssertionResult", align 8
  %454 = alloca %"class.std::__cxx11::basic_string", align 8
  %455 = alloca %"class.std::__cxx11::basic_string", align 8
  %456 = alloca %"class.std::allocator", align 1
  %457 = alloca %"class.testing::Message", align 8
  %458 = alloca %"class.testing::internal::AssertHelper", align 8
  %459 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %460 = alloca %"class.std::__cxx11::basic_string", align 8
  %461 = alloca %"class.testing::AssertionResult", align 8
  %462 = alloca %"class.std::__cxx11::basic_string", align 8
  %463 = alloca %"class.std::__cxx11::basic_string", align 8
  %464 = alloca %"class.std::allocator", align 1
  %465 = alloca %"class.testing::Message", align 8
  %466 = alloca %"class.testing::internal::AssertHelper", align 8
  %467 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %468 = alloca %"class.std::__cxx11::basic_string", align 8
  %469 = alloca %"class.testing::AssertionResult", align 8
  %470 = alloca %"class.std::__cxx11::basic_string", align 8
  %471 = alloca %"class.std::__cxx11::basic_string", align 8
  %472 = alloca %"class.std::allocator", align 1
  %473 = alloca %"class.testing::Message", align 8
  %474 = alloca %"class.testing::internal::AssertHelper", align 8
  %475 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %476 = alloca %"class.std::__cxx11::basic_string", align 8
  %477 = alloca %"class.testing::AssertionResult", align 8
  %478 = alloca %"class.std::__cxx11::basic_string", align 8
  %479 = alloca %"class.std::__cxx11::basic_string", align 8
  %480 = alloca %"class.std::allocator", align 1
  %481 = alloca %"class.testing::Message", align 8
  %482 = alloca %"class.testing::internal::AssertHelper", align 8
  %483 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %484 = alloca %"class.std::__cxx11::basic_string", align 8
  %485 = alloca %"class.testing::AssertionResult", align 8
  %486 = alloca %"class.std::__cxx11::basic_string", align 8
  %487 = alloca %"class.std::__cxx11::basic_string", align 8
  %488 = alloca %"class.std::allocator", align 1
  %489 = alloca %"class.testing::Message", align 8
  %490 = alloca %"class.testing::internal::AssertHelper", align 8
  %491 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %492 = alloca %"class.std::__cxx11::basic_string", align 8
  %493 = alloca %"class.testing::AssertionResult", align 8
  %494 = alloca %"class.std::__cxx11::basic_string", align 8
  %495 = alloca %"class.std::__cxx11::basic_string", align 8
  %496 = alloca %"class.std::allocator", align 1
  %497 = alloca %"class.testing::Message", align 8
  %498 = alloca %"class.testing::internal::AssertHelper", align 8
  %499 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %500 = alloca %"class.std::__cxx11::basic_string", align 8
  %501 = alloca %"class.testing::AssertionResult", align 8
  %502 = alloca %"class.std::__cxx11::basic_string", align 8
  %503 = alloca %"class.std::__cxx11::basic_string", align 8
  %504 = alloca %"class.std::allocator", align 1
  %505 = alloca %"class.testing::Message", align 8
  %506 = alloca %"class.testing::internal::AssertHelper", align 8
  %507 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %508 = alloca %"class.std::__cxx11::basic_string", align 8
  %509 = alloca %"class.testing::AssertionResult", align 8
  %510 = alloca %"class.std::__cxx11::basic_string", align 8
  %511 = alloca %"class.std::__cxx11::basic_string", align 8
  %512 = alloca %"class.std::allocator", align 1
  %513 = alloca %"class.testing::Message", align 8
  %514 = alloca %"class.testing::internal::AssertHelper", align 8
  %515 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %516 = alloca %"class.std::__cxx11::basic_string", align 8
  %517 = alloca %"class.testing::AssertionResult", align 8
  %518 = alloca %"class.std::__cxx11::basic_string", align 8
  %519 = alloca %"class.std::__cxx11::basic_string", align 8
  %520 = alloca %"class.std::allocator", align 1
  %521 = alloca %"class.testing::Message", align 8
  %522 = alloca %"class.testing::internal::AssertHelper", align 8
  %523 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %524 = alloca %"class.std::__cxx11::basic_string", align 8
  %525 = alloca %"class.testing::AssertionResult", align 8
  %526 = alloca %"class.std::__cxx11::basic_string", align 8
  %527 = alloca %"class.std::__cxx11::basic_string", align 8
  %528 = alloca %"class.std::allocator", align 1
  %529 = alloca %"class.testing::Message", align 8
  %530 = alloca %"class.testing::internal::AssertHelper", align 8
  %531 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %532 = alloca %"class.std::__cxx11::basic_string", align 8
  %533 = alloca %"class.testing::AssertionResult", align 8
  %534 = alloca %"class.std::__cxx11::basic_string", align 8
  %535 = alloca %"class.std::__cxx11::basic_string", align 8
  %536 = alloca %"class.std::allocator", align 1
  %537 = alloca %"class.testing::Message", align 8
  %538 = alloca %"class.testing::internal::AssertHelper", align 8
  %539 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %540 = alloca %"class.std::__cxx11::basic_string", align 8
  %541 = alloca %"class.testing::AssertionResult", align 8
  %542 = alloca %"class.std::__cxx11::basic_string", align 8
  %543 = alloca %"class.std::__cxx11::basic_string", align 8
  %544 = alloca %"class.std::allocator", align 1
  %545 = alloca %"class.testing::Message", align 8
  %546 = alloca %"class.testing::internal::AssertHelper", align 8
  %547 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %548 = alloca %"class.std::__cxx11::basic_string", align 8
  %549 = alloca %"class.testing::AssertionResult", align 8
  %550 = alloca %"class.std::__cxx11::basic_string", align 8
  %551 = alloca %"class.std::__cxx11::basic_string", align 8
  %552 = alloca %"class.std::allocator", align 1
  %553 = alloca %"class.testing::Message", align 8
  %554 = alloca %"class.testing::internal::AssertHelper", align 8
  %555 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %556 = alloca %"class.std::__cxx11::basic_string", align 8
  %557 = alloca %"class.testing::AssertionResult", align 8
  %558 = alloca %"class.std::__cxx11::basic_string", align 8
  %559 = alloca %"class.std::__cxx11::basic_string", align 8
  %560 = alloca %"class.std::allocator", align 1
  %561 = alloca %"class.testing::Message", align 8
  %562 = alloca %"class.testing::internal::AssertHelper", align 8
  %563 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %564 = alloca %"class.std::__cxx11::basic_string", align 8
  %565 = alloca %"class.testing::AssertionResult", align 8
  %566 = alloca %"class.std::__cxx11::basic_string", align 8
  %567 = alloca %"class.std::__cxx11::basic_string", align 8
  %568 = alloca %"class.std::allocator", align 1
  %569 = alloca %"class.testing::Message", align 8
  %570 = alloca %"class.testing::internal::AssertHelper", align 8
  %571 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %572 = alloca %"class.std::__cxx11::basic_string", align 8
  %573 = alloca %"class.testing::AssertionResult", align 8
  %574 = alloca %"class.std::__cxx11::basic_string", align 8
  %575 = alloca %"class.std::__cxx11::basic_string", align 8
  %576 = alloca %"class.std::allocator", align 1
  %577 = alloca %"class.testing::Message", align 8
  %578 = alloca %"class.testing::internal::AssertHelper", align 8
  %579 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %580 = alloca %"class.std::__cxx11::basic_string", align 8
  %581 = alloca %"class.testing::AssertionResult", align 8
  %582 = alloca %"class.std::__cxx11::basic_string", align 8
  %583 = alloca %"class.std::__cxx11::basic_string", align 8
  %584 = alloca %"class.std::allocator", align 1
  %585 = alloca %"class.testing::Message", align 8
  %586 = alloca %"class.testing::internal::AssertHelper", align 8
  %587 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %588 = alloca %"class.std::__cxx11::basic_string", align 8
  %589 = alloca %"class.testing::AssertionResult", align 8
  %590 = alloca %"class.std::__cxx11::basic_string", align 8
  %591 = alloca %"class.std::__cxx11::basic_string", align 8
  %592 = alloca %"class.std::allocator", align 1
  %593 = alloca %"class.testing::Message", align 8
  %594 = alloca %"class.testing::internal::AssertHelper", align 8
  %595 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %596 = alloca %"class.std::__cxx11::basic_string", align 8
  %597 = alloca %"class.testing::AssertionResult", align 8
  %598 = alloca %"class.std::__cxx11::basic_string", align 8
  %599 = alloca %"class.std::__cxx11::basic_string", align 8
  %600 = alloca %"class.std::allocator", align 1
  %601 = alloca %"class.testing::Message", align 8
  %602 = alloca %"class.testing::internal::AssertHelper", align 8
  %603 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %604 = alloca %"class.std::__cxx11::basic_string", align 8
  %605 = alloca %"class.testing::AssertionResult", align 8
  %606 = alloca %"class.std::__cxx11::basic_string", align 8
  %607 = alloca %"class.std::__cxx11::basic_string", align 8
  %608 = alloca %"class.std::allocator", align 1
  %609 = alloca %"class.testing::Message", align 8
  %610 = alloca %"class.testing::internal::AssertHelper", align 8
  %611 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %612 = alloca %"class.std::__cxx11::basic_string", align 8
  %613 = alloca %"class.testing::AssertionResult", align 8
  %614 = alloca %"class.std::__cxx11::basic_string", align 8
  %615 = alloca %"class.std::__cxx11::basic_string", align 8
  %616 = alloca %"class.std::allocator", align 1
  %617 = alloca %"class.testing::Message", align 8
  %618 = alloca %"class.testing::internal::AssertHelper", align 8
  %619 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %620 = alloca %"class.std::__cxx11::basic_string", align 8
  %621 = alloca %"class.testing::AssertionResult", align 8
  %622 = alloca %"class.std::__cxx11::basic_string", align 8
  %623 = alloca %"class.std::__cxx11::basic_string", align 8
  %624 = alloca %"class.std::allocator", align 1
  %625 = alloca %"class.testing::Message", align 8
  %626 = alloca %"class.testing::internal::AssertHelper", align 8
  %627 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %628 = alloca %"class.std::__cxx11::basic_string", align 8
  %629 = alloca %"class.testing::AssertionResult", align 8
  %630 = alloca %"class.std::__cxx11::basic_string", align 8
  %631 = alloca %"class.std::__cxx11::basic_string", align 8
  %632 = alloca %"class.std::allocator", align 1
  %633 = alloca %"class.testing::Message", align 8
  %634 = alloca %"class.testing::internal::AssertHelper", align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #9
  store double 0x41132CBD0FBA43A8, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %3) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %3)
  %635 = getelementptr inbounds i8, ptr %3, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %635, ptr noundef nonnull @.str.16, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %636 unwind label %652

636:                                              ; preds = %1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull align 8 dereferenceable(128) %3)
          to label %637 unwind label %654

637:                                              ; preds = %636
  %638 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %4) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #9
  %639 = shl i64 %638, 32
  %sext1188 = add i64 %639, 12884901888
  %640 = ashr exact i64 %sext1188, 32
  %641 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %640) #10
          to label %642 unwind label %656

642:                                              ; preds = %637
  %sext = add i64 %639, 8589934592
  %643 = ashr exact i64 %sext, 32
  %644 = getelementptr inbounds i8, ptr %641, i64 %643
  store i8 0, ptr %644, align 1, !tbaa !9
  %sext1189 = add i64 %639, 4294967296
  %645 = ashr exact i64 %sext1189, 32
  %646 = load double, ptr %2, align 8, !tbaa !5
  %647 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %641, i64 noundef %645, ptr noundef nonnull @.str.16, double noundef %646) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(128) %3)
          to label %648 unwind label %658

648:                                              ; preds = %642
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull %641, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %649 unwind label %660

649:                                              ; preds = %648
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %5, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %650 unwind label %662

650:                                              ; preds = %649
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #9
  %651 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  br i1 %651, label %680, label %666

652:                                              ; preds = %1
  %653 = landingpad { ptr, i32 }
          cleanup
  br label %699

654:                                              ; preds = %636
  %655 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #9
  br label %699

656:                                              ; preds = %637
  %657 = landingpad { ptr, i32 }
          cleanup
  br label %699

658:                                              ; preds = %642
  %659 = landingpad { ptr, i32 }
          cleanup
  br label %665

660:                                              ; preds = %648
  %661 = landingpad { ptr, i32 }
          cleanup
  br label %664

662:                                              ; preds = %649
  %663 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  br label %664

664:                                              ; preds = %662, %660
  %.pn = phi { ptr, i32 } [ %663, %662 ], [ %661, %660 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  br label %665

665:                                              ; preds = %664, %658
  %.pn.pn = phi { ptr, i32 } [ %.pn, %664 ], [ %659, %658 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #9
  br label %698

666:                                              ; preds = %650
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %667 unwind label %672

667:                                              ; preds = %666
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #9
  %668 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %669 unwind label %674

669:                                              ; preds = %667
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %10, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 73, ptr noundef %668)
          to label %670 unwind label %674

670:                                              ; preds = %669
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %671 unwind label %676

671:                                              ; preds = %670
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  br label %680

672:                                              ; preds = %666
  %673 = landingpad { ptr, i32 }
          cleanup
  br label %679

674:                                              ; preds = %669, %667
  %675 = landingpad { ptr, i32 }
          cleanup
  br label %678

676:                                              ; preds = %670
  %677 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  br label %678

678:                                              ; preds = %676, %674
  %.pn1192 = phi { ptr, i32 } [ %677, %676 ], [ %675, %674 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  br label %679

679:                                              ; preds = %678, %672
  %.pn1192.pn = phi { ptr, i32 } [ %.pn1192, %678 ], [ %673, %672 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  br label %698

680:                                              ; preds = %650, %671
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #9
  call void @_ZdaPv(ptr noundef nonnull %641) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %3) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %3) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %11) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %11)
  %681 = getelementptr inbounds i8, ptr %11, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %681, ptr noundef nonnull @.str.17, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %682 unwind label %700

682:                                              ; preds = %680
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(128) %11)
          to label %683 unwind label %702

683:                                              ; preds = %682
  %684 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  %685 = shl i64 %684, 32
  %sext1200 = add i64 %685, 12884901888
  %686 = ashr exact i64 %sext1200, 32
  %687 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %686) #10
          to label %688 unwind label %704

688:                                              ; preds = %683
  %sext1199 = add i64 %685, 8589934592
  %689 = ashr exact i64 %sext1199, 32
  %690 = getelementptr inbounds i8, ptr %687, i64 %689
  store i8 0, ptr %690, align 1, !tbaa !9
  %sext1201 = add i64 %685, 4294967296
  %691 = ashr exact i64 %sext1201, 32
  %692 = load double, ptr %2, align 8, !tbaa !5
  %693 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %687, i64 noundef %691, ptr noundef nonnull @.str.17, double noundef %692) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(128) %11)
          to label %694 unwind label %706

694:                                              ; preds = %688
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull %687, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %695 unwind label %708

695:                                              ; preds = %694
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %13, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %696 unwind label %710

696:                                              ; preds = %695
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  %697 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
  br i1 %697, label %728, label %714

698:                                              ; preds = %679, %665
  %.pn1192.pn.pn = phi { ptr, i32 } [ %.pn1192.pn, %679 ], [ %.pn.pn, %665 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #9
  br label %699

699:                                              ; preds = %654, %698, %656, %652
  %.pn1192.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %653, %652 ], [ %655, %654 ], [ %.pn1192.pn.pn, %698 ], [ %657, %656 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %3) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %3) #9
  br label %4427

700:                                              ; preds = %680
  %701 = landingpad { ptr, i32 }
          cleanup
  br label %747

702:                                              ; preds = %682
  %703 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  br label %747

704:                                              ; preds = %683
  %705 = landingpad { ptr, i32 }
          cleanup
  br label %747

706:                                              ; preds = %688
  %707 = landingpad { ptr, i32 }
          cleanup
  br label %713

708:                                              ; preds = %694
  %709 = landingpad { ptr, i32 }
          cleanup
  br label %712

710:                                              ; preds = %695
  %711 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  br label %712

712:                                              ; preds = %710, %708
  %.pn1202 = phi { ptr, i32 } [ %711, %710 ], [ %709, %708 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  br label %713

713:                                              ; preds = %712, %706
  %.pn1202.pn = phi { ptr, i32 } [ %.pn1202, %712 ], [ %707, %706 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  br label %746

714:                                              ; preds = %696
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %715 unwind label %720

715:                                              ; preds = %714
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #9
  %716 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %717 unwind label %722

717:                                              ; preds = %715
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %18, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 74, ptr noundef %716)
          to label %718 unwind label %722

718:                                              ; preds = %717
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %719 unwind label %724

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

720:                                              ; preds = %714
  %721 = landingpad { ptr, i32 }
          cleanup
  br label %727

722:                                              ; preds = %717, %715
  %723 = landingpad { ptr, i32 }
          cleanup
  br label %726

724:                                              ; preds = %718
  %725 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  br label %726

726:                                              ; preds = %724, %722
  %.pn1205 = phi { ptr, i32 } [ %725, %724 ], [ %723, %722 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  br label %727

727:                                              ; preds = %726, %720
  %.pn1205.pn = phi { ptr, i32 } [ %.pn1205, %726 ], [ %721, %720 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #9
  br label %746

728:                                              ; preds = %696, %719
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #9
  call void @_ZdaPv(ptr noundef nonnull %687) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %11) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %11) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %19) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %19)
  %729 = getelementptr inbounds i8, ptr %19, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %729, ptr noundef nonnull @.str.18, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %730 unwind label %748

730:                                              ; preds = %728
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(128) %19)
          to label %731 unwind label %750

731:                                              ; preds = %730
  %732 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  %733 = shl i64 %732, 32
  %sext1213 = add i64 %733, 12884901888
  %734 = ashr exact i64 %sext1213, 32
  %735 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %734) #10
          to label %736 unwind label %752

736:                                              ; preds = %731
  %sext1212 = add i64 %733, 8589934592
  %737 = ashr exact i64 %sext1212, 32
  %738 = getelementptr inbounds i8, ptr %735, i64 %737
  store i8 0, ptr %738, align 1, !tbaa !9
  %sext1214 = add i64 %733, 4294967296
  %739 = ashr exact i64 %sext1214, 32
  %740 = load double, ptr %2, align 8, !tbaa !5
  %741 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %735, i64 noundef %739, ptr noundef nonnull @.str.18, double noundef %740) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(128) %19)
          to label %742 unwind label %754

742:                                              ; preds = %736
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull %735, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %743 unwind label %756

743:                                              ; preds = %742
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %21, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %744 unwind label %758

744:                                              ; preds = %743
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #9
  %745 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
  br i1 %745, label %776, label %762

746:                                              ; preds = %727, %713
  %.pn1205.pn.pn = phi { ptr, i32 } [ %.pn1205.pn, %727 ], [ %.pn1202.pn, %713 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #9
  br label %747

747:                                              ; preds = %702, %746, %704, %700
  %.pn1205.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %701, %700 ], [ %703, %702 ], [ %.pn1205.pn.pn, %746 ], [ %705, %704 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %11) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %11) #9
  br label %4427

748:                                              ; preds = %728
  %749 = landingpad { ptr, i32 }
          cleanup
  br label %795

750:                                              ; preds = %730
  %751 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  br label %795

752:                                              ; preds = %731
  %753 = landingpad { ptr, i32 }
          cleanup
  br label %795

754:                                              ; preds = %736
  %755 = landingpad { ptr, i32 }
          cleanup
  br label %761

756:                                              ; preds = %742
  %757 = landingpad { ptr, i32 }
          cleanup
  br label %760

758:                                              ; preds = %743
  %759 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  br label %760

760:                                              ; preds = %758, %756
  %.pn1215 = phi { ptr, i32 } [ %759, %758 ], [ %757, %756 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  br label %761

761:                                              ; preds = %760, %754
  %.pn1215.pn = phi { ptr, i32 } [ %.pn1215, %760 ], [ %755, %754 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #9
  br label %794

762:                                              ; preds = %744
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %763 unwind label %768

763:                                              ; preds = %762
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #9
  %764 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %765 unwind label %770

765:                                              ; preds = %763
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %26, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 75, ptr noundef %764)
          to label %766 unwind label %770

766:                                              ; preds = %765
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %767 unwind label %772

767:                                              ; preds = %766
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  br label %776

768:                                              ; preds = %762
  %769 = landingpad { ptr, i32 }
          cleanup
  br label %775

770:                                              ; preds = %765, %763
  %771 = landingpad { ptr, i32 }
          cleanup
  br label %774

772:                                              ; preds = %766
  %773 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  br label %774

774:                                              ; preds = %772, %770
  %.pn1218 = phi { ptr, i32 } [ %773, %772 ], [ %771, %770 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #9
  br label %775

775:                                              ; preds = %774, %768
  %.pn1218.pn = phi { ptr, i32 } [ %.pn1218, %774 ], [ %769, %768 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #9
  br label %794

776:                                              ; preds = %744, %767
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #9
  call void @_ZdaPv(ptr noundef nonnull %735) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %19) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %19) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %27) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %27)
  %777 = getelementptr inbounds i8, ptr %27, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %777, ptr noundef nonnull @.str.19, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %778 unwind label %796

778:                                              ; preds = %776
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 8 dereferenceable(128) %27)
          to label %779 unwind label %798

779:                                              ; preds = %778
  %780 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #9
  %781 = shl i64 %780, 32
  %sext1226 = add i64 %781, 12884901888
  %782 = ashr exact i64 %sext1226, 32
  %783 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %782) #10
          to label %784 unwind label %800

784:                                              ; preds = %779
  %sext1225 = add i64 %781, 8589934592
  %785 = ashr exact i64 %sext1225, 32
  %786 = getelementptr inbounds i8, ptr %783, i64 %785
  store i8 0, ptr %786, align 1, !tbaa !9
  %sext1227 = add i64 %781, 4294967296
  %787 = ashr exact i64 %sext1227, 32
  %788 = load double, ptr %2, align 8, !tbaa !5
  %789 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %783, i64 noundef %787, ptr noundef nonnull @.str.19, double noundef %788) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(128) %27)
          to label %790 unwind label %802

790:                                              ; preds = %784
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull %783, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %791 unwind label %804

791:                                              ; preds = %790
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %29, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %792 unwind label %806

792:                                              ; preds = %791
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #9
  %793 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %29)
  br i1 %793, label %824, label %810

794:                                              ; preds = %775, %761
  %.pn1218.pn.pn = phi { ptr, i32 } [ %.pn1218.pn, %775 ], [ %.pn1215.pn, %761 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #9
  br label %795

795:                                              ; preds = %750, %794, %752, %748
  %.pn1218.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %749, %748 ], [ %751, %750 ], [ %.pn1218.pn.pn, %794 ], [ %753, %752 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %19) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %19) #9
  br label %4427

796:                                              ; preds = %776
  %797 = landingpad { ptr, i32 }
          cleanup
  br label %843

798:                                              ; preds = %778
  %799 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #9
  br label %843

800:                                              ; preds = %779
  %801 = landingpad { ptr, i32 }
          cleanup
  br label %843

802:                                              ; preds = %784
  %803 = landingpad { ptr, i32 }
          cleanup
  br label %809

804:                                              ; preds = %790
  %805 = landingpad { ptr, i32 }
          cleanup
  br label %808

806:                                              ; preds = %791
  %807 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  br label %808

808:                                              ; preds = %806, %804
  %.pn1228 = phi { ptr, i32 } [ %807, %806 ], [ %805, %804 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  br label %809

809:                                              ; preds = %808, %802
  %.pn1228.pn = phi { ptr, i32 } [ %.pn1228, %808 ], [ %803, %802 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #9
  br label %842

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

811:                                              ; preds = %810
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #9
  %812 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %29)
          to label %813 unwind label %818

813:                                              ; preds = %811
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %34, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 76, ptr noundef %812)
          to label %814 unwind label %818

814:                                              ; preds = %813
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %815 unwind label %820

815:                                              ; preds = %814
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  br label %824

816:                                              ; preds = %810
  %817 = landingpad { ptr, i32 }
          cleanup
  br label %823

818:                                              ; preds = %813, %811
  %819 = landingpad { ptr, i32 }
          cleanup
  br label %822

820:                                              ; preds = %814
  %821 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  br label %822

822:                                              ; preds = %820, %818
  %.pn1231 = phi { ptr, i32 } [ %821, %820 ], [ %819, %818 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #9
  br label %823

823:                                              ; preds = %822, %816
  %.pn1231.pn = phi { ptr, i32 } [ %.pn1231, %822 ], [ %817, %816 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #9
  br label %842

824:                                              ; preds = %792, %815
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #9
  call void @_ZdaPv(ptr noundef nonnull %783) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %27) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %27) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %35) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %35)
  %825 = getelementptr inbounds i8, ptr %35, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %825, ptr noundef nonnull @.str.20, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %826 unwind label %844

826:                                              ; preds = %824
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 8 dereferenceable(128) %35)
          to label %827 unwind label %846

827:                                              ; preds = %826
  %828 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #9
  %829 = shl i64 %828, 32
  %sext1239 = add i64 %829, 12884901888
  %830 = ashr exact i64 %sext1239, 32
  %831 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %830) #10
          to label %832 unwind label %848

832:                                              ; preds = %827
  %sext1238 = add i64 %829, 8589934592
  %833 = ashr exact i64 %sext1238, 32
  %834 = getelementptr inbounds i8, ptr %831, i64 %833
  store i8 0, ptr %834, align 1, !tbaa !9
  %sext1240 = add i64 %829, 4294967296
  %835 = ashr exact i64 %sext1240, 32
  %836 = load double, ptr %2, align 8, !tbaa !5
  %837 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %831, i64 noundef %835, ptr noundef nonnull @.str.20, double noundef %836) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef nonnull align 8 dereferenceable(128) %35)
          to label %838 unwind label %850

838:                                              ; preds = %832
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull %831, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %839 unwind label %852

839:                                              ; preds = %838
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %37, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %840 unwind label %854

840:                                              ; preds = %839
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #9
  %841 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
  br i1 %841, label %872, label %858

842:                                              ; preds = %823, %809
  %.pn1231.pn.pn = phi { ptr, i32 } [ %.pn1231.pn, %823 ], [ %.pn1228.pn, %809 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #9
  br label %843

843:                                              ; preds = %798, %842, %800, %796
  %.pn1231.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %797, %796 ], [ %799, %798 ], [ %.pn1231.pn.pn, %842 ], [ %801, %800 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %27) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %27) #9
  br label %4427

844:                                              ; preds = %824
  %845 = landingpad { ptr, i32 }
          cleanup
  br label %891

846:                                              ; preds = %826
  %847 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #9
  br label %891

848:                                              ; preds = %827
  %849 = landingpad { ptr, i32 }
          cleanup
  br label %891

850:                                              ; preds = %832
  %851 = landingpad { ptr, i32 }
          cleanup
  br label %857

852:                                              ; preds = %838
  %853 = landingpad { ptr, i32 }
          cleanup
  br label %856

854:                                              ; preds = %839
  %855 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  br label %856

856:                                              ; preds = %854, %852
  %.pn1241 = phi { ptr, i32 } [ %855, %854 ], [ %853, %852 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  br label %857

857:                                              ; preds = %856, %850
  %.pn1241.pn = phi { ptr, i32 } [ %.pn1241, %856 ], [ %851, %850 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #9
  br label %890

858:                                              ; preds = %840
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %859 unwind label %864

859:                                              ; preds = %858
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #9
  %860 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %861 unwind label %866

861:                                              ; preds = %859
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %42, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 77, ptr noundef %860)
          to label %862 unwind label %866

862:                                              ; preds = %861
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %863 unwind label %868

863:                                              ; preds = %862
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  br label %872

864:                                              ; preds = %858
  %865 = landingpad { ptr, i32 }
          cleanup
  br label %871

866:                                              ; preds = %861, %859
  %867 = landingpad { ptr, i32 }
          cleanup
  br label %870

868:                                              ; preds = %862
  %869 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  br label %870

870:                                              ; preds = %868, %866
  %.pn1244 = phi { ptr, i32 } [ %869, %868 ], [ %867, %866 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #9
  br label %871

871:                                              ; preds = %870, %864
  %.pn1244.pn = phi { ptr, i32 } [ %.pn1244, %870 ], [ %865, %864 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #9
  br label %890

872:                                              ; preds = %840, %863
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #9
  call void @_ZdaPv(ptr noundef nonnull %831) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %35) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %35) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %43) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %43)
  %873 = getelementptr inbounds i8, ptr %43, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %873, ptr noundef nonnull @.str.21, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %874 unwind label %892

874:                                              ; preds = %872
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %44, ptr noundef nonnull align 8 dereferenceable(128) %43)
          to label %875 unwind label %894

875:                                              ; preds = %874
  %876 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #9
  %877 = shl i64 %876, 32
  %sext1252 = add i64 %877, 12884901888
  %878 = ashr exact i64 %sext1252, 32
  %879 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %878) #10
          to label %880 unwind label %896

880:                                              ; preds = %875
  %sext1251 = add i64 %877, 8589934592
  %881 = ashr exact i64 %sext1251, 32
  %882 = getelementptr inbounds i8, ptr %879, i64 %881
  store i8 0, ptr %882, align 1, !tbaa !9
  %sext1253 = add i64 %877, 4294967296
  %883 = ashr exact i64 %sext1253, 32
  %884 = load double, ptr %2, align 8, !tbaa !5
  %885 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %879, i64 noundef %883, ptr noundef nonnull @.str.21, double noundef %884) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef nonnull align 8 dereferenceable(128) %43)
          to label %886 unwind label %898

886:                                              ; preds = %880
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %48) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull %879, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %887 unwind label %900

887:                                              ; preds = %886
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %45, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %888 unwind label %902

888:                                              ; preds = %887
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #9
  %889 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %45)
  br i1 %889, label %920, label %906

890:                                              ; preds = %871, %857
  %.pn1244.pn.pn = phi { ptr, i32 } [ %.pn1244.pn, %871 ], [ %.pn1241.pn, %857 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #9
  br label %891

891:                                              ; preds = %846, %890, %848, %844
  %.pn1244.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %845, %844 ], [ %847, %846 ], [ %.pn1244.pn.pn, %890 ], [ %849, %848 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %35) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %35) #9
  br label %4427

892:                                              ; preds = %872
  %893 = landingpad { ptr, i32 }
          cleanup
  br label %939

894:                                              ; preds = %874
  %895 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #9
  br label %939

896:                                              ; preds = %875
  %897 = landingpad { ptr, i32 }
          cleanup
  br label %939

898:                                              ; preds = %880
  %899 = landingpad { ptr, i32 }
          cleanup
  br label %905

900:                                              ; preds = %886
  %901 = landingpad { ptr, i32 }
          cleanup
  br label %904

902:                                              ; preds = %887
  %903 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  br label %904

904:                                              ; preds = %902, %900
  %.pn1254 = phi { ptr, i32 } [ %903, %902 ], [ %901, %900 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  br label %905

905:                                              ; preds = %904, %898
  %.pn1254.pn = phi { ptr, i32 } [ %.pn1254, %904 ], [ %899, %898 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #9
  br label %938

906:                                              ; preds = %888
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %907 unwind label %912

907:                                              ; preds = %906
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #9
  %908 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %45)
          to label %909 unwind label %914

909:                                              ; preds = %907
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %50, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 78, ptr noundef %908)
          to label %910 unwind label %914

910:                                              ; preds = %909
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %911 unwind label %916

911:                                              ; preds = %910
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #9
  br label %920

912:                                              ; preds = %906
  %913 = landingpad { ptr, i32 }
          cleanup
  br label %919

914:                                              ; preds = %909, %907
  %915 = landingpad { ptr, i32 }
          cleanup
  br label %918

916:                                              ; preds = %910
  %917 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #9
  br label %918

918:                                              ; preds = %916, %914
  %.pn1257 = phi { ptr, i32 } [ %917, %916 ], [ %915, %914 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #9
  br label %919

919:                                              ; preds = %918, %912
  %.pn1257.pn = phi { ptr, i32 } [ %.pn1257, %918 ], [ %913, %912 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #9
  br label %938

920:                                              ; preds = %888, %911
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #9
  call void @_ZdaPv(ptr noundef nonnull %879) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %43) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %43) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %51) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %51)
  %921 = getelementptr inbounds i8, ptr %51, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %921, ptr noundef nonnull @.str.22, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %922 unwind label %940

922:                                              ; preds = %920
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %52) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %52, ptr noundef nonnull align 8 dereferenceable(128) %51)
          to label %923 unwind label %942

923:                                              ; preds = %922
  %924 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %52) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #9
  %925 = shl i64 %924, 32
  %sext1265 = add i64 %925, 12884901888
  %926 = ashr exact i64 %sext1265, 32
  %927 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %926) #10
          to label %928 unwind label %944

928:                                              ; preds = %923
  %sext1264 = add i64 %925, 8589934592
  %929 = ashr exact i64 %sext1264, 32
  %930 = getelementptr inbounds i8, ptr %927, i64 %929
  store i8 0, ptr %930, align 1, !tbaa !9
  %sext1266 = add i64 %925, 4294967296
  %931 = ashr exact i64 %sext1266, 32
  %932 = load double, ptr %2, align 8, !tbaa !5
  %933 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %927, i64 noundef %931, ptr noundef nonnull @.str.22, double noundef %932) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %53) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %54) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %54, ptr noundef nonnull align 8 dereferenceable(128) %51)
          to label %934 unwind label %946

934:                                              ; preds = %928
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %55) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %56) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull %927, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %935 unwind label %948

935:                                              ; preds = %934
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %53, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 8 dereferenceable(32) %55)
          to label %936 unwind label %950

936:                                              ; preds = %935
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54) #9
  %937 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %53)
  br i1 %937, label %968, label %954

938:                                              ; preds = %919, %905
  %.pn1257.pn.pn = phi { ptr, i32 } [ %.pn1257.pn, %919 ], [ %.pn1254.pn, %905 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #9
  br label %939

939:                                              ; preds = %894, %938, %896, %892
  %.pn1257.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %893, %892 ], [ %895, %894 ], [ %.pn1257.pn.pn, %938 ], [ %897, %896 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %43) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %43) #9
  br label %4427

940:                                              ; preds = %920
  %941 = landingpad { ptr, i32 }
          cleanup
  br label %987

942:                                              ; preds = %922
  %943 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #9
  br label %987

944:                                              ; preds = %923
  %945 = landingpad { ptr, i32 }
          cleanup
  br label %987

946:                                              ; preds = %928
  %947 = landingpad { ptr, i32 }
          cleanup
  br label %953

948:                                              ; preds = %934
  %949 = landingpad { ptr, i32 }
          cleanup
  br label %952

950:                                              ; preds = %935
  %951 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #9
  br label %952

952:                                              ; preds = %950, %948
  %.pn1267 = phi { ptr, i32 } [ %951, %950 ], [ %949, %948 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #9
  br label %953

953:                                              ; preds = %952, %946
  %.pn1267.pn = phi { ptr, i32 } [ %.pn1267, %952 ], [ %947, %946 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54) #9
  br label %986

954:                                              ; preds = %936
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %955 unwind label %960

955:                                              ; preds = %954
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #9
  %956 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %53)
          to label %957 unwind label %962

957:                                              ; preds = %955
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %58, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 79, ptr noundef %956)
          to label %958 unwind label %962

958:                                              ; preds = %957
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %959 unwind label %964

959:                                              ; preds = %958
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #9
  br label %968

960:                                              ; preds = %954
  %961 = landingpad { ptr, i32 }
          cleanup
  br label %967

962:                                              ; preds = %957, %955
  %963 = landingpad { ptr, i32 }
          cleanup
  br label %966

964:                                              ; preds = %958
  %965 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  br label %966

966:                                              ; preds = %964, %962
  %.pn1270 = phi { ptr, i32 } [ %965, %964 ], [ %963, %962 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #9
  br label %967

967:                                              ; preds = %966, %960
  %.pn1270.pn = phi { ptr, i32 } [ %.pn1270, %966 ], [ %961, %960 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #9
  br label %986

968:                                              ; preds = %936, %959
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #9
  call void @_ZdaPv(ptr noundef nonnull %927) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %51) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %51) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %59) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %59)
  %969 = getelementptr inbounds i8, ptr %59, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %969, ptr noundef nonnull @.str.23, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %970 unwind label %988

970:                                              ; preds = %968
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %60) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %60, ptr noundef nonnull align 8 dereferenceable(128) %59)
          to label %971 unwind label %990

971:                                              ; preds = %970
  %972 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %60) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #9
  %973 = shl i64 %972, 32
  %sext1278 = add i64 %973, 12884901888
  %974 = ashr exact i64 %sext1278, 32
  %975 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %974) #10
          to label %976 unwind label %992

976:                                              ; preds = %971
  %sext1277 = add i64 %973, 8589934592
  %977 = ashr exact i64 %sext1277, 32
  %978 = getelementptr inbounds i8, ptr %975, i64 %977
  store i8 0, ptr %978, align 1, !tbaa !9
  %sext1279 = add i64 %973, 4294967296
  %979 = ashr exact i64 %sext1279, 32
  %980 = load double, ptr %2, align 8, !tbaa !5
  %981 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %975, i64 noundef %979, ptr noundef nonnull @.str.23, double noundef %980) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %61) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %62) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %62, ptr noundef nonnull align 8 dereferenceable(128) %59)
          to label %982 unwind label %994

982:                                              ; preds = %976
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %63) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %64) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull %975, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %983 unwind label %996

983:                                              ; preds = %982
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %61, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 8 dereferenceable(32) %63)
          to label %984 unwind label %998

984:                                              ; preds = %983
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #9
  %985 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %61)
  br i1 %985, label %1016, label %1002

986:                                              ; preds = %967, %953
  %.pn1270.pn.pn = phi { ptr, i32 } [ %.pn1270.pn, %967 ], [ %.pn1267.pn, %953 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #9
  br label %987

987:                                              ; preds = %942, %986, %944, %940
  %.pn1270.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %941, %940 ], [ %943, %942 ], [ %.pn1270.pn.pn, %986 ], [ %945, %944 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %51) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %51) #9
  br label %4427

988:                                              ; preds = %968
  %989 = landingpad { ptr, i32 }
          cleanup
  br label %1035

990:                                              ; preds = %970
  %991 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #9
  br label %1035

992:                                              ; preds = %971
  %993 = landingpad { ptr, i32 }
          cleanup
  br label %1035

994:                                              ; preds = %976
  %995 = landingpad { ptr, i32 }
          cleanup
  br label %1001

996:                                              ; preds = %982
  %997 = landingpad { ptr, i32 }
          cleanup
  br label %1000

998:                                              ; preds = %983
  %999 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #9
  br label %1000

1000:                                             ; preds = %998, %996
  %.pn1280 = phi { ptr, i32 } [ %999, %998 ], [ %997, %996 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #9
  br label %1001

1001:                                             ; preds = %1000, %994
  %.pn1280.pn = phi { ptr, i32 } [ %.pn1280, %1000 ], [ %995, %994 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #9
  br label %1034

1002:                                             ; preds = %984
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65)
          to label %1003 unwind label %1008

1003:                                             ; preds = %1002
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %66) #9
  %1004 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %61)
          to label %1005 unwind label %1010

1005:                                             ; preds = %1003
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %66, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 80, ptr noundef %1004)
          to label %1006 unwind label %1010

1006:                                             ; preds = %1005
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %65)
          to label %1007 unwind label %1012

1007:                                             ; preds = %1006
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #9
  br label %1016

1008:                                             ; preds = %1002
  %1009 = landingpad { ptr, i32 }
          cleanup
  br label %1015

1010:                                             ; preds = %1005, %1003
  %1011 = landingpad { ptr, i32 }
          cleanup
  br label %1014

1012:                                             ; preds = %1006
  %1013 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  br label %1014

1014:                                             ; preds = %1012, %1010
  %.pn1283 = phi { ptr, i32 } [ %1013, %1012 ], [ %1011, %1010 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #9
  br label %1015

1015:                                             ; preds = %1014, %1008
  %.pn1283.pn = phi { ptr, i32 } [ %.pn1283, %1014 ], [ %1009, %1008 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %61) #9
  br label %1034

1016:                                             ; preds = %984, %1007
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %61) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #9
  call void @_ZdaPv(ptr noundef nonnull %975) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %59) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %59) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %67) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %67)
  %1017 = getelementptr inbounds i8, ptr %67, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1017, ptr noundef nonnull @.str.24, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1018 unwind label %1036

1018:                                             ; preds = %1016
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %68) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %68, ptr noundef nonnull align 8 dereferenceable(128) %67)
          to label %1019 unwind label %1038

1019:                                             ; preds = %1018
  %1020 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %68) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #9
  %1021 = shl i64 %1020, 32
  %sext1291 = add i64 %1021, 12884901888
  %1022 = ashr exact i64 %sext1291, 32
  %1023 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1022) #10
          to label %1024 unwind label %1040

1024:                                             ; preds = %1019
  %sext1290 = add i64 %1021, 8589934592
  %1025 = ashr exact i64 %sext1290, 32
  %1026 = getelementptr inbounds i8, ptr %1023, i64 %1025
  store i8 0, ptr %1026, align 1, !tbaa !9
  %sext1292 = add i64 %1021, 4294967296
  %1027 = ashr exact i64 %sext1292, 32
  %1028 = load double, ptr %2, align 8, !tbaa !5
  %1029 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1023, i64 noundef %1027, ptr noundef nonnull @.str.24, double noundef %1028) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %69) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %70, ptr noundef nonnull align 8 dereferenceable(128) %67)
          to label %1030 unwind label %1042

1030:                                             ; preds = %1024
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %71) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %72) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull %1023, ptr noundef nonnull align 1 dereferenceable(1) %72)
          to label %1031 unwind label %1044

1031:                                             ; preds = %1030
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %69, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull align 8 dereferenceable(32) %71)
          to label %1032 unwind label %1046

1032:                                             ; preds = %1031
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #9
  %1033 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %69)
  br i1 %1033, label %1064, label %1050

1034:                                             ; preds = %1015, %1001
  %.pn1283.pn.pn = phi { ptr, i32 } [ %.pn1283.pn, %1015 ], [ %.pn1280.pn, %1001 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #9
  br label %1035

1035:                                             ; preds = %990, %1034, %992, %988
  %.pn1283.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %989, %988 ], [ %991, %990 ], [ %.pn1283.pn.pn, %1034 ], [ %993, %992 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %59) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %59) #9
  br label %4427

1036:                                             ; preds = %1016
  %1037 = landingpad { ptr, i32 }
          cleanup
  br label %1083

1038:                                             ; preds = %1018
  %1039 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #9
  br label %1083

1040:                                             ; preds = %1019
  %1041 = landingpad { ptr, i32 }
          cleanup
  br label %1083

1042:                                             ; preds = %1024
  %1043 = landingpad { ptr, i32 }
          cleanup
  br label %1049

1044:                                             ; preds = %1030
  %1045 = landingpad { ptr, i32 }
          cleanup
  br label %1048

1046:                                             ; preds = %1031
  %1047 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #9
  br label %1048

1048:                                             ; preds = %1046, %1044
  %.pn1293 = phi { ptr, i32 } [ %1047, %1046 ], [ %1045, %1044 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #9
  br label %1049

1049:                                             ; preds = %1048, %1042
  %.pn1293.pn = phi { ptr, i32 } [ %.pn1293, %1048 ], [ %1043, %1042 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #9
  br label %1082

1050:                                             ; preds = %1032
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %73)
          to label %1051 unwind label %1056

1051:                                             ; preds = %1050
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #9
  %1052 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %69)
          to label %1053 unwind label %1058

1053:                                             ; preds = %1051
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %74, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 81, ptr noundef %1052)
          to label %1054 unwind label %1058

1054:                                             ; preds = %1053
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull align 8 dereferenceable(8) %73)
          to label %1055 unwind label %1060

1055:                                             ; preds = %1054
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #9
  br label %1064

1056:                                             ; preds = %1050
  %1057 = landingpad { ptr, i32 }
          cleanup
  br label %1063

1058:                                             ; preds = %1053, %1051
  %1059 = landingpad { ptr, i32 }
          cleanup
  br label %1062

1060:                                             ; preds = %1054
  %1061 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #9
  br label %1062

1062:                                             ; preds = %1060, %1058
  %.pn1296 = phi { ptr, i32 } [ %1061, %1060 ], [ %1059, %1058 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #9
  br label %1063

1063:                                             ; preds = %1062, %1056
  %.pn1296.pn = phi { ptr, i32 } [ %.pn1296, %1062 ], [ %1057, %1056 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #9
  br label %1082

1064:                                             ; preds = %1032, %1055
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #9
  call void @_ZdaPv(ptr noundef nonnull %1023) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %67) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %67) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %75) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %75)
  %1065 = getelementptr inbounds i8, ptr %75, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1065, ptr noundef nonnull @.str.25, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1066 unwind label %1084

1066:                                             ; preds = %1064
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %76) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %76, ptr noundef nonnull align 8 dereferenceable(128) %75)
          to label %1067 unwind label %1086

1067:                                             ; preds = %1066
  %1068 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %76) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #9
  %1069 = shl i64 %1068, 32
  %sext1304 = add i64 %1069, 12884901888
  %1070 = ashr exact i64 %sext1304, 32
  %1071 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1070) #10
          to label %1072 unwind label %1088

1072:                                             ; preds = %1067
  %sext1303 = add i64 %1069, 8589934592
  %1073 = ashr exact i64 %sext1303, 32
  %1074 = getelementptr inbounds i8, ptr %1071, i64 %1073
  store i8 0, ptr %1074, align 1, !tbaa !9
  %sext1305 = add i64 %1069, 4294967296
  %1075 = ashr exact i64 %sext1305, 32
  %1076 = load double, ptr %2, align 8, !tbaa !5
  %1077 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1071, i64 noundef %1075, ptr noundef nonnull @.str.25, double noundef %1076) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %77) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %78) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %78, ptr noundef nonnull align 8 dereferenceable(128) %75)
          to label %1078 unwind label %1090

1078:                                             ; preds = %1072
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %79) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %80) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull %1071, ptr noundef nonnull align 1 dereferenceable(1) %80)
          to label %1079 unwind label %1092

1079:                                             ; preds = %1078
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %77, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef nonnull align 8 dereferenceable(32) %79)
          to label %1080 unwind label %1094

1080:                                             ; preds = %1079
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %78) #9
  %1081 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %77)
  br i1 %1081, label %1112, label %1098

1082:                                             ; preds = %1063, %1049
  %.pn1296.pn.pn = phi { ptr, i32 } [ %.pn1296.pn, %1063 ], [ %.pn1293.pn, %1049 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #9
  br label %1083

1083:                                             ; preds = %1038, %1082, %1040, %1036
  %.pn1296.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1037, %1036 ], [ %1039, %1038 ], [ %.pn1296.pn.pn, %1082 ], [ %1041, %1040 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %67) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %67) #9
  br label %4427

1084:                                             ; preds = %1064
  %1085 = landingpad { ptr, i32 }
          cleanup
  br label %1131

1086:                                             ; preds = %1066
  %1087 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #9
  br label %1131

1088:                                             ; preds = %1067
  %1089 = landingpad { ptr, i32 }
          cleanup
  br label %1131

1090:                                             ; preds = %1072
  %1091 = landingpad { ptr, i32 }
          cleanup
  br label %1097

1092:                                             ; preds = %1078
  %1093 = landingpad { ptr, i32 }
          cleanup
  br label %1096

1094:                                             ; preds = %1079
  %1095 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #9
  br label %1096

1096:                                             ; preds = %1094, %1092
  %.pn1306 = phi { ptr, i32 } [ %1095, %1094 ], [ %1093, %1092 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #9
  br label %1097

1097:                                             ; preds = %1096, %1090
  %.pn1306.pn = phi { ptr, i32 } [ %.pn1306, %1096 ], [ %1091, %1090 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %78) #9
  br label %1130

1098:                                             ; preds = %1080
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %81) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %81)
          to label %1099 unwind label %1104

1099:                                             ; preds = %1098
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #9
  %1100 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %77)
          to label %1101 unwind label %1106

1101:                                             ; preds = %1099
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %82, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 82, ptr noundef %1100)
          to label %1102 unwind label %1106

1102:                                             ; preds = %1101
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull align 8 dereferenceable(8) %81)
          to label %1103 unwind label %1108

1103:                                             ; preds = %1102
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #9
  br label %1112

1104:                                             ; preds = %1098
  %1105 = landingpad { ptr, i32 }
          cleanup
  br label %1111

1106:                                             ; preds = %1101, %1099
  %1107 = landingpad { ptr, i32 }
          cleanup
  br label %1110

1108:                                             ; preds = %1102
  %1109 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #9
  br label %1110

1110:                                             ; preds = %1108, %1106
  %.pn1309 = phi { ptr, i32 } [ %1109, %1108 ], [ %1107, %1106 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #9
  br label %1111

1111:                                             ; preds = %1110, %1104
  %.pn1309.pn = phi { ptr, i32 } [ %.pn1309, %1110 ], [ %1105, %1104 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #9
  br label %1130

1112:                                             ; preds = %1080, %1103
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #9
  call void @_ZdaPv(ptr noundef nonnull %1071) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %75) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %75) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %83) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %83)
  %1113 = getelementptr inbounds i8, ptr %83, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1113, ptr noundef nonnull @.str.26, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1114 unwind label %1132

1114:                                             ; preds = %1112
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %84) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %84, ptr noundef nonnull align 8 dereferenceable(128) %83)
          to label %1115 unwind label %1134

1115:                                             ; preds = %1114
  %1116 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %84) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #9
  %1117 = shl i64 %1116, 32
  %sext1317 = add i64 %1117, 12884901888
  %1118 = ashr exact i64 %sext1317, 32
  %1119 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1118) #10
          to label %1120 unwind label %1136

1120:                                             ; preds = %1115
  %sext1316 = add i64 %1117, 8589934592
  %1121 = ashr exact i64 %sext1316, 32
  %1122 = getelementptr inbounds i8, ptr %1119, i64 %1121
  store i8 0, ptr %1122, align 1, !tbaa !9
  %sext1318 = add i64 %1117, 4294967296
  %1123 = ashr exact i64 %sext1318, 32
  %1124 = load double, ptr %2, align 8, !tbaa !5
  %1125 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1119, i64 noundef %1123, ptr noundef nonnull @.str.26, double noundef %1124) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %85) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %86) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %86, ptr noundef nonnull align 8 dereferenceable(128) %83)
          to label %1126 unwind label %1138

1126:                                             ; preds = %1120
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %87) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %88) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull %1119, ptr noundef nonnull align 1 dereferenceable(1) %88)
          to label %1127 unwind label %1140

1127:                                             ; preds = %1126
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %85, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef nonnull align 8 dereferenceable(32) %87)
          to label %1128 unwind label %1142

1128:                                             ; preds = %1127
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %88) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %86) #9
  %1129 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %85)
  br i1 %1129, label %1160, label %1146

1130:                                             ; preds = %1111, %1097
  %.pn1309.pn.pn = phi { ptr, i32 } [ %.pn1309.pn, %1111 ], [ %.pn1306.pn, %1097 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #9
  br label %1131

1131:                                             ; preds = %1086, %1130, %1088, %1084
  %.pn1309.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1085, %1084 ], [ %1087, %1086 ], [ %.pn1309.pn.pn, %1130 ], [ %1089, %1088 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %75) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %75) #9
  br label %4427

1132:                                             ; preds = %1112
  %1133 = landingpad { ptr, i32 }
          cleanup
  br label %1179

1134:                                             ; preds = %1114
  %1135 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #9
  br label %1179

1136:                                             ; preds = %1115
  %1137 = landingpad { ptr, i32 }
          cleanup
  br label %1179

1138:                                             ; preds = %1120
  %1139 = landingpad { ptr, i32 }
          cleanup
  br label %1145

1140:                                             ; preds = %1126
  %1141 = landingpad { ptr, i32 }
          cleanup
  br label %1144

1142:                                             ; preds = %1127
  %1143 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #9
  br label %1144

1144:                                             ; preds = %1142, %1140
  %.pn1319 = phi { ptr, i32 } [ %1143, %1142 ], [ %1141, %1140 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %88) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #9
  br label %1145

1145:                                             ; preds = %1144, %1138
  %.pn1319.pn = phi { ptr, i32 } [ %.pn1319, %1144 ], [ %1139, %1138 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %86) #9
  br label %1178

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

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

1149:                                             ; preds = %1147
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %90, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 83, ptr noundef %1148)
          to label %1150 unwind label %1154

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

1151:                                             ; preds = %1150
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #9
  br label %1160

1152:                                             ; preds = %1146
  %1153 = landingpad { ptr, i32 }
          cleanup
  br label %1159

1154:                                             ; preds = %1149, %1147
  %1155 = landingpad { ptr, i32 }
          cleanup
  br label %1158

1156:                                             ; preds = %1150
  %1157 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #9
  br label %1158

1158:                                             ; preds = %1156, %1154
  %.pn1322 = phi { ptr, i32 } [ %1157, %1156 ], [ %1155, %1154 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #9
  br label %1159

1159:                                             ; preds = %1158, %1152
  %.pn1322.pn = phi { ptr, i32 } [ %.pn1322, %1158 ], [ %1153, %1152 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #9
  br label %1178

1160:                                             ; preds = %1128, %1151
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #9
  call void @_ZdaPv(ptr noundef nonnull %1119) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %83) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %83) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %91) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %91)
  %1161 = getelementptr inbounds i8, ptr %91, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1161, ptr noundef nonnull @.str.27, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1162 unwind label %1180

1162:                                             ; preds = %1160
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %92) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %92, ptr noundef nonnull align 8 dereferenceable(128) %91)
          to label %1163 unwind label %1182

1163:                                             ; preds = %1162
  %1164 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %92) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %92) #9
  %1165 = shl i64 %1164, 32
  %sext1330 = add i64 %1165, 12884901888
  %1166 = ashr exact i64 %sext1330, 32
  %1167 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1166) #10
          to label %1168 unwind label %1184

1168:                                             ; preds = %1163
  %sext1329 = add i64 %1165, 8589934592
  %1169 = ashr exact i64 %sext1329, 32
  %1170 = getelementptr inbounds i8, ptr %1167, i64 %1169
  store i8 0, ptr %1170, align 1, !tbaa !9
  %sext1331 = add i64 %1165, 4294967296
  %1171 = ashr exact i64 %sext1331, 32
  %1172 = load double, ptr %2, align 8, !tbaa !5
  %1173 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1167, i64 noundef %1171, ptr noundef nonnull @.str.27, double noundef %1172) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %93) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %94) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %94, ptr noundef nonnull align 8 dereferenceable(128) %91)
          to label %1174 unwind label %1186

1174:                                             ; preds = %1168
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %95) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %96) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull %1167, ptr noundef nonnull align 1 dereferenceable(1) %96)
          to label %1175 unwind label %1188

1175:                                             ; preds = %1174
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %93, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef nonnull align 8 dereferenceable(32) %95)
          to label %1176 unwind label %1190

1176:                                             ; preds = %1175
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %94) #9
  %1177 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %93)
  br i1 %1177, label %1208, label %1194

1178:                                             ; preds = %1159, %1145
  %.pn1322.pn.pn = phi { ptr, i32 } [ %.pn1322.pn, %1159 ], [ %.pn1319.pn, %1145 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #9
  br label %1179

1179:                                             ; preds = %1134, %1178, %1136, %1132
  %.pn1322.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1133, %1132 ], [ %1135, %1134 ], [ %.pn1322.pn.pn, %1178 ], [ %1137, %1136 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %83) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %83) #9
  br label %4427

1180:                                             ; preds = %1160
  %1181 = landingpad { ptr, i32 }
          cleanup
  br label %1227

1182:                                             ; preds = %1162
  %1183 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %92) #9
  br label %1227

1184:                                             ; preds = %1163
  %1185 = landingpad { ptr, i32 }
          cleanup
  br label %1227

1186:                                             ; preds = %1168
  %1187 = landingpad { ptr, i32 }
          cleanup
  br label %1193

1188:                                             ; preds = %1174
  %1189 = landingpad { ptr, i32 }
          cleanup
  br label %1192

1190:                                             ; preds = %1175
  %1191 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #9
  br label %1192

1192:                                             ; preds = %1190, %1188
  %.pn1332 = phi { ptr, i32 } [ %1191, %1190 ], [ %1189, %1188 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #9
  br label %1193

1193:                                             ; preds = %1192, %1186
  %.pn1332.pn = phi { ptr, i32 } [ %.pn1332, %1192 ], [ %1187, %1186 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %94) #9
  br label %1226

1194:                                             ; preds = %1176
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %97) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %97)
          to label %1195 unwind label %1200

1195:                                             ; preds = %1194
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %98) #9
  %1196 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %93)
          to label %1197 unwind label %1202

1197:                                             ; preds = %1195
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %98, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 84, ptr noundef %1196)
          to label %1198 unwind label %1202

1198:                                             ; preds = %1197
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull align 8 dereferenceable(8) %97)
          to label %1199 unwind label %1204

1199:                                             ; preds = %1198
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #9
  br label %1208

1200:                                             ; preds = %1194
  %1201 = landingpad { ptr, i32 }
          cleanup
  br label %1207

1202:                                             ; preds = %1197, %1195
  %1203 = landingpad { ptr, i32 }
          cleanup
  br label %1206

1204:                                             ; preds = %1198
  %1205 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #9
  br label %1206

1206:                                             ; preds = %1204, %1202
  %.pn1335 = phi { ptr, i32 } [ %1205, %1204 ], [ %1203, %1202 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #9
  br label %1207

1207:                                             ; preds = %1206, %1200
  %.pn1335.pn = phi { ptr, i32 } [ %.pn1335, %1206 ], [ %1201, %1200 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #9
  br label %1226

1208:                                             ; preds = %1176, %1199
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %93) #9
  call void @_ZdaPv(ptr noundef nonnull %1167) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %91) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %91) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %99) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %99)
  %1209 = getelementptr inbounds i8, ptr %99, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1209, ptr noundef nonnull @.str.28, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1210 unwind label %1228

1210:                                             ; preds = %1208
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %100) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %100, ptr noundef nonnull align 8 dereferenceable(128) %99)
          to label %1211 unwind label %1230

1211:                                             ; preds = %1210
  %1212 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %100) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %100) #9
  %1213 = shl i64 %1212, 32
  %sext1343 = add i64 %1213, 12884901888
  %1214 = ashr exact i64 %sext1343, 32
  %1215 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1214) #10
          to label %1216 unwind label %1232

1216:                                             ; preds = %1211
  %sext1342 = add i64 %1213, 8589934592
  %1217 = ashr exact i64 %sext1342, 32
  %1218 = getelementptr inbounds i8, ptr %1215, i64 %1217
  store i8 0, ptr %1218, align 1, !tbaa !9
  %sext1344 = add i64 %1213, 4294967296
  %1219 = ashr exact i64 %sext1344, 32
  %1220 = load double, ptr %2, align 8, !tbaa !5
  %1221 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1215, i64 noundef %1219, ptr noundef nonnull @.str.28, double noundef %1220) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %101) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %102) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %102, ptr noundef nonnull align 8 dereferenceable(128) %99)
          to label %1222 unwind label %1234

1222:                                             ; preds = %1216
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %103) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %104) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %103, ptr noundef nonnull %1215, ptr noundef nonnull align 1 dereferenceable(1) %104)
          to label %1223 unwind label %1236

1223:                                             ; preds = %1222
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %101, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull align 8 dereferenceable(32) %103)
          to label %1224 unwind label %1238

1224:                                             ; preds = %1223
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %104) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %103) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %102) #9
  %1225 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %101)
  br i1 %1225, label %1256, label %1242

1226:                                             ; preds = %1207, %1193
  %.pn1335.pn.pn = phi { ptr, i32 } [ %.pn1335.pn, %1207 ], [ %.pn1332.pn, %1193 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %93) #9
  br label %1227

1227:                                             ; preds = %1182, %1226, %1184, %1180
  %.pn1335.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1181, %1180 ], [ %1183, %1182 ], [ %.pn1335.pn.pn, %1226 ], [ %1185, %1184 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %91) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %91) #9
  br label %4427

1228:                                             ; preds = %1208
  %1229 = landingpad { ptr, i32 }
          cleanup
  br label %1275

1230:                                             ; preds = %1210
  %1231 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %100) #9
  br label %1275

1232:                                             ; preds = %1211
  %1233 = landingpad { ptr, i32 }
          cleanup
  br label %1275

1234:                                             ; preds = %1216
  %1235 = landingpad { ptr, i32 }
          cleanup
  br label %1241

1236:                                             ; preds = %1222
  %1237 = landingpad { ptr, i32 }
          cleanup
  br label %1240

1238:                                             ; preds = %1223
  %1239 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #9
  br label %1240

1240:                                             ; preds = %1238, %1236
  %.pn1345 = phi { ptr, i32 } [ %1239, %1238 ], [ %1237, %1236 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %104) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %103) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #9
  br label %1241

1241:                                             ; preds = %1240, %1234
  %.pn1345.pn = phi { ptr, i32 } [ %.pn1345, %1240 ], [ %1235, %1234 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %102) #9
  br label %1274

1242:                                             ; preds = %1224
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %105) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %105)
          to label %1243 unwind label %1248

1243:                                             ; preds = %1242
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %106) #9
  %1244 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %101)
          to label %1245 unwind label %1250

1245:                                             ; preds = %1243
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %106, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 85, ptr noundef %1244)
          to label %1246 unwind label %1250

1246:                                             ; preds = %1245
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %105)
          to label %1247 unwind label %1252

1247:                                             ; preds = %1246
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #9
  br label %1256

1248:                                             ; preds = %1242
  %1249 = landingpad { ptr, i32 }
          cleanup
  br label %1255

1250:                                             ; preds = %1245, %1243
  %1251 = landingpad { ptr, i32 }
          cleanup
  br label %1254

1252:                                             ; preds = %1246
  %1253 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #9
  br label %1254

1254:                                             ; preds = %1252, %1250
  %.pn1348 = phi { ptr, i32 } [ %1253, %1252 ], [ %1251, %1250 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #9
  br label %1255

1255:                                             ; preds = %1254, %1248
  %.pn1348.pn = phi { ptr, i32 } [ %.pn1348, %1254 ], [ %1249, %1248 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %101) #9
  br label %1274

1256:                                             ; preds = %1224, %1247
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %101) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %101) #9
  call void @_ZdaPv(ptr noundef nonnull %1215) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %99) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %99) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %107) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %107)
  %1257 = getelementptr inbounds i8, ptr %107, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1257, ptr noundef nonnull @.str.29, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1258 unwind label %1276

1258:                                             ; preds = %1256
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %108) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %108, ptr noundef nonnull align 8 dereferenceable(128) %107)
          to label %1259 unwind label %1278

1259:                                             ; preds = %1258
  %1260 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %108) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %108) #9
  %1261 = shl i64 %1260, 32
  %sext1356 = add i64 %1261, 12884901888
  %1262 = ashr exact i64 %sext1356, 32
  %1263 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1262) #10
          to label %1264 unwind label %1280

1264:                                             ; preds = %1259
  %sext1355 = add i64 %1261, 8589934592
  %1265 = ashr exact i64 %sext1355, 32
  %1266 = getelementptr inbounds i8, ptr %1263, i64 %1265
  store i8 0, ptr %1266, align 1, !tbaa !9
  %sext1357 = add i64 %1261, 4294967296
  %1267 = ashr exact i64 %sext1357, 32
  %1268 = load double, ptr %2, align 8, !tbaa !5
  %1269 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1263, i64 noundef %1267, ptr noundef nonnull @.str.29, double noundef %1268) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %109) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %110) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %110, ptr noundef nonnull align 8 dereferenceable(128) %107)
          to label %1270 unwind label %1282

1270:                                             ; preds = %1264
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %111) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %112) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %112) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef nonnull %1263, ptr noundef nonnull align 1 dereferenceable(1) %112)
          to label %1271 unwind label %1284

1271:                                             ; preds = %1270
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %109, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 8 dereferenceable(32) %111)
          to label %1272 unwind label %1286

1272:                                             ; preds = %1271
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %112) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %112) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %111) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %110) #9
  %1273 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %109)
  br i1 %1273, label %1304, label %1290

1274:                                             ; preds = %1255, %1241
  %.pn1348.pn.pn = phi { ptr, i32 } [ %.pn1348.pn, %1255 ], [ %.pn1345.pn, %1241 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %101) #9
  br label %1275

1275:                                             ; preds = %1230, %1274, %1232, %1228
  %.pn1348.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1229, %1228 ], [ %1231, %1230 ], [ %.pn1348.pn.pn, %1274 ], [ %1233, %1232 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %99) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %99) #9
  br label %4427

1276:                                             ; preds = %1256
  %1277 = landingpad { ptr, i32 }
          cleanup
  br label %1323

1278:                                             ; preds = %1258
  %1279 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %108) #9
  br label %1323

1280:                                             ; preds = %1259
  %1281 = landingpad { ptr, i32 }
          cleanup
  br label %1323

1282:                                             ; preds = %1264
  %1283 = landingpad { ptr, i32 }
          cleanup
  br label %1289

1284:                                             ; preds = %1270
  %1285 = landingpad { ptr, i32 }
          cleanup
  br label %1288

1286:                                             ; preds = %1271
  %1287 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #9
  br label %1288

1288:                                             ; preds = %1286, %1284
  %.pn1358 = phi { ptr, i32 } [ %1287, %1286 ], [ %1285, %1284 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %112) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %112) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %111) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #9
  br label %1289

1289:                                             ; preds = %1288, %1282
  %.pn1358.pn = phi { ptr, i32 } [ %.pn1358, %1288 ], [ %1283, %1282 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %110) #9
  br label %1322

1290:                                             ; preds = %1272
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %113) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %113)
          to label %1291 unwind label %1296

1291:                                             ; preds = %1290
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %114) #9
  %1292 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %109)
          to label %1293 unwind label %1298

1293:                                             ; preds = %1291
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %114, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 86, ptr noundef %1292)
          to label %1294 unwind label %1298

1294:                                             ; preds = %1293
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull align 8 dereferenceable(8) %113)
          to label %1295 unwind label %1300

1295:                                             ; preds = %1294
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %114) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %113) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %113) #9
  br label %1304

1296:                                             ; preds = %1290
  %1297 = landingpad { ptr, i32 }
          cleanup
  br label %1303

1298:                                             ; preds = %1293, %1291
  %1299 = landingpad { ptr, i32 }
          cleanup
  br label %1302

1300:                                             ; preds = %1294
  %1301 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #9
  br label %1302

1302:                                             ; preds = %1300, %1298
  %.pn1361 = phi { ptr, i32 } [ %1301, %1300 ], [ %1299, %1298 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %114) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %113) #9
  br label %1303

1303:                                             ; preds = %1302, %1296
  %.pn1361.pn = phi { ptr, i32 } [ %.pn1361, %1302 ], [ %1297, %1296 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %113) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #9
  br label %1322

1304:                                             ; preds = %1272, %1295
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %109) #9
  call void @_ZdaPv(ptr noundef nonnull %1263) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %107) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %107) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %115) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %115)
  %1305 = getelementptr inbounds i8, ptr %115, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1305, ptr noundef nonnull @.str.30, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1306 unwind label %1324

1306:                                             ; preds = %1304
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %116) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %116, ptr noundef nonnull align 8 dereferenceable(128) %115)
          to label %1307 unwind label %1326

1307:                                             ; preds = %1306
  %1308 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %116) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %116) #9
  %1309 = shl i64 %1308, 32
  %sext1369 = add i64 %1309, 12884901888
  %1310 = ashr exact i64 %sext1369, 32
  %1311 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1310) #10
          to label %1312 unwind label %1328

1312:                                             ; preds = %1307
  %sext1368 = add i64 %1309, 8589934592
  %1313 = ashr exact i64 %sext1368, 32
  %1314 = getelementptr inbounds i8, ptr %1311, i64 %1313
  store i8 0, ptr %1314, align 1, !tbaa !9
  %sext1370 = add i64 %1309, 4294967296
  %1315 = ashr exact i64 %sext1370, 32
  %1316 = load double, ptr %2, align 8, !tbaa !5
  %1317 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1311, i64 noundef %1315, ptr noundef nonnull @.str.30, double noundef %1316) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %117) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %118) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %118, ptr noundef nonnull align 8 dereferenceable(128) %115)
          to label %1318 unwind label %1330

1318:                                             ; preds = %1312
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %119) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %120) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %120) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %119, ptr noundef nonnull %1311, ptr noundef nonnull align 1 dereferenceable(1) %120)
          to label %1319 unwind label %1332

1319:                                             ; preds = %1318
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %117, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef nonnull align 8 dereferenceable(32) %119)
          to label %1320 unwind label %1334

1320:                                             ; preds = %1319
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %120) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %120) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %119) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %118) #9
  %1321 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %117)
  br i1 %1321, label %1352, label %1338

1322:                                             ; preds = %1303, %1289
  %.pn1361.pn.pn = phi { ptr, i32 } [ %.pn1361.pn, %1303 ], [ %.pn1358.pn, %1289 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %109) #9
  br label %1323

1323:                                             ; preds = %1278, %1322, %1280, %1276
  %.pn1361.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1277, %1276 ], [ %1279, %1278 ], [ %.pn1361.pn.pn, %1322 ], [ %1281, %1280 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %107) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %107) #9
  br label %4427

1324:                                             ; preds = %1304
  %1325 = landingpad { ptr, i32 }
          cleanup
  br label %1371

1326:                                             ; preds = %1306
  %1327 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %116) #9
  br label %1371

1328:                                             ; preds = %1307
  %1329 = landingpad { ptr, i32 }
          cleanup
  br label %1371

1330:                                             ; preds = %1312
  %1331 = landingpad { ptr, i32 }
          cleanup
  br label %1337

1332:                                             ; preds = %1318
  %1333 = landingpad { ptr, i32 }
          cleanup
  br label %1336

1334:                                             ; preds = %1319
  %1335 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #9
  br label %1336

1336:                                             ; preds = %1334, %1332
  %.pn1371 = phi { ptr, i32 } [ %1335, %1334 ], [ %1333, %1332 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %120) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %120) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %119) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #9
  br label %1337

1337:                                             ; preds = %1336, %1330
  %.pn1371.pn = phi { ptr, i32 } [ %.pn1371, %1336 ], [ %1331, %1330 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %118) #9
  br label %1370

1338:                                             ; preds = %1320
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %121) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %121)
          to label %1339 unwind label %1344

1339:                                             ; preds = %1338
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %122) #9
  %1340 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %117)
          to label %1341 unwind label %1346

1341:                                             ; preds = %1339
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %122, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 87, ptr noundef %1340)
          to label %1342 unwind label %1346

1342:                                             ; preds = %1341
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %122, ptr noundef nonnull align 8 dereferenceable(8) %121)
          to label %1343 unwind label %1348

1343:                                             ; preds = %1342
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %122) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %121) #9
  br label %1352

1344:                                             ; preds = %1338
  %1345 = landingpad { ptr, i32 }
          cleanup
  br label %1351

1346:                                             ; preds = %1341, %1339
  %1347 = landingpad { ptr, i32 }
          cleanup
  br label %1350

1348:                                             ; preds = %1342
  %1349 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #9
  br label %1350

1350:                                             ; preds = %1348, %1346
  %.pn1374 = phi { ptr, i32 } [ %1349, %1348 ], [ %1347, %1346 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %122) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #9
  br label %1351

1351:                                             ; preds = %1350, %1344
  %.pn1374.pn = phi { ptr, i32 } [ %.pn1374, %1350 ], [ %1345, %1344 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %121) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %117) #9
  br label %1370

1352:                                             ; preds = %1320, %1343
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %117) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %117) #9
  call void @_ZdaPv(ptr noundef nonnull %1311) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %115) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %115) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %123) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %123)
  %1353 = getelementptr inbounds i8, ptr %123, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1353, ptr noundef nonnull @.str.31, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1354 unwind label %1372

1354:                                             ; preds = %1352
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %124) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %124, ptr noundef nonnull align 8 dereferenceable(128) %123)
          to label %1355 unwind label %1374

1355:                                             ; preds = %1354
  %1356 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %124) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %124) #9
  %1357 = shl i64 %1356, 32
  %sext1382 = add i64 %1357, 12884901888
  %1358 = ashr exact i64 %sext1382, 32
  %1359 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1358) #10
          to label %1360 unwind label %1376

1360:                                             ; preds = %1355
  %sext1381 = add i64 %1357, 8589934592
  %1361 = ashr exact i64 %sext1381, 32
  %1362 = getelementptr inbounds i8, ptr %1359, i64 %1361
  store i8 0, ptr %1362, align 1, !tbaa !9
  %sext1383 = add i64 %1357, 4294967296
  %1363 = ashr exact i64 %sext1383, 32
  %1364 = load double, ptr %2, align 8, !tbaa !5
  %1365 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1359, i64 noundef %1363, ptr noundef nonnull @.str.31, double noundef %1364) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %125) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %126) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %126, ptr noundef nonnull align 8 dereferenceable(128) %123)
          to label %1366 unwind label %1378

1366:                                             ; preds = %1360
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %127) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %128) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %128) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef nonnull %1359, ptr noundef nonnull align 1 dereferenceable(1) %128)
          to label %1367 unwind label %1380

1367:                                             ; preds = %1366
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %125, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef nonnull align 8 dereferenceable(32) %127)
          to label %1368 unwind label %1382

1368:                                             ; preds = %1367
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %128) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %128) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %127) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %126) #9
  %1369 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %125)
  br i1 %1369, label %1400, label %1386

1370:                                             ; preds = %1351, %1337
  %.pn1374.pn.pn = phi { ptr, i32 } [ %.pn1374.pn, %1351 ], [ %.pn1371.pn, %1337 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %117) #9
  br label %1371

1371:                                             ; preds = %1326, %1370, %1328, %1324
  %.pn1374.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1325, %1324 ], [ %1327, %1326 ], [ %.pn1374.pn.pn, %1370 ], [ %1329, %1328 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %115) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %115) #9
  br label %4427

1372:                                             ; preds = %1352
  %1373 = landingpad { ptr, i32 }
          cleanup
  br label %1419

1374:                                             ; preds = %1354
  %1375 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %124) #9
  br label %1419

1376:                                             ; preds = %1355
  %1377 = landingpad { ptr, i32 }
          cleanup
  br label %1419

1378:                                             ; preds = %1360
  %1379 = landingpad { ptr, i32 }
          cleanup
  br label %1385

1380:                                             ; preds = %1366
  %1381 = landingpad { ptr, i32 }
          cleanup
  br label %1384

1382:                                             ; preds = %1367
  %1383 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #9
  br label %1384

1384:                                             ; preds = %1382, %1380
  %.pn1384 = phi { ptr, i32 } [ %1383, %1382 ], [ %1381, %1380 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %128) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %128) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %127) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #9
  br label %1385

1385:                                             ; preds = %1384, %1378
  %.pn1384.pn = phi { ptr, i32 } [ %.pn1384, %1384 ], [ %1379, %1378 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %126) #9
  br label %1418

1386:                                             ; preds = %1368
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %129) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %129)
          to label %1387 unwind label %1392

1387:                                             ; preds = %1386
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %130) #9
  %1388 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %125)
          to label %1389 unwind label %1394

1389:                                             ; preds = %1387
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %130, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 88, ptr noundef %1388)
          to label %1390 unwind label %1394

1390:                                             ; preds = %1389
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull align 8 dereferenceable(8) %129)
          to label %1391 unwind label %1396

1391:                                             ; preds = %1390
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %130) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %130) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %129) #9
  br label %1400

1392:                                             ; preds = %1386
  %1393 = landingpad { ptr, i32 }
          cleanup
  br label %1399

1394:                                             ; preds = %1389, %1387
  %1395 = landingpad { ptr, i32 }
          cleanup
  br label %1398

1396:                                             ; preds = %1390
  %1397 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %130) #9
  br label %1398

1398:                                             ; preds = %1396, %1394
  %.pn1387 = phi { ptr, i32 } [ %1397, %1396 ], [ %1395, %1394 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %130) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #9
  br label %1399

1399:                                             ; preds = %1398, %1392
  %.pn1387.pn = phi { ptr, i32 } [ %.pn1387, %1398 ], [ %1393, %1392 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %129) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #9
  br label %1418

1400:                                             ; preds = %1368, %1391
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %125) #9
  call void @_ZdaPv(ptr noundef nonnull %1359) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %123) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %123) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %131) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %131)
  %1401 = getelementptr inbounds i8, ptr %131, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1401, ptr noundef nonnull @.str.16, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1402 unwind label %1420

1402:                                             ; preds = %1400
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %132) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %132, ptr noundef nonnull align 8 dereferenceable(128) %131)
          to label %1403 unwind label %1422

1403:                                             ; preds = %1402
  %1404 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %132) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %132) #9
  %1405 = shl i64 %1404, 32
  %sext1395 = add i64 %1405, 12884901888
  %1406 = ashr exact i64 %sext1395, 32
  %1407 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1406) #10
          to label %1408 unwind label %1424

1408:                                             ; preds = %1403
  %sext1394 = add i64 %1405, 8589934592
  %1409 = ashr exact i64 %sext1394, 32
  %1410 = getelementptr inbounds i8, ptr %1407, i64 %1409
  store i8 0, ptr %1410, align 1, !tbaa !9
  %sext1396 = add i64 %1405, 4294967296
  %1411 = ashr exact i64 %sext1396, 32
  %1412 = load double, ptr %2, align 8, !tbaa !5
  %1413 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1407, i64 noundef %1411, ptr noundef nonnull @.str.16, double noundef %1412) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %133) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %134) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %134, ptr noundef nonnull align 8 dereferenceable(128) %131)
          to label %1414 unwind label %1426

1414:                                             ; preds = %1408
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %135) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %136) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %136) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %135, ptr noundef nonnull %1407, ptr noundef nonnull align 1 dereferenceable(1) %136)
          to label %1415 unwind label %1428

1415:                                             ; preds = %1414
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %133, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %134, ptr noundef nonnull align 8 dereferenceable(32) %135)
          to label %1416 unwind label %1430

1416:                                             ; preds = %1415
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %136) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %136) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %135) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %134) #9
  %1417 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %133)
  br i1 %1417, label %1448, label %1434

1418:                                             ; preds = %1399, %1385
  %.pn1387.pn.pn = phi { ptr, i32 } [ %.pn1387.pn, %1399 ], [ %.pn1384.pn, %1385 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %125) #9
  br label %1419

1419:                                             ; preds = %1374, %1418, %1376, %1372
  %.pn1387.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1373, %1372 ], [ %1375, %1374 ], [ %.pn1387.pn.pn, %1418 ], [ %1377, %1376 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %123) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %123) #9
  br label %4427

1420:                                             ; preds = %1400
  %1421 = landingpad { ptr, i32 }
          cleanup
  br label %1467

1422:                                             ; preds = %1402
  %1423 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %132) #9
  br label %1467

1424:                                             ; preds = %1403
  %1425 = landingpad { ptr, i32 }
          cleanup
  br label %1467

1426:                                             ; preds = %1408
  %1427 = landingpad { ptr, i32 }
          cleanup
  br label %1433

1428:                                             ; preds = %1414
  %1429 = landingpad { ptr, i32 }
          cleanup
  br label %1432

1430:                                             ; preds = %1415
  %1431 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #9
  br label %1432

1432:                                             ; preds = %1430, %1428
  %.pn1397 = phi { ptr, i32 } [ %1431, %1430 ], [ %1429, %1428 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %136) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %136) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %135) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #9
  br label %1433

1433:                                             ; preds = %1432, %1426
  %.pn1397.pn = phi { ptr, i32 } [ %.pn1397, %1432 ], [ %1427, %1426 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %134) #9
  br label %1466

1434:                                             ; preds = %1416
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %137) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %137)
          to label %1435 unwind label %1440

1435:                                             ; preds = %1434
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %138) #9
  %1436 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %133)
          to label %1437 unwind label %1442

1437:                                             ; preds = %1435
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %138, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 89, ptr noundef %1436)
          to label %1438 unwind label %1442

1438:                                             ; preds = %1437
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %138, ptr noundef nonnull align 8 dereferenceable(8) %137)
          to label %1439 unwind label %1444

1439:                                             ; preds = %1438
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %138) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %138) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %137) #9
  br label %1448

1440:                                             ; preds = %1434
  %1441 = landingpad { ptr, i32 }
          cleanup
  br label %1447

1442:                                             ; preds = %1437, %1435
  %1443 = landingpad { ptr, i32 }
          cleanup
  br label %1446

1444:                                             ; preds = %1438
  %1445 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %138) #9
  br label %1446

1446:                                             ; preds = %1444, %1442
  %.pn1400 = phi { ptr, i32 } [ %1445, %1444 ], [ %1443, %1442 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %138) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #9
  br label %1447

1447:                                             ; preds = %1446, %1440
  %.pn1400.pn = phi { ptr, i32 } [ %.pn1400, %1446 ], [ %1441, %1440 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %137) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %133) #9
  br label %1466

1448:                                             ; preds = %1416, %1439
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %133) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %133) #9
  call void @_ZdaPv(ptr noundef nonnull %1407) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %131) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %131) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %139) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %139)
  %1449 = getelementptr inbounds i8, ptr %139, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1449, ptr noundef nonnull @.str.32, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1450 unwind label %1468

1450:                                             ; preds = %1448
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %140) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %140, ptr noundef nonnull align 8 dereferenceable(128) %139)
          to label %1451 unwind label %1470

1451:                                             ; preds = %1450
  %1452 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %140) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %140) #9
  %1453 = shl i64 %1452, 32
  %sext1408 = add i64 %1453, 12884901888
  %1454 = ashr exact i64 %sext1408, 32
  %1455 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1454) #10
          to label %1456 unwind label %1472

1456:                                             ; preds = %1451
  %sext1407 = add i64 %1453, 8589934592
  %1457 = ashr exact i64 %sext1407, 32
  %1458 = getelementptr inbounds i8, ptr %1455, i64 %1457
  store i8 0, ptr %1458, align 1, !tbaa !9
  %sext1409 = add i64 %1453, 4294967296
  %1459 = ashr exact i64 %sext1409, 32
  %1460 = load double, ptr %2, align 8, !tbaa !5
  %1461 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1455, i64 noundef %1459, ptr noundef nonnull @.str.32, double noundef %1460) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %141) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %142) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %142, ptr noundef nonnull align 8 dereferenceable(128) %139)
          to label %1462 unwind label %1474

1462:                                             ; preds = %1456
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %143) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %144) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %144) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %143, ptr noundef nonnull %1455, ptr noundef nonnull align 1 dereferenceable(1) %144)
          to label %1463 unwind label %1476

1463:                                             ; preds = %1462
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %141, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %142, ptr noundef nonnull align 8 dereferenceable(32) %143)
          to label %1464 unwind label %1478

1464:                                             ; preds = %1463
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %144) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %144) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %143) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %142) #9
  %1465 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %141)
  br i1 %1465, label %1496, label %1482

1466:                                             ; preds = %1447, %1433
  %.pn1400.pn.pn = phi { ptr, i32 } [ %.pn1400.pn, %1447 ], [ %.pn1397.pn, %1433 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %133) #9
  br label %1467

1467:                                             ; preds = %1422, %1466, %1424, %1420
  %.pn1400.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1421, %1420 ], [ %1423, %1422 ], [ %.pn1400.pn.pn, %1466 ], [ %1425, %1424 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %131) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %131) #9
  br label %4427

1468:                                             ; preds = %1448
  %1469 = landingpad { ptr, i32 }
          cleanup
  br label %1515

1470:                                             ; preds = %1450
  %1471 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %140) #9
  br label %1515

1472:                                             ; preds = %1451
  %1473 = landingpad { ptr, i32 }
          cleanup
  br label %1515

1474:                                             ; preds = %1456
  %1475 = landingpad { ptr, i32 }
          cleanup
  br label %1481

1476:                                             ; preds = %1462
  %1477 = landingpad { ptr, i32 }
          cleanup
  br label %1480

1478:                                             ; preds = %1463
  %1479 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #9
  br label %1480

1480:                                             ; preds = %1478, %1476
  %.pn1410 = phi { ptr, i32 } [ %1479, %1478 ], [ %1477, %1476 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %144) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %144) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %143) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #9
  br label %1481

1481:                                             ; preds = %1480, %1474
  %.pn1410.pn = phi { ptr, i32 } [ %.pn1410, %1480 ], [ %1475, %1474 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %142) #9
  br label %1514

1482:                                             ; preds = %1464
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %145) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %145)
          to label %1483 unwind label %1488

1483:                                             ; preds = %1482
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %146) #9
  %1484 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %141)
          to label %1485 unwind label %1490

1485:                                             ; preds = %1483
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %146, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 90, ptr noundef %1484)
          to label %1486 unwind label %1490

1486:                                             ; preds = %1485
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef nonnull align 8 dereferenceable(8) %145)
          to label %1487 unwind label %1492

1487:                                             ; preds = %1486
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %146) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %146) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %145) #9
  br label %1496

1488:                                             ; preds = %1482
  %1489 = landingpad { ptr, i32 }
          cleanup
  br label %1495

1490:                                             ; preds = %1485, %1483
  %1491 = landingpad { ptr, i32 }
          cleanup
  br label %1494

1492:                                             ; preds = %1486
  %1493 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %146) #9
  br label %1494

1494:                                             ; preds = %1492, %1490
  %.pn1413 = phi { ptr, i32 } [ %1493, %1492 ], [ %1491, %1490 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %146) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #9
  br label %1495

1495:                                             ; preds = %1494, %1488
  %.pn1413.pn = phi { ptr, i32 } [ %.pn1413, %1494 ], [ %1489, %1488 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %145) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %141) #9
  br label %1514

1496:                                             ; preds = %1464, %1487
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %141) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %141) #9
  call void @_ZdaPv(ptr noundef nonnull %1455) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %139) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %139) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %147) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %147)
  %1497 = getelementptr inbounds i8, ptr %147, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1497, ptr noundef nonnull @.str.33, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1498 unwind label %1516

1498:                                             ; preds = %1496
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %148) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %148, ptr noundef nonnull align 8 dereferenceable(128) %147)
          to label %1499 unwind label %1518

1499:                                             ; preds = %1498
  %1500 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %148) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %148) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %148) #9
  %1501 = shl i64 %1500, 32
  %sext1421 = add i64 %1501, 12884901888
  %1502 = ashr exact i64 %sext1421, 32
  %1503 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1502) #10
          to label %1504 unwind label %1520

1504:                                             ; preds = %1499
  %sext1420 = add i64 %1501, 8589934592
  %1505 = ashr exact i64 %sext1420, 32
  %1506 = getelementptr inbounds i8, ptr %1503, i64 %1505
  store i8 0, ptr %1506, align 1, !tbaa !9
  %sext1422 = add i64 %1501, 4294967296
  %1507 = ashr exact i64 %sext1422, 32
  %1508 = load double, ptr %2, align 8, !tbaa !5
  %1509 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1503, i64 noundef %1507, ptr noundef nonnull @.str.33, double noundef %1508) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %149) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %150) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %150, ptr noundef nonnull align 8 dereferenceable(128) %147)
          to label %1510 unwind label %1522

1510:                                             ; preds = %1504
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %151) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %152) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %152) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %151, ptr noundef nonnull %1503, ptr noundef nonnull align 1 dereferenceable(1) %152)
          to label %1511 unwind label %1524

1511:                                             ; preds = %1510
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %149, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %150, ptr noundef nonnull align 8 dereferenceable(32) %151)
          to label %1512 unwind label %1526

1512:                                             ; preds = %1511
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %152) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %152) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %151) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %150) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %150) #9
  %1513 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %149)
  br i1 %1513, label %1544, label %1530

1514:                                             ; preds = %1495, %1481
  %.pn1413.pn.pn = phi { ptr, i32 } [ %.pn1413.pn, %1495 ], [ %.pn1410.pn, %1481 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %141) #9
  br label %1515

1515:                                             ; preds = %1470, %1514, %1472, %1468
  %.pn1413.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1469, %1468 ], [ %1471, %1470 ], [ %.pn1413.pn.pn, %1514 ], [ %1473, %1472 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %139) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %139) #9
  br label %4427

1516:                                             ; preds = %1496
  %1517 = landingpad { ptr, i32 }
          cleanup
  br label %1563

1518:                                             ; preds = %1498
  %1519 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %148) #9
  br label %1563

1520:                                             ; preds = %1499
  %1521 = landingpad { ptr, i32 }
          cleanup
  br label %1563

1522:                                             ; preds = %1504
  %1523 = landingpad { ptr, i32 }
          cleanup
  br label %1529

1524:                                             ; preds = %1510
  %1525 = landingpad { ptr, i32 }
          cleanup
  br label %1528

1526:                                             ; preds = %1511
  %1527 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #9
  br label %1528

1528:                                             ; preds = %1526, %1524
  %.pn1423 = phi { ptr, i32 } [ %1527, %1526 ], [ %1525, %1524 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %152) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %152) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %151) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %150) #9
  br label %1529

1529:                                             ; preds = %1528, %1522
  %.pn1423.pn = phi { ptr, i32 } [ %.pn1423, %1528 ], [ %1523, %1522 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %150) #9
  br label %1562

1530:                                             ; preds = %1512
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %153) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %153)
          to label %1531 unwind label %1536

1531:                                             ; preds = %1530
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %154) #9
  %1532 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %149)
          to label %1533 unwind label %1538

1533:                                             ; preds = %1531
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %154, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 91, ptr noundef %1532)
          to label %1534 unwind label %1538

1534:                                             ; preds = %1533
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %154, ptr noundef nonnull align 8 dereferenceable(8) %153)
          to label %1535 unwind label %1540

1535:                                             ; preds = %1534
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %154) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %153) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %153) #9
  br label %1544

1536:                                             ; preds = %1530
  %1537 = landingpad { ptr, i32 }
          cleanup
  br label %1543

1538:                                             ; preds = %1533, %1531
  %1539 = landingpad { ptr, i32 }
          cleanup
  br label %1542

1540:                                             ; preds = %1534
  %1541 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #9
  br label %1542

1542:                                             ; preds = %1540, %1538
  %.pn1426 = phi { ptr, i32 } [ %1541, %1540 ], [ %1539, %1538 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %154) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %153) #9
  br label %1543

1543:                                             ; preds = %1542, %1536
  %.pn1426.pn = phi { ptr, i32 } [ %.pn1426, %1542 ], [ %1537, %1536 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %153) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %149) #9
  br label %1562

1544:                                             ; preds = %1512, %1535
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %149) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %149) #9
  call void @_ZdaPv(ptr noundef nonnull %1503) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %147) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %147) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %155) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %155)
  %1545 = getelementptr inbounds i8, ptr %155, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1545, ptr noundef nonnull @.str.34, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1546 unwind label %1564

1546:                                             ; preds = %1544
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %156) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %156, ptr noundef nonnull align 8 dereferenceable(128) %155)
          to label %1547 unwind label %1566

1547:                                             ; preds = %1546
  %1548 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %156) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %156) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %156) #9
  %1549 = shl i64 %1548, 32
  %sext1434 = add i64 %1549, 12884901888
  %1550 = ashr exact i64 %sext1434, 32
  %1551 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1550) #10
          to label %1552 unwind label %1568

1552:                                             ; preds = %1547
  %sext1433 = add i64 %1549, 8589934592
  %1553 = ashr exact i64 %sext1433, 32
  %1554 = getelementptr inbounds i8, ptr %1551, i64 %1553
  store i8 0, ptr %1554, align 1, !tbaa !9
  %sext1435 = add i64 %1549, 4294967296
  %1555 = ashr exact i64 %sext1435, 32
  %1556 = load double, ptr %2, align 8, !tbaa !5
  %1557 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1551, i64 noundef %1555, ptr noundef nonnull @.str.34, double noundef %1556) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %157) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %158) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %158, ptr noundef nonnull align 8 dereferenceable(128) %155)
          to label %1558 unwind label %1570

1558:                                             ; preds = %1552
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %159) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %160) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %160) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %159, ptr noundef nonnull %1551, ptr noundef nonnull align 1 dereferenceable(1) %160)
          to label %1559 unwind label %1572

1559:                                             ; preds = %1558
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %157, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %158, ptr noundef nonnull align 8 dereferenceable(32) %159)
          to label %1560 unwind label %1574

1560:                                             ; preds = %1559
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %160) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %160) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %159) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %158) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %158) #9
  %1561 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %157)
  br i1 %1561, label %1592, label %1578

1562:                                             ; preds = %1543, %1529
  %.pn1426.pn.pn = phi { ptr, i32 } [ %.pn1426.pn, %1543 ], [ %.pn1423.pn, %1529 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %149) #9
  br label %1563

1563:                                             ; preds = %1518, %1562, %1520, %1516
  %.pn1426.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1517, %1516 ], [ %1519, %1518 ], [ %.pn1426.pn.pn, %1562 ], [ %1521, %1520 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %147) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %147) #9
  br label %4427

1564:                                             ; preds = %1544
  %1565 = landingpad { ptr, i32 }
          cleanup
  br label %1611

1566:                                             ; preds = %1546
  %1567 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %156) #9
  br label %1611

1568:                                             ; preds = %1547
  %1569 = landingpad { ptr, i32 }
          cleanup
  br label %1611

1570:                                             ; preds = %1552
  %1571 = landingpad { ptr, i32 }
          cleanup
  br label %1577

1572:                                             ; preds = %1558
  %1573 = landingpad { ptr, i32 }
          cleanup
  br label %1576

1574:                                             ; preds = %1559
  %1575 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #9
  br label %1576

1576:                                             ; preds = %1574, %1572
  %.pn1436 = phi { ptr, i32 } [ %1575, %1574 ], [ %1573, %1572 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %160) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %160) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %159) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %158) #9
  br label %1577

1577:                                             ; preds = %1576, %1570
  %.pn1436.pn = phi { ptr, i32 } [ %.pn1436, %1576 ], [ %1571, %1570 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %158) #9
  br label %1610

1578:                                             ; preds = %1560
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %161) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %161)
          to label %1579 unwind label %1584

1579:                                             ; preds = %1578
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %162) #9
  %1580 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %157)
          to label %1581 unwind label %1586

1581:                                             ; preds = %1579
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %162, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 92, ptr noundef %1580)
          to label %1582 unwind label %1586

1582:                                             ; preds = %1581
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %162, ptr noundef nonnull align 8 dereferenceable(8) %161)
          to label %1583 unwind label %1588

1583:                                             ; preds = %1582
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %162) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %162) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %161) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %161) #9
  br label %1592

1584:                                             ; preds = %1578
  %1585 = landingpad { ptr, i32 }
          cleanup
  br label %1591

1586:                                             ; preds = %1581, %1579
  %1587 = landingpad { ptr, i32 }
          cleanup
  br label %1590

1588:                                             ; preds = %1582
  %1589 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %162) #9
  br label %1590

1590:                                             ; preds = %1588, %1586
  %.pn1439 = phi { ptr, i32 } [ %1589, %1588 ], [ %1587, %1586 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %162) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %161) #9
  br label %1591

1591:                                             ; preds = %1590, %1584
  %.pn1439.pn = phi { ptr, i32 } [ %.pn1439, %1590 ], [ %1585, %1584 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %161) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %157) #9
  br label %1610

1592:                                             ; preds = %1560, %1583
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %157) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %157) #9
  call void @_ZdaPv(ptr noundef nonnull %1551) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %155) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %155) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %163) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %163)
  %1593 = getelementptr inbounds i8, ptr %163, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1593, ptr noundef nonnull @.str.35, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1594 unwind label %1612

1594:                                             ; preds = %1592
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %164) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %164, ptr noundef nonnull align 8 dereferenceable(128) %163)
          to label %1595 unwind label %1614

1595:                                             ; preds = %1594
  %1596 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %164) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %164) #9
  %1597 = shl i64 %1596, 32
  %sext1447 = add i64 %1597, 12884901888
  %1598 = ashr exact i64 %sext1447, 32
  %1599 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1598) #10
          to label %1600 unwind label %1616

1600:                                             ; preds = %1595
  %sext1446 = add i64 %1597, 8589934592
  %1601 = ashr exact i64 %sext1446, 32
  %1602 = getelementptr inbounds i8, ptr %1599, i64 %1601
  store i8 0, ptr %1602, align 1, !tbaa !9
  %sext1448 = add i64 %1597, 4294967296
  %1603 = ashr exact i64 %sext1448, 32
  %1604 = load double, ptr %2, align 8, !tbaa !5
  %1605 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1599, i64 noundef %1603, ptr noundef nonnull @.str.35, double noundef %1604) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %165) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %166) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %166, ptr noundef nonnull align 8 dereferenceable(128) %163)
          to label %1606 unwind label %1618

1606:                                             ; preds = %1600
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %167) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %168) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %168) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %167, ptr noundef nonnull %1599, ptr noundef nonnull align 1 dereferenceable(1) %168)
          to label %1607 unwind label %1620

1607:                                             ; preds = %1606
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %165, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %166, ptr noundef nonnull align 8 dereferenceable(32) %167)
          to label %1608 unwind label %1622

1608:                                             ; preds = %1607
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %168) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %168) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %167) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %166) #9
  %1609 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %165)
  br i1 %1609, label %1640, label %1626

1610:                                             ; preds = %1591, %1577
  %.pn1439.pn.pn = phi { ptr, i32 } [ %.pn1439.pn, %1591 ], [ %.pn1436.pn, %1577 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %157) #9
  br label %1611

1611:                                             ; preds = %1566, %1610, %1568, %1564
  %.pn1439.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1565, %1564 ], [ %1567, %1566 ], [ %.pn1439.pn.pn, %1610 ], [ %1569, %1568 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %155) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %155) #9
  br label %4427

1612:                                             ; preds = %1592
  %1613 = landingpad { ptr, i32 }
          cleanup
  br label %1659

1614:                                             ; preds = %1594
  %1615 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %164) #9
  br label %1659

1616:                                             ; preds = %1595
  %1617 = landingpad { ptr, i32 }
          cleanup
  br label %1659

1618:                                             ; preds = %1600
  %1619 = landingpad { ptr, i32 }
          cleanup
  br label %1625

1620:                                             ; preds = %1606
  %1621 = landingpad { ptr, i32 }
          cleanup
  br label %1624

1622:                                             ; preds = %1607
  %1623 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #9
  br label %1624

1624:                                             ; preds = %1622, %1620
  %.pn1449 = phi { ptr, i32 } [ %1623, %1622 ], [ %1621, %1620 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %168) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %168) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %167) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #9
  br label %1625

1625:                                             ; preds = %1624, %1618
  %.pn1449.pn = phi { ptr, i32 } [ %.pn1449, %1624 ], [ %1619, %1618 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %166) #9
  br label %1658

1626:                                             ; preds = %1608
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %169) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %169)
          to label %1627 unwind label %1632

1627:                                             ; preds = %1626
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %170) #9
  %1628 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %165)
          to label %1629 unwind label %1634

1629:                                             ; preds = %1627
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %170, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 93, ptr noundef %1628)
          to label %1630 unwind label %1634

1630:                                             ; preds = %1629
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %170, ptr noundef nonnull align 8 dereferenceable(8) %169)
          to label %1631 unwind label %1636

1631:                                             ; preds = %1630
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %170) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %170) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %169) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %169) #9
  br label %1640

1632:                                             ; preds = %1626
  %1633 = landingpad { ptr, i32 }
          cleanup
  br label %1639

1634:                                             ; preds = %1629, %1627
  %1635 = landingpad { ptr, i32 }
          cleanup
  br label %1638

1636:                                             ; preds = %1630
  %1637 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %170) #9
  br label %1638

1638:                                             ; preds = %1636, %1634
  %.pn1452 = phi { ptr, i32 } [ %1637, %1636 ], [ %1635, %1634 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %170) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %169) #9
  br label %1639

1639:                                             ; preds = %1638, %1632
  %.pn1452.pn = phi { ptr, i32 } [ %.pn1452, %1638 ], [ %1633, %1632 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %169) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %165) #9
  br label %1658

1640:                                             ; preds = %1608, %1631
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %165) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %165) #9
  call void @_ZdaPv(ptr noundef nonnull %1599) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %163) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %163) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %171) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %171)
  %1641 = getelementptr inbounds i8, ptr %171, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1641, ptr noundef nonnull @.str.36, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1642 unwind label %1660

1642:                                             ; preds = %1640
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %172) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %172, ptr noundef nonnull align 8 dereferenceable(128) %171)
          to label %1643 unwind label %1662

1643:                                             ; preds = %1642
  %1644 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %172) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %172) #9
  %1645 = shl i64 %1644, 32
  %sext1460 = add i64 %1645, 12884901888
  %1646 = ashr exact i64 %sext1460, 32
  %1647 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1646) #10
          to label %1648 unwind label %1664

1648:                                             ; preds = %1643
  %sext1459 = add i64 %1645, 8589934592
  %1649 = ashr exact i64 %sext1459, 32
  %1650 = getelementptr inbounds i8, ptr %1647, i64 %1649
  store i8 0, ptr %1650, align 1, !tbaa !9
  %sext1461 = add i64 %1645, 4294967296
  %1651 = ashr exact i64 %sext1461, 32
  %1652 = load double, ptr %2, align 8, !tbaa !5
  %1653 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1647, i64 noundef %1651, ptr noundef nonnull @.str.36, double noundef %1652) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %173) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %174) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %174, ptr noundef nonnull align 8 dereferenceable(128) %171)
          to label %1654 unwind label %1666

1654:                                             ; preds = %1648
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %175) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %176) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %176) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %175, ptr noundef nonnull %1647, ptr noundef nonnull align 1 dereferenceable(1) %176)
          to label %1655 unwind label %1668

1655:                                             ; preds = %1654
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %173, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %174, ptr noundef nonnull align 8 dereferenceable(32) %175)
          to label %1656 unwind label %1670

1656:                                             ; preds = %1655
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %175) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %176) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %176) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %175) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %174) #9
  %1657 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %173)
  br i1 %1657, label %1688, label %1674

1658:                                             ; preds = %1639, %1625
  %.pn1452.pn.pn = phi { ptr, i32 } [ %.pn1452.pn, %1639 ], [ %.pn1449.pn, %1625 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %165) #9
  br label %1659

1659:                                             ; preds = %1614, %1658, %1616, %1612
  %.pn1452.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1613, %1612 ], [ %1615, %1614 ], [ %.pn1452.pn.pn, %1658 ], [ %1617, %1616 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %163) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %163) #9
  br label %4427

1660:                                             ; preds = %1640
  %1661 = landingpad { ptr, i32 }
          cleanup
  br label %1707

1662:                                             ; preds = %1642
  %1663 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %172) #9
  br label %1707

1664:                                             ; preds = %1643
  %1665 = landingpad { ptr, i32 }
          cleanup
  br label %1707

1666:                                             ; preds = %1648
  %1667 = landingpad { ptr, i32 }
          cleanup
  br label %1673

1668:                                             ; preds = %1654
  %1669 = landingpad { ptr, i32 }
          cleanup
  br label %1672

1670:                                             ; preds = %1655
  %1671 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %175) #9
  br label %1672

1672:                                             ; preds = %1670, %1668
  %.pn1462 = phi { ptr, i32 } [ %1671, %1670 ], [ %1669, %1668 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %176) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %176) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %175) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #9
  br label %1673

1673:                                             ; preds = %1672, %1666
  %.pn1462.pn = phi { ptr, i32 } [ %.pn1462, %1672 ], [ %1667, %1666 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %174) #9
  br label %1706

1674:                                             ; preds = %1656
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %177) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %177)
          to label %1675 unwind label %1680

1675:                                             ; preds = %1674
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %178) #9
  %1676 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %173)
          to label %1677 unwind label %1682

1677:                                             ; preds = %1675
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %178, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 94, ptr noundef %1676)
          to label %1678 unwind label %1682

1678:                                             ; preds = %1677
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %178, ptr noundef nonnull align 8 dereferenceable(8) %177)
          to label %1679 unwind label %1684

1679:                                             ; preds = %1678
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %178) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %178) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %177) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %177) #9
  br label %1688

1680:                                             ; preds = %1674
  %1681 = landingpad { ptr, i32 }
          cleanup
  br label %1687

1682:                                             ; preds = %1677, %1675
  %1683 = landingpad { ptr, i32 }
          cleanup
  br label %1686

1684:                                             ; preds = %1678
  %1685 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %178) #9
  br label %1686

1686:                                             ; preds = %1684, %1682
  %.pn1465 = phi { ptr, i32 } [ %1685, %1684 ], [ %1683, %1682 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %178) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %177) #9
  br label %1687

1687:                                             ; preds = %1686, %1680
  %.pn1465.pn = phi { ptr, i32 } [ %.pn1465, %1686 ], [ %1681, %1680 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %177) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %173) #9
  br label %1706

1688:                                             ; preds = %1656, %1679
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %173) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %173) #9
  call void @_ZdaPv(ptr noundef nonnull %1647) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %171) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %171) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %179) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %179)
  %1689 = getelementptr inbounds i8, ptr %179, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1689, ptr noundef nonnull @.str.37, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1690 unwind label %1708

1690:                                             ; preds = %1688
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %180) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %180, ptr noundef nonnull align 8 dereferenceable(128) %179)
          to label %1691 unwind label %1710

1691:                                             ; preds = %1690
  %1692 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %180) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %180) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %180) #9
  %1693 = shl i64 %1692, 32
  %sext1473 = add i64 %1693, 12884901888
  %1694 = ashr exact i64 %sext1473, 32
  %1695 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1694) #10
          to label %1696 unwind label %1712

1696:                                             ; preds = %1691
  %sext1472 = add i64 %1693, 8589934592
  %1697 = ashr exact i64 %sext1472, 32
  %1698 = getelementptr inbounds i8, ptr %1695, i64 %1697
  store i8 0, ptr %1698, align 1, !tbaa !9
  %sext1474 = add i64 %1693, 4294967296
  %1699 = ashr exact i64 %sext1474, 32
  %1700 = load double, ptr %2, align 8, !tbaa !5
  %1701 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1695, i64 noundef %1699, ptr noundef nonnull @.str.37, double noundef %1700) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %181) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %182) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %182, ptr noundef nonnull align 8 dereferenceable(128) %179)
          to label %1702 unwind label %1714

1702:                                             ; preds = %1696
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %183) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %184) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %184) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %183, ptr noundef nonnull %1695, ptr noundef nonnull align 1 dereferenceable(1) %184)
          to label %1703 unwind label %1716

1703:                                             ; preds = %1702
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %181, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %182, ptr noundef nonnull align 8 dereferenceable(32) %183)
          to label %1704 unwind label %1718

1704:                                             ; preds = %1703
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %183) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %184) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %184) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %183) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %182) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %182) #9
  %1705 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %181)
  br i1 %1705, label %1736, label %1722

1706:                                             ; preds = %1687, %1673
  %.pn1465.pn.pn = phi { ptr, i32 } [ %.pn1465.pn, %1687 ], [ %.pn1462.pn, %1673 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %173) #9
  br label %1707

1707:                                             ; preds = %1662, %1706, %1664, %1660
  %.pn1465.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1661, %1660 ], [ %1663, %1662 ], [ %.pn1465.pn.pn, %1706 ], [ %1665, %1664 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %171) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %171) #9
  br label %4427

1708:                                             ; preds = %1688
  %1709 = landingpad { ptr, i32 }
          cleanup
  br label %1755

1710:                                             ; preds = %1690
  %1711 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %180) #9
  br label %1755

1712:                                             ; preds = %1691
  %1713 = landingpad { ptr, i32 }
          cleanup
  br label %1755

1714:                                             ; preds = %1696
  %1715 = landingpad { ptr, i32 }
          cleanup
  br label %1721

1716:                                             ; preds = %1702
  %1717 = landingpad { ptr, i32 }
          cleanup
  br label %1720

1718:                                             ; preds = %1703
  %1719 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %183) #9
  br label %1720

1720:                                             ; preds = %1718, %1716
  %.pn1475 = phi { ptr, i32 } [ %1719, %1718 ], [ %1717, %1716 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %184) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %184) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %183) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %182) #9
  br label %1721

1721:                                             ; preds = %1720, %1714
  %.pn1475.pn = phi { ptr, i32 } [ %.pn1475, %1720 ], [ %1715, %1714 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %182) #9
  br label %1754

1722:                                             ; preds = %1704
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %185) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %185)
          to label %1723 unwind label %1728

1723:                                             ; preds = %1722
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %186) #9
  %1724 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %181)
          to label %1725 unwind label %1730

1725:                                             ; preds = %1723
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %186, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 95, ptr noundef %1724)
          to label %1726 unwind label %1730

1726:                                             ; preds = %1725
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %186, ptr noundef nonnull align 8 dereferenceable(8) %185)
          to label %1727 unwind label %1732

1727:                                             ; preds = %1726
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %186) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %186) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %185) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %185) #9
  br label %1736

1728:                                             ; preds = %1722
  %1729 = landingpad { ptr, i32 }
          cleanup
  br label %1735

1730:                                             ; preds = %1725, %1723
  %1731 = landingpad { ptr, i32 }
          cleanup
  br label %1734

1732:                                             ; preds = %1726
  %1733 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %186) #9
  br label %1734

1734:                                             ; preds = %1732, %1730
  %.pn1478 = phi { ptr, i32 } [ %1733, %1732 ], [ %1731, %1730 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %186) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %185) #9
  br label %1735

1735:                                             ; preds = %1734, %1728
  %.pn1478.pn = phi { ptr, i32 } [ %.pn1478, %1734 ], [ %1729, %1728 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %185) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %181) #9
  br label %1754

1736:                                             ; preds = %1704, %1727
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %181) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %181) #9
  call void @_ZdaPv(ptr noundef nonnull %1695) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %179) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %179) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %187) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %187)
  %1737 = getelementptr inbounds i8, ptr %187, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1737, ptr noundef nonnull @.str.38, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1738 unwind label %1756

1738:                                             ; preds = %1736
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %188) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %188, ptr noundef nonnull align 8 dereferenceable(128) %187)
          to label %1739 unwind label %1758

1739:                                             ; preds = %1738
  %1740 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %188) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %188) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %188) #9
  %1741 = shl i64 %1740, 32
  %sext1486 = add i64 %1741, 12884901888
  %1742 = ashr exact i64 %sext1486, 32
  %1743 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1742) #10
          to label %1744 unwind label %1760

1744:                                             ; preds = %1739
  %sext1485 = add i64 %1741, 8589934592
  %1745 = ashr exact i64 %sext1485, 32
  %1746 = getelementptr inbounds i8, ptr %1743, i64 %1745
  store i8 0, ptr %1746, align 1, !tbaa !9
  %sext1487 = add i64 %1741, 4294967296
  %1747 = ashr exact i64 %sext1487, 32
  %1748 = load double, ptr %2, align 8, !tbaa !5
  %1749 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1743, i64 noundef %1747, ptr noundef nonnull @.str.38, double noundef %1748) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %189) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %190) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %190, ptr noundef nonnull align 8 dereferenceable(128) %187)
          to label %1750 unwind label %1762

1750:                                             ; preds = %1744
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %191) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %192) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %192) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %191, ptr noundef nonnull %1743, ptr noundef nonnull align 1 dereferenceable(1) %192)
          to label %1751 unwind label %1764

1751:                                             ; preds = %1750
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %189, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %190, ptr noundef nonnull align 8 dereferenceable(32) %191)
          to label %1752 unwind label %1766

1752:                                             ; preds = %1751
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %191) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %192) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %192) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %191) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %190) #9
  %1753 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %189)
  br i1 %1753, label %1784, label %1770

1754:                                             ; preds = %1735, %1721
  %.pn1478.pn.pn = phi { ptr, i32 } [ %.pn1478.pn, %1735 ], [ %.pn1475.pn, %1721 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %181) #9
  br label %1755

1755:                                             ; preds = %1710, %1754, %1712, %1708
  %.pn1478.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1709, %1708 ], [ %1711, %1710 ], [ %.pn1478.pn.pn, %1754 ], [ %1713, %1712 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %179) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %179) #9
  br label %4427

1756:                                             ; preds = %1736
  %1757 = landingpad { ptr, i32 }
          cleanup
  br label %1803

1758:                                             ; preds = %1738
  %1759 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %188) #9
  br label %1803

1760:                                             ; preds = %1739
  %1761 = landingpad { ptr, i32 }
          cleanup
  br label %1803

1762:                                             ; preds = %1744
  %1763 = landingpad { ptr, i32 }
          cleanup
  br label %1769

1764:                                             ; preds = %1750
  %1765 = landingpad { ptr, i32 }
          cleanup
  br label %1768

1766:                                             ; preds = %1751
  %1767 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %191) #9
  br label %1768

1768:                                             ; preds = %1766, %1764
  %.pn1488 = phi { ptr, i32 } [ %1767, %1766 ], [ %1765, %1764 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %192) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %192) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %191) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #9
  br label %1769

1769:                                             ; preds = %1768, %1762
  %.pn1488.pn = phi { ptr, i32 } [ %.pn1488, %1768 ], [ %1763, %1762 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %190) #9
  br label %1802

1770:                                             ; preds = %1752
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %193) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %193)
          to label %1771 unwind label %1776

1771:                                             ; preds = %1770
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %194) #9
  %1772 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %189)
          to label %1773 unwind label %1778

1773:                                             ; preds = %1771
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %194, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 96, ptr noundef %1772)
          to label %1774 unwind label %1778

1774:                                             ; preds = %1773
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %194, ptr noundef nonnull align 8 dereferenceable(8) %193)
          to label %1775 unwind label %1780

1775:                                             ; preds = %1774
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %194) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %194) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %193) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %193) #9
  br label %1784

1776:                                             ; preds = %1770
  %1777 = landingpad { ptr, i32 }
          cleanup
  br label %1783

1778:                                             ; preds = %1773, %1771
  %1779 = landingpad { ptr, i32 }
          cleanup
  br label %1782

1780:                                             ; preds = %1774
  %1781 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %194) #9
  br label %1782

1782:                                             ; preds = %1780, %1778
  %.pn1491 = phi { ptr, i32 } [ %1781, %1780 ], [ %1779, %1778 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %194) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %193) #9
  br label %1783

1783:                                             ; preds = %1782, %1776
  %.pn1491.pn = phi { ptr, i32 } [ %.pn1491, %1782 ], [ %1777, %1776 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %193) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %189) #9
  br label %1802

1784:                                             ; preds = %1752, %1775
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %189) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %189) #9
  call void @_ZdaPv(ptr noundef nonnull %1743) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %187) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %187) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %195) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %195)
  %1785 = getelementptr inbounds i8, ptr %195, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1785, ptr noundef nonnull @.str.39, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1786 unwind label %1804

1786:                                             ; preds = %1784
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %196) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %196, ptr noundef nonnull align 8 dereferenceable(128) %195)
          to label %1787 unwind label %1806

1787:                                             ; preds = %1786
  %1788 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %196) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %196) #9
  %1789 = shl i64 %1788, 32
  %sext1499 = add i64 %1789, 12884901888
  %1790 = ashr exact i64 %sext1499, 32
  %1791 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1790) #10
          to label %1792 unwind label %1808

1792:                                             ; preds = %1787
  %sext1498 = add i64 %1789, 8589934592
  %1793 = ashr exact i64 %sext1498, 32
  %1794 = getelementptr inbounds i8, ptr %1791, i64 %1793
  store i8 0, ptr %1794, align 1, !tbaa !9
  %sext1500 = add i64 %1789, 4294967296
  %1795 = ashr exact i64 %sext1500, 32
  %1796 = load double, ptr %2, align 8, !tbaa !5
  %1797 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1791, i64 noundef %1795, ptr noundef nonnull @.str.39, double noundef %1796) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %197) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %198) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %198, ptr noundef nonnull align 8 dereferenceable(128) %195)
          to label %1798 unwind label %1810

1798:                                             ; preds = %1792
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %199) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %200) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %200) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %199, ptr noundef nonnull %1791, ptr noundef nonnull align 1 dereferenceable(1) %200)
          to label %1799 unwind label %1812

1799:                                             ; preds = %1798
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %197, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %198, ptr noundef nonnull align 8 dereferenceable(32) %199)
          to label %1800 unwind label %1814

1800:                                             ; preds = %1799
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %199) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %200) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %200) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %199) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %198) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %198) #9
  %1801 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %197)
  br i1 %1801, label %1832, label %1818

1802:                                             ; preds = %1783, %1769
  %.pn1491.pn.pn = phi { ptr, i32 } [ %.pn1491.pn, %1783 ], [ %.pn1488.pn, %1769 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %189) #9
  br label %1803

1803:                                             ; preds = %1758, %1802, %1760, %1756
  %.pn1491.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1757, %1756 ], [ %1759, %1758 ], [ %.pn1491.pn.pn, %1802 ], [ %1761, %1760 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %187) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %187) #9
  br label %4427

1804:                                             ; preds = %1784
  %1805 = landingpad { ptr, i32 }
          cleanup
  br label %1851

1806:                                             ; preds = %1786
  %1807 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %196) #9
  br label %1851

1808:                                             ; preds = %1787
  %1809 = landingpad { ptr, i32 }
          cleanup
  br label %1851

1810:                                             ; preds = %1792
  %1811 = landingpad { ptr, i32 }
          cleanup
  br label %1817

1812:                                             ; preds = %1798
  %1813 = landingpad { ptr, i32 }
          cleanup
  br label %1816

1814:                                             ; preds = %1799
  %1815 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %199) #9
  br label %1816

1816:                                             ; preds = %1814, %1812
  %.pn1501 = phi { ptr, i32 } [ %1815, %1814 ], [ %1813, %1812 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %200) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %200) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %199) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %198) #9
  br label %1817

1817:                                             ; preds = %1816, %1810
  %.pn1501.pn = phi { ptr, i32 } [ %.pn1501, %1816 ], [ %1811, %1810 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %198) #9
  br label %1850

1818:                                             ; preds = %1800
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %201) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %201)
          to label %1819 unwind label %1824

1819:                                             ; preds = %1818
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %202) #9
  %1820 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %197)
          to label %1821 unwind label %1826

1821:                                             ; preds = %1819
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %202, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 97, ptr noundef %1820)
          to label %1822 unwind label %1826

1822:                                             ; preds = %1821
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(8) %201)
          to label %1823 unwind label %1828

1823:                                             ; preds = %1822
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %202) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %202) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %201) #9
  br label %1832

1824:                                             ; preds = %1818
  %1825 = landingpad { ptr, i32 }
          cleanup
  br label %1831

1826:                                             ; preds = %1821, %1819
  %1827 = landingpad { ptr, i32 }
          cleanup
  br label %1830

1828:                                             ; preds = %1822
  %1829 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %202) #9
  br label %1830

1830:                                             ; preds = %1828, %1826
  %.pn1504 = phi { ptr, i32 } [ %1829, %1828 ], [ %1827, %1826 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %202) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #9
  br label %1831

1831:                                             ; preds = %1830, %1824
  %.pn1504.pn = phi { ptr, i32 } [ %.pn1504, %1830 ], [ %1825, %1824 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %201) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %197) #9
  br label %1850

1832:                                             ; preds = %1800, %1823
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %197) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %197) #9
  call void @_ZdaPv(ptr noundef nonnull %1791) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %195) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %195) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %203) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %203)
  %1833 = getelementptr inbounds i8, ptr %203, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1833, ptr noundef nonnull @.str.40, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1834 unwind label %1852

1834:                                             ; preds = %1832
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %204) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %204, ptr noundef nonnull align 8 dereferenceable(128) %203)
          to label %1835 unwind label %1854

1835:                                             ; preds = %1834
  %1836 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %204) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %204) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %204) #9
  %1837 = shl i64 %1836, 32
  %sext1512 = add i64 %1837, 12884901888
  %1838 = ashr exact i64 %sext1512, 32
  %1839 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1838) #10
          to label %1840 unwind label %1856

1840:                                             ; preds = %1835
  %sext1511 = add i64 %1837, 8589934592
  %1841 = ashr exact i64 %sext1511, 32
  %1842 = getelementptr inbounds i8, ptr %1839, i64 %1841
  store i8 0, ptr %1842, align 1, !tbaa !9
  %sext1513 = add i64 %1837, 4294967296
  %1843 = ashr exact i64 %sext1513, 32
  %1844 = load double, ptr %2, align 8, !tbaa !5
  %1845 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1839, i64 noundef %1843, ptr noundef nonnull @.str.40, double noundef %1844) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %205) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %206) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %206, ptr noundef nonnull align 8 dereferenceable(128) %203)
          to label %1846 unwind label %1858

1846:                                             ; preds = %1840
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %207) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %208) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %208) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %207, ptr noundef nonnull %1839, ptr noundef nonnull align 1 dereferenceable(1) %208)
          to label %1847 unwind label %1860

1847:                                             ; preds = %1846
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %205, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %206, ptr noundef nonnull align 8 dereferenceable(32) %207)
          to label %1848 unwind label %1862

1848:                                             ; preds = %1847
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %207) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %208) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %208) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %207) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %206) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %206) #9
  %1849 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %205)
  br i1 %1849, label %1880, label %1866

1850:                                             ; preds = %1831, %1817
  %.pn1504.pn.pn = phi { ptr, i32 } [ %.pn1504.pn, %1831 ], [ %.pn1501.pn, %1817 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %197) #9
  br label %1851

1851:                                             ; preds = %1806, %1850, %1808, %1804
  %.pn1504.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1805, %1804 ], [ %1807, %1806 ], [ %.pn1504.pn.pn, %1850 ], [ %1809, %1808 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %195) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %195) #9
  br label %4427

1852:                                             ; preds = %1832
  %1853 = landingpad { ptr, i32 }
          cleanup
  br label %1899

1854:                                             ; preds = %1834
  %1855 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %204) #9
  br label %1899

1856:                                             ; preds = %1835
  %1857 = landingpad { ptr, i32 }
          cleanup
  br label %1899

1858:                                             ; preds = %1840
  %1859 = landingpad { ptr, i32 }
          cleanup
  br label %1865

1860:                                             ; preds = %1846
  %1861 = landingpad { ptr, i32 }
          cleanup
  br label %1864

1862:                                             ; preds = %1847
  %1863 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %207) #9
  br label %1864

1864:                                             ; preds = %1862, %1860
  %.pn1514 = phi { ptr, i32 } [ %1863, %1862 ], [ %1861, %1860 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %208) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %208) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %207) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %206) #9
  br label %1865

1865:                                             ; preds = %1864, %1858
  %.pn1514.pn = phi { ptr, i32 } [ %.pn1514, %1864 ], [ %1859, %1858 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %206) #9
  br label %1898

1866:                                             ; preds = %1848
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %209) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %209)
          to label %1867 unwind label %1872

1867:                                             ; preds = %1866
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %210) #9
  %1868 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %205)
          to label %1869 unwind label %1874

1869:                                             ; preds = %1867
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %210, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 98, ptr noundef %1868)
          to label %1870 unwind label %1874

1870:                                             ; preds = %1869
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef nonnull align 8 dereferenceable(8) %209)
          to label %1871 unwind label %1876

1871:                                             ; preds = %1870
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %210) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %210) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %209) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %209) #9
  br label %1880

1872:                                             ; preds = %1866
  %1873 = landingpad { ptr, i32 }
          cleanup
  br label %1879

1874:                                             ; preds = %1869, %1867
  %1875 = landingpad { ptr, i32 }
          cleanup
  br label %1878

1876:                                             ; preds = %1870
  %1877 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %210) #9
  br label %1878

1878:                                             ; preds = %1876, %1874
  %.pn1517 = phi { ptr, i32 } [ %1877, %1876 ], [ %1875, %1874 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %210) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %209) #9
  br label %1879

1879:                                             ; preds = %1878, %1872
  %.pn1517.pn = phi { ptr, i32 } [ %.pn1517, %1878 ], [ %1873, %1872 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %209) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %205) #9
  br label %1898

1880:                                             ; preds = %1848, %1871
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %205) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %205) #9
  call void @_ZdaPv(ptr noundef nonnull %1839) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %203) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %203) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %211) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %211)
  %1881 = getelementptr inbounds i8, ptr %211, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1881, ptr noundef nonnull @.str.41, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1882 unwind label %1900

1882:                                             ; preds = %1880
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %212) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %212, ptr noundef nonnull align 8 dereferenceable(128) %211)
          to label %1883 unwind label %1902

1883:                                             ; preds = %1882
  %1884 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %212) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %212) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %212) #9
  %1885 = shl i64 %1884, 32
  %sext1525 = add i64 %1885, 12884901888
  %1886 = ashr exact i64 %sext1525, 32
  %1887 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1886) #10
          to label %1888 unwind label %1904

1888:                                             ; preds = %1883
  %sext1524 = add i64 %1885, 8589934592
  %1889 = ashr exact i64 %sext1524, 32
  %1890 = getelementptr inbounds i8, ptr %1887, i64 %1889
  store i8 0, ptr %1890, align 1, !tbaa !9
  %sext1526 = add i64 %1885, 4294967296
  %1891 = ashr exact i64 %sext1526, 32
  %1892 = load double, ptr %2, align 8, !tbaa !5
  %1893 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1887, i64 noundef %1891, ptr noundef nonnull @.str.41, double noundef %1892) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %213) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %214) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %214, ptr noundef nonnull align 8 dereferenceable(128) %211)
          to label %1894 unwind label %1906

1894:                                             ; preds = %1888
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %215) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %216) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %216) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %215, ptr noundef nonnull %1887, ptr noundef nonnull align 1 dereferenceable(1) %216)
          to label %1895 unwind label %1908

1895:                                             ; preds = %1894
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %213, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %214, ptr noundef nonnull align 8 dereferenceable(32) %215)
          to label %1896 unwind label %1910

1896:                                             ; preds = %1895
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %215) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %216) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %216) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %215) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %214) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %214) #9
  %1897 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %213)
  br i1 %1897, label %1928, label %1914

1898:                                             ; preds = %1879, %1865
  %.pn1517.pn.pn = phi { ptr, i32 } [ %.pn1517.pn, %1879 ], [ %.pn1514.pn, %1865 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %205) #9
  br label %1899

1899:                                             ; preds = %1854, %1898, %1856, %1852
  %.pn1517.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1853, %1852 ], [ %1855, %1854 ], [ %.pn1517.pn.pn, %1898 ], [ %1857, %1856 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %203) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %203) #9
  br label %4427

1900:                                             ; preds = %1880
  %1901 = landingpad { ptr, i32 }
          cleanup
  br label %1947

1902:                                             ; preds = %1882
  %1903 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %212) #9
  br label %1947

1904:                                             ; preds = %1883
  %1905 = landingpad { ptr, i32 }
          cleanup
  br label %1947

1906:                                             ; preds = %1888
  %1907 = landingpad { ptr, i32 }
          cleanup
  br label %1913

1908:                                             ; preds = %1894
  %1909 = landingpad { ptr, i32 }
          cleanup
  br label %1912

1910:                                             ; preds = %1895
  %1911 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %215) #9
  br label %1912

1912:                                             ; preds = %1910, %1908
  %.pn1527 = phi { ptr, i32 } [ %1911, %1910 ], [ %1909, %1908 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %216) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %216) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %215) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %214) #9
  br label %1913

1913:                                             ; preds = %1912, %1906
  %.pn1527.pn = phi { ptr, i32 } [ %.pn1527, %1912 ], [ %1907, %1906 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %214) #9
  br label %1946

1914:                                             ; preds = %1896
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %217) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %217)
          to label %1915 unwind label %1920

1915:                                             ; preds = %1914
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %218) #9
  %1916 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %213)
          to label %1917 unwind label %1922

1917:                                             ; preds = %1915
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %218, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 99, ptr noundef %1916)
          to label %1918 unwind label %1922

1918:                                             ; preds = %1917
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef nonnull align 8 dereferenceable(8) %217)
          to label %1919 unwind label %1924

1919:                                             ; preds = %1918
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %218) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %218) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %217) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %217) #9
  br label %1928

1920:                                             ; preds = %1914
  %1921 = landingpad { ptr, i32 }
          cleanup
  br label %1927

1922:                                             ; preds = %1917, %1915
  %1923 = landingpad { ptr, i32 }
          cleanup
  br label %1926

1924:                                             ; preds = %1918
  %1925 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %218) #9
  br label %1926

1926:                                             ; preds = %1924, %1922
  %.pn1530 = phi { ptr, i32 } [ %1925, %1924 ], [ %1923, %1922 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %218) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %217) #9
  br label %1927

1927:                                             ; preds = %1926, %1920
  %.pn1530.pn = phi { ptr, i32 } [ %.pn1530, %1926 ], [ %1921, %1920 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %217) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %213) #9
  br label %1946

1928:                                             ; preds = %1896, %1919
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %213) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %213) #9
  call void @_ZdaPv(ptr noundef nonnull %1887) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %211) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %211) #9
  store double 0x3E91CED52219BEA5, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %219) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %219)
  %1929 = getelementptr inbounds i8, ptr %219, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1929, ptr noundef nonnull @.str.16, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1930 unwind label %1948

1930:                                             ; preds = %1928
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %220) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %220, ptr noundef nonnull align 8 dereferenceable(128) %219)
          to label %1931 unwind label %1950

1931:                                             ; preds = %1930
  %1932 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %220) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %220) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %220) #9
  %1933 = shl i64 %1932, 32
  %sext1538 = add i64 %1933, 12884901888
  %1934 = ashr exact i64 %sext1538, 32
  %1935 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1934) #10
          to label %1936 unwind label %1952

1936:                                             ; preds = %1931
  %sext1537 = add i64 %1933, 8589934592
  %1937 = ashr exact i64 %sext1537, 32
  %1938 = getelementptr inbounds i8, ptr %1935, i64 %1937
  store i8 0, ptr %1938, align 1, !tbaa !9
  %sext1539 = add i64 %1933, 4294967296
  %1939 = ashr exact i64 %sext1539, 32
  %1940 = load double, ptr %2, align 8, !tbaa !5
  %1941 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1935, i64 noundef %1939, ptr noundef nonnull @.str.16, double noundef %1940) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %221) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %222) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %222, ptr noundef nonnull align 8 dereferenceable(128) %219)
          to label %1942 unwind label %1954

1942:                                             ; preds = %1936
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %223) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %224) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %224) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %223, ptr noundef nonnull %1935, ptr noundef nonnull align 1 dereferenceable(1) %224)
          to label %1943 unwind label %1956

1943:                                             ; preds = %1942
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %221, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %222, ptr noundef nonnull align 8 dereferenceable(32) %223)
          to label %1944 unwind label %1958

1944:                                             ; preds = %1943
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %223) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %224) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %224) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %223) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %222) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %222) #9
  %1945 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %221)
  br i1 %1945, label %1976, label %1962

1946:                                             ; preds = %1927, %1913
  %.pn1530.pn.pn = phi { ptr, i32 } [ %.pn1530.pn, %1927 ], [ %.pn1527.pn, %1913 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %213) #9
  br label %1947

1947:                                             ; preds = %1902, %1946, %1904, %1900
  %.pn1530.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1901, %1900 ], [ %1903, %1902 ], [ %.pn1530.pn.pn, %1946 ], [ %1905, %1904 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %211) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %211) #9
  br label %4427

1948:                                             ; preds = %1928
  %1949 = landingpad { ptr, i32 }
          cleanup
  br label %1995

1950:                                             ; preds = %1930
  %1951 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %220) #9
  br label %1995

1952:                                             ; preds = %1931
  %1953 = landingpad { ptr, i32 }
          cleanup
  br label %1995

1954:                                             ; preds = %1936
  %1955 = landingpad { ptr, i32 }
          cleanup
  br label %1961

1956:                                             ; preds = %1942
  %1957 = landingpad { ptr, i32 }
          cleanup
  br label %1960

1958:                                             ; preds = %1943
  %1959 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %223) #9
  br label %1960

1960:                                             ; preds = %1958, %1956
  %.pn1540 = phi { ptr, i32 } [ %1959, %1958 ], [ %1957, %1956 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %224) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %224) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %223) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %222) #9
  br label %1961

1961:                                             ; preds = %1960, %1954
  %.pn1540.pn = phi { ptr, i32 } [ %.pn1540, %1960 ], [ %1955, %1954 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %222) #9
  br label %1994

1962:                                             ; preds = %1944
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %225) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %225)
          to label %1963 unwind label %1968

1963:                                             ; preds = %1962
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %226) #9
  %1964 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %221)
          to label %1965 unwind label %1970

1965:                                             ; preds = %1963
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %226, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 102, ptr noundef %1964)
          to label %1966 unwind label %1970

1966:                                             ; preds = %1965
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %226, ptr noundef nonnull align 8 dereferenceable(8) %225)
          to label %1967 unwind label %1972

1967:                                             ; preds = %1966
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %226) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %226) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %225) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %225) #9
  br label %1976

1968:                                             ; preds = %1962
  %1969 = landingpad { ptr, i32 }
          cleanup
  br label %1975

1970:                                             ; preds = %1965, %1963
  %1971 = landingpad { ptr, i32 }
          cleanup
  br label %1974

1972:                                             ; preds = %1966
  %1973 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %226) #9
  br label %1974

1974:                                             ; preds = %1972, %1970
  %.pn1543 = phi { ptr, i32 } [ %1973, %1972 ], [ %1971, %1970 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %226) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %225) #9
  br label %1975

1975:                                             ; preds = %1974, %1968
  %.pn1543.pn = phi { ptr, i32 } [ %.pn1543, %1974 ], [ %1969, %1968 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %225) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %221) #9
  br label %1994

1976:                                             ; preds = %1944, %1967
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %221) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %221) #9
  call void @_ZdaPv(ptr noundef nonnull %1935) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %219) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %219) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %227) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %227)
  %1977 = getelementptr inbounds i8, ptr %227, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %1977, ptr noundef nonnull @.str.17, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1978 unwind label %1996

1978:                                             ; preds = %1976
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %228) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %228, ptr noundef nonnull align 8 dereferenceable(128) %227)
          to label %1979 unwind label %1998

1979:                                             ; preds = %1978
  %1980 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %228) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %228) #9
  %1981 = shl i64 %1980, 32
  %sext1551 = add i64 %1981, 12884901888
  %1982 = ashr exact i64 %sext1551, 32
  %1983 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1982) #10
          to label %1984 unwind label %2000

1984:                                             ; preds = %1979
  %sext1550 = add i64 %1981, 8589934592
  %1985 = ashr exact i64 %sext1550, 32
  %1986 = getelementptr inbounds i8, ptr %1983, i64 %1985
  store i8 0, ptr %1986, align 1, !tbaa !9
  %sext1552 = add i64 %1981, 4294967296
  %1987 = ashr exact i64 %sext1552, 32
  %1988 = load double, ptr %2, align 8, !tbaa !5
  %1989 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %1983, i64 noundef %1987, ptr noundef nonnull @.str.17, double noundef %1988) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %229) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %230) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %230, ptr noundef nonnull align 8 dereferenceable(128) %227)
          to label %1990 unwind label %2002

1990:                                             ; preds = %1984
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %231) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %232) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %232) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %231, ptr noundef nonnull %1983, ptr noundef nonnull align 1 dereferenceable(1) %232)
          to label %1991 unwind label %2004

1991:                                             ; preds = %1990
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %229, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %230, ptr noundef nonnull align 8 dereferenceable(32) %231)
          to label %1992 unwind label %2006

1992:                                             ; preds = %1991
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %231) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %232) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %232) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %231) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %230) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %230) #9
  %1993 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %229)
  br i1 %1993, label %2024, label %2010

1994:                                             ; preds = %1975, %1961
  %.pn1543.pn.pn = phi { ptr, i32 } [ %.pn1543.pn, %1975 ], [ %.pn1540.pn, %1961 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %221) #9
  br label %1995

1995:                                             ; preds = %1950, %1994, %1952, %1948
  %.pn1543.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1949, %1948 ], [ %1951, %1950 ], [ %.pn1543.pn.pn, %1994 ], [ %1953, %1952 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %219) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %219) #9
  br label %4427

1996:                                             ; preds = %1976
  %1997 = landingpad { ptr, i32 }
          cleanup
  br label %2043

1998:                                             ; preds = %1978
  %1999 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %228) #9
  br label %2043

2000:                                             ; preds = %1979
  %2001 = landingpad { ptr, i32 }
          cleanup
  br label %2043

2002:                                             ; preds = %1984
  %2003 = landingpad { ptr, i32 }
          cleanup
  br label %2009

2004:                                             ; preds = %1990
  %2005 = landingpad { ptr, i32 }
          cleanup
  br label %2008

2006:                                             ; preds = %1991
  %2007 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %231) #9
  br label %2008

2008:                                             ; preds = %2006, %2004
  %.pn1553 = phi { ptr, i32 } [ %2007, %2006 ], [ %2005, %2004 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %232) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %232) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %231) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %230) #9
  br label %2009

2009:                                             ; preds = %2008, %2002
  %.pn1553.pn = phi { ptr, i32 } [ %.pn1553, %2008 ], [ %2003, %2002 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %230) #9
  br label %2042

2010:                                             ; preds = %1992
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %233) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %233)
          to label %2011 unwind label %2016

2011:                                             ; preds = %2010
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %234) #9
  %2012 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %229)
          to label %2013 unwind label %2018

2013:                                             ; preds = %2011
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %234, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 103, ptr noundef %2012)
          to label %2014 unwind label %2018

2014:                                             ; preds = %2013
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %234, ptr noundef nonnull align 8 dereferenceable(8) %233)
          to label %2015 unwind label %2020

2015:                                             ; preds = %2014
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %234) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %234) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %233) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %233) #9
  br label %2024

2016:                                             ; preds = %2010
  %2017 = landingpad { ptr, i32 }
          cleanup
  br label %2023

2018:                                             ; preds = %2013, %2011
  %2019 = landingpad { ptr, i32 }
          cleanup
  br label %2022

2020:                                             ; preds = %2014
  %2021 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %234) #9
  br label %2022

2022:                                             ; preds = %2020, %2018
  %.pn1556 = phi { ptr, i32 } [ %2021, %2020 ], [ %2019, %2018 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %234) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %233) #9
  br label %2023

2023:                                             ; preds = %2022, %2016
  %.pn1556.pn = phi { ptr, i32 } [ %.pn1556, %2022 ], [ %2017, %2016 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %233) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %229) #9
  br label %2042

2024:                                             ; preds = %1992, %2015
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %229) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %229) #9
  call void @_ZdaPv(ptr noundef nonnull %1983) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %227) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %227) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %235) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %235)
  %2025 = getelementptr inbounds i8, ptr %235, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2025, ptr noundef nonnull @.str.18, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2026 unwind label %2044

2026:                                             ; preds = %2024
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %236) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %236, ptr noundef nonnull align 8 dereferenceable(128) %235)
          to label %2027 unwind label %2046

2027:                                             ; preds = %2026
  %2028 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %236) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %236) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %236) #9
  %2029 = shl i64 %2028, 32
  %sext1564 = add i64 %2029, 12884901888
  %2030 = ashr exact i64 %sext1564, 32
  %2031 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2030) #10
          to label %2032 unwind label %2048

2032:                                             ; preds = %2027
  %sext1563 = add i64 %2029, 8589934592
  %2033 = ashr exact i64 %sext1563, 32
  %2034 = getelementptr inbounds i8, ptr %2031, i64 %2033
  store i8 0, ptr %2034, align 1, !tbaa !9
  %sext1565 = add i64 %2029, 4294967296
  %2035 = ashr exact i64 %sext1565, 32
  %2036 = load double, ptr %2, align 8, !tbaa !5
  %2037 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2031, i64 noundef %2035, ptr noundef nonnull @.str.18, double noundef %2036) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %237) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %238) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %238, ptr noundef nonnull align 8 dereferenceable(128) %235)
          to label %2038 unwind label %2050

2038:                                             ; preds = %2032
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %239) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %240) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %240) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %239, ptr noundef nonnull %2031, ptr noundef nonnull align 1 dereferenceable(1) %240)
          to label %2039 unwind label %2052

2039:                                             ; preds = %2038
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %237, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %238, ptr noundef nonnull align 8 dereferenceable(32) %239)
          to label %2040 unwind label %2054

2040:                                             ; preds = %2039
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %239) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %240) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %240) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %239) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %238) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %238) #9
  %2041 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %237)
  br i1 %2041, label %2072, label %2058

2042:                                             ; preds = %2023, %2009
  %.pn1556.pn.pn = phi { ptr, i32 } [ %.pn1556.pn, %2023 ], [ %.pn1553.pn, %2009 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %229) #9
  br label %2043

2043:                                             ; preds = %1998, %2042, %2000, %1996
  %.pn1556.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1997, %1996 ], [ %1999, %1998 ], [ %.pn1556.pn.pn, %2042 ], [ %2001, %2000 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %227) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %227) #9
  br label %4427

2044:                                             ; preds = %2024
  %2045 = landingpad { ptr, i32 }
          cleanup
  br label %2091

2046:                                             ; preds = %2026
  %2047 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %236) #9
  br label %2091

2048:                                             ; preds = %2027
  %2049 = landingpad { ptr, i32 }
          cleanup
  br label %2091

2050:                                             ; preds = %2032
  %2051 = landingpad { ptr, i32 }
          cleanup
  br label %2057

2052:                                             ; preds = %2038
  %2053 = landingpad { ptr, i32 }
          cleanup
  br label %2056

2054:                                             ; preds = %2039
  %2055 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %239) #9
  br label %2056

2056:                                             ; preds = %2054, %2052
  %.pn1566 = phi { ptr, i32 } [ %2055, %2054 ], [ %2053, %2052 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %240) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %240) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %239) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %238) #9
  br label %2057

2057:                                             ; preds = %2056, %2050
  %.pn1566.pn = phi { ptr, i32 } [ %.pn1566, %2056 ], [ %2051, %2050 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %238) #9
  br label %2090

2058:                                             ; preds = %2040
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %241) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %241)
          to label %2059 unwind label %2064

2059:                                             ; preds = %2058
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %242) #9
  %2060 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %237)
          to label %2061 unwind label %2066

2061:                                             ; preds = %2059
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %242, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 104, ptr noundef %2060)
          to label %2062 unwind label %2066

2062:                                             ; preds = %2061
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %242, ptr noundef nonnull align 8 dereferenceable(8) %241)
          to label %2063 unwind label %2068

2063:                                             ; preds = %2062
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %242) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %242) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %241) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %241) #9
  br label %2072

2064:                                             ; preds = %2058
  %2065 = landingpad { ptr, i32 }
          cleanup
  br label %2071

2066:                                             ; preds = %2061, %2059
  %2067 = landingpad { ptr, i32 }
          cleanup
  br label %2070

2068:                                             ; preds = %2062
  %2069 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %242) #9
  br label %2070

2070:                                             ; preds = %2068, %2066
  %.pn1569 = phi { ptr, i32 } [ %2069, %2068 ], [ %2067, %2066 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %242) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %241) #9
  br label %2071

2071:                                             ; preds = %2070, %2064
  %.pn1569.pn = phi { ptr, i32 } [ %.pn1569, %2070 ], [ %2065, %2064 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %241) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %237) #9
  br label %2090

2072:                                             ; preds = %2040, %2063
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %237) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %237) #9
  call void @_ZdaPv(ptr noundef nonnull %2031) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %235) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %235) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %243) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %243)
  %2073 = getelementptr inbounds i8, ptr %243, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2073, ptr noundef nonnull @.str.19, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2074 unwind label %2092

2074:                                             ; preds = %2072
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %244) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %244, ptr noundef nonnull align 8 dereferenceable(128) %243)
          to label %2075 unwind label %2094

2075:                                             ; preds = %2074
  %2076 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %244) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %244) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %244) #9
  %2077 = shl i64 %2076, 32
  %sext1577 = add i64 %2077, 12884901888
  %2078 = ashr exact i64 %sext1577, 32
  %2079 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2078) #10
          to label %2080 unwind label %2096

2080:                                             ; preds = %2075
  %sext1576 = add i64 %2077, 8589934592
  %2081 = ashr exact i64 %sext1576, 32
  %2082 = getelementptr inbounds i8, ptr %2079, i64 %2081
  store i8 0, ptr %2082, align 1, !tbaa !9
  %sext1578 = add i64 %2077, 4294967296
  %2083 = ashr exact i64 %sext1578, 32
  %2084 = load double, ptr %2, align 8, !tbaa !5
  %2085 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2079, i64 noundef %2083, ptr noundef nonnull @.str.19, double noundef %2084) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %245) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %246) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %246, ptr noundef nonnull align 8 dereferenceable(128) %243)
          to label %2086 unwind label %2098

2086:                                             ; preds = %2080
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %247) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %248) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %248) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %247, ptr noundef nonnull %2079, ptr noundef nonnull align 1 dereferenceable(1) %248)
          to label %2087 unwind label %2100

2087:                                             ; preds = %2086
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %245, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %246, ptr noundef nonnull align 8 dereferenceable(32) %247)
          to label %2088 unwind label %2102

2088:                                             ; preds = %2087
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %247) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %248) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %248) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %247) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %246) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %246) #9
  %2089 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %245)
  br i1 %2089, label %2120, label %2106

2090:                                             ; preds = %2071, %2057
  %.pn1569.pn.pn = phi { ptr, i32 } [ %.pn1569.pn, %2071 ], [ %.pn1566.pn, %2057 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %237) #9
  br label %2091

2091:                                             ; preds = %2046, %2090, %2048, %2044
  %.pn1569.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2045, %2044 ], [ %2047, %2046 ], [ %.pn1569.pn.pn, %2090 ], [ %2049, %2048 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %235) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %235) #9
  br label %4427

2092:                                             ; preds = %2072
  %2093 = landingpad { ptr, i32 }
          cleanup
  br label %2139

2094:                                             ; preds = %2074
  %2095 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %244) #9
  br label %2139

2096:                                             ; preds = %2075
  %2097 = landingpad { ptr, i32 }
          cleanup
  br label %2139

2098:                                             ; preds = %2080
  %2099 = landingpad { ptr, i32 }
          cleanup
  br label %2105

2100:                                             ; preds = %2086
  %2101 = landingpad { ptr, i32 }
          cleanup
  br label %2104

2102:                                             ; preds = %2087
  %2103 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %247) #9
  br label %2104

2104:                                             ; preds = %2102, %2100
  %.pn1579 = phi { ptr, i32 } [ %2103, %2102 ], [ %2101, %2100 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %248) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %248) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %247) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %246) #9
  br label %2105

2105:                                             ; preds = %2104, %2098
  %.pn1579.pn = phi { ptr, i32 } [ %.pn1579, %2104 ], [ %2099, %2098 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %246) #9
  br label %2138

2106:                                             ; preds = %2088
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %249) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %249)
          to label %2107 unwind label %2112

2107:                                             ; preds = %2106
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %250) #9
  %2108 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %245)
          to label %2109 unwind label %2114

2109:                                             ; preds = %2107
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %250, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 105, ptr noundef %2108)
          to label %2110 unwind label %2114

2110:                                             ; preds = %2109
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %250, ptr noundef nonnull align 8 dereferenceable(8) %249)
          to label %2111 unwind label %2116

2111:                                             ; preds = %2110
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %250) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %250) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %249) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %249) #9
  br label %2120

2112:                                             ; preds = %2106
  %2113 = landingpad { ptr, i32 }
          cleanup
  br label %2119

2114:                                             ; preds = %2109, %2107
  %2115 = landingpad { ptr, i32 }
          cleanup
  br label %2118

2116:                                             ; preds = %2110
  %2117 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %250) #9
  br label %2118

2118:                                             ; preds = %2116, %2114
  %.pn1582 = phi { ptr, i32 } [ %2117, %2116 ], [ %2115, %2114 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %250) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %249) #9
  br label %2119

2119:                                             ; preds = %2118, %2112
  %.pn1582.pn = phi { ptr, i32 } [ %.pn1582, %2118 ], [ %2113, %2112 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %249) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %245) #9
  br label %2138

2120:                                             ; preds = %2088, %2111
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %245) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %245) #9
  call void @_ZdaPv(ptr noundef nonnull %2079) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %243) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %243) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %251) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %251)
  %2121 = getelementptr inbounds i8, ptr %251, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2121, ptr noundef nonnull @.str.20, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2122 unwind label %2140

2122:                                             ; preds = %2120
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %252) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %252, ptr noundef nonnull align 8 dereferenceable(128) %251)
          to label %2123 unwind label %2142

2123:                                             ; preds = %2122
  %2124 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %252) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %252) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %252) #9
  %2125 = shl i64 %2124, 32
  %sext1590 = add i64 %2125, 12884901888
  %2126 = ashr exact i64 %sext1590, 32
  %2127 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2126) #10
          to label %2128 unwind label %2144

2128:                                             ; preds = %2123
  %sext1589 = add i64 %2125, 8589934592
  %2129 = ashr exact i64 %sext1589, 32
  %2130 = getelementptr inbounds i8, ptr %2127, i64 %2129
  store i8 0, ptr %2130, align 1, !tbaa !9
  %sext1591 = add i64 %2125, 4294967296
  %2131 = ashr exact i64 %sext1591, 32
  %2132 = load double, ptr %2, align 8, !tbaa !5
  %2133 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2127, i64 noundef %2131, ptr noundef nonnull @.str.20, double noundef %2132) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %253) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %254) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %254, ptr noundef nonnull align 8 dereferenceable(128) %251)
          to label %2134 unwind label %2146

2134:                                             ; preds = %2128
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %255) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %256) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %256) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %255, ptr noundef nonnull %2127, ptr noundef nonnull align 1 dereferenceable(1) %256)
          to label %2135 unwind label %2148

2135:                                             ; preds = %2134
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %253, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %254, ptr noundef nonnull align 8 dereferenceable(32) %255)
          to label %2136 unwind label %2150

2136:                                             ; preds = %2135
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %255) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %256) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %256) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %255) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %254) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %254) #9
  %2137 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %253)
  br i1 %2137, label %2168, label %2154

2138:                                             ; preds = %2119, %2105
  %.pn1582.pn.pn = phi { ptr, i32 } [ %.pn1582.pn, %2119 ], [ %.pn1579.pn, %2105 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %245) #9
  br label %2139

2139:                                             ; preds = %2094, %2138, %2096, %2092
  %.pn1582.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2093, %2092 ], [ %2095, %2094 ], [ %.pn1582.pn.pn, %2138 ], [ %2097, %2096 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %243) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %243) #9
  br label %4427

2140:                                             ; preds = %2120
  %2141 = landingpad { ptr, i32 }
          cleanup
  br label %2187

2142:                                             ; preds = %2122
  %2143 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %252) #9
  br label %2187

2144:                                             ; preds = %2123
  %2145 = landingpad { ptr, i32 }
          cleanup
  br label %2187

2146:                                             ; preds = %2128
  %2147 = landingpad { ptr, i32 }
          cleanup
  br label %2153

2148:                                             ; preds = %2134
  %2149 = landingpad { ptr, i32 }
          cleanup
  br label %2152

2150:                                             ; preds = %2135
  %2151 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %255) #9
  br label %2152

2152:                                             ; preds = %2150, %2148
  %.pn1592 = phi { ptr, i32 } [ %2151, %2150 ], [ %2149, %2148 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %256) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %256) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %255) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %254) #9
  br label %2153

2153:                                             ; preds = %2152, %2146
  %.pn1592.pn = phi { ptr, i32 } [ %.pn1592, %2152 ], [ %2147, %2146 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %254) #9
  br label %2186

2154:                                             ; preds = %2136
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %257) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %257)
          to label %2155 unwind label %2160

2155:                                             ; preds = %2154
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %258) #9
  %2156 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %253)
          to label %2157 unwind label %2162

2157:                                             ; preds = %2155
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %258, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 106, ptr noundef %2156)
          to label %2158 unwind label %2162

2158:                                             ; preds = %2157
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %258, ptr noundef nonnull align 8 dereferenceable(8) %257)
          to label %2159 unwind label %2164

2159:                                             ; preds = %2158
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %258) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %258) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %257) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %257) #9
  br label %2168

2160:                                             ; preds = %2154
  %2161 = landingpad { ptr, i32 }
          cleanup
  br label %2167

2162:                                             ; preds = %2157, %2155
  %2163 = landingpad { ptr, i32 }
          cleanup
  br label %2166

2164:                                             ; preds = %2158
  %2165 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %258) #9
  br label %2166

2166:                                             ; preds = %2164, %2162
  %.pn1595 = phi { ptr, i32 } [ %2165, %2164 ], [ %2163, %2162 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %258) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %257) #9
  br label %2167

2167:                                             ; preds = %2166, %2160
  %.pn1595.pn = phi { ptr, i32 } [ %.pn1595, %2166 ], [ %2161, %2160 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %257) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %253) #9
  br label %2186

2168:                                             ; preds = %2136, %2159
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %253) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %253) #9
  call void @_ZdaPv(ptr noundef nonnull %2127) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %251) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %251) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %259) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %259)
  %2169 = getelementptr inbounds i8, ptr %259, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2169, ptr noundef nonnull @.str.21, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2170 unwind label %2188

2170:                                             ; preds = %2168
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %260) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %260, ptr noundef nonnull align 8 dereferenceable(128) %259)
          to label %2171 unwind label %2190

2171:                                             ; preds = %2170
  %2172 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %260) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %260) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %260) #9
  %2173 = shl i64 %2172, 32
  %sext1603 = add i64 %2173, 12884901888
  %2174 = ashr exact i64 %sext1603, 32
  %2175 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2174) #10
          to label %2176 unwind label %2192

2176:                                             ; preds = %2171
  %sext1602 = add i64 %2173, 8589934592
  %2177 = ashr exact i64 %sext1602, 32
  %2178 = getelementptr inbounds i8, ptr %2175, i64 %2177
  store i8 0, ptr %2178, align 1, !tbaa !9
  %sext1604 = add i64 %2173, 4294967296
  %2179 = ashr exact i64 %sext1604, 32
  %2180 = load double, ptr %2, align 8, !tbaa !5
  %2181 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2175, i64 noundef %2179, ptr noundef nonnull @.str.21, double noundef %2180) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %261) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %262) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %262, ptr noundef nonnull align 8 dereferenceable(128) %259)
          to label %2182 unwind label %2194

2182:                                             ; preds = %2176
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %263) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %264) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %264) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %263, ptr noundef nonnull %2175, ptr noundef nonnull align 1 dereferenceable(1) %264)
          to label %2183 unwind label %2196

2183:                                             ; preds = %2182
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %261, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %262, ptr noundef nonnull align 8 dereferenceable(32) %263)
          to label %2184 unwind label %2198

2184:                                             ; preds = %2183
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %263) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %264) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %264) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %263) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %262) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %262) #9
  %2185 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %261)
  br i1 %2185, label %2216, label %2202

2186:                                             ; preds = %2167, %2153
  %.pn1595.pn.pn = phi { ptr, i32 } [ %.pn1595.pn, %2167 ], [ %.pn1592.pn, %2153 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %253) #9
  br label %2187

2187:                                             ; preds = %2142, %2186, %2144, %2140
  %.pn1595.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2141, %2140 ], [ %2143, %2142 ], [ %.pn1595.pn.pn, %2186 ], [ %2145, %2144 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %251) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %251) #9
  br label %4427

2188:                                             ; preds = %2168
  %2189 = landingpad { ptr, i32 }
          cleanup
  br label %2235

2190:                                             ; preds = %2170
  %2191 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %260) #9
  br label %2235

2192:                                             ; preds = %2171
  %2193 = landingpad { ptr, i32 }
          cleanup
  br label %2235

2194:                                             ; preds = %2176
  %2195 = landingpad { ptr, i32 }
          cleanup
  br label %2201

2196:                                             ; preds = %2182
  %2197 = landingpad { ptr, i32 }
          cleanup
  br label %2200

2198:                                             ; preds = %2183
  %2199 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %263) #9
  br label %2200

2200:                                             ; preds = %2198, %2196
  %.pn1605 = phi { ptr, i32 } [ %2199, %2198 ], [ %2197, %2196 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %264) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %264) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %263) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %262) #9
  br label %2201

2201:                                             ; preds = %2200, %2194
  %.pn1605.pn = phi { ptr, i32 } [ %.pn1605, %2200 ], [ %2195, %2194 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %262) #9
  br label %2234

2202:                                             ; preds = %2184
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %265) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %265)
          to label %2203 unwind label %2208

2203:                                             ; preds = %2202
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %266) #9
  %2204 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %261)
          to label %2205 unwind label %2210

2205:                                             ; preds = %2203
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %266, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 107, ptr noundef %2204)
          to label %2206 unwind label %2210

2206:                                             ; preds = %2205
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %266, ptr noundef nonnull align 8 dereferenceable(8) %265)
          to label %2207 unwind label %2212

2207:                                             ; preds = %2206
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %266) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %266) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %265) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %265) #9
  br label %2216

2208:                                             ; preds = %2202
  %2209 = landingpad { ptr, i32 }
          cleanup
  br label %2215

2210:                                             ; preds = %2205, %2203
  %2211 = landingpad { ptr, i32 }
          cleanup
  br label %2214

2212:                                             ; preds = %2206
  %2213 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %266) #9
  br label %2214

2214:                                             ; preds = %2212, %2210
  %.pn1608 = phi { ptr, i32 } [ %2213, %2212 ], [ %2211, %2210 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %266) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %265) #9
  br label %2215

2215:                                             ; preds = %2214, %2208
  %.pn1608.pn = phi { ptr, i32 } [ %.pn1608, %2214 ], [ %2209, %2208 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %265) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %261) #9
  br label %2234

2216:                                             ; preds = %2184, %2207
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %261) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %261) #9
  call void @_ZdaPv(ptr noundef nonnull %2175) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %259) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %259) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %267) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %267)
  %2217 = getelementptr inbounds i8, ptr %267, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2217, ptr noundef nonnull @.str.22, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2218 unwind label %2236

2218:                                             ; preds = %2216
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %268) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %268, ptr noundef nonnull align 8 dereferenceable(128) %267)
          to label %2219 unwind label %2238

2219:                                             ; preds = %2218
  %2220 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %268) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %268) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %268) #9
  %2221 = shl i64 %2220, 32
  %sext1616 = add i64 %2221, 12884901888
  %2222 = ashr exact i64 %sext1616, 32
  %2223 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2222) #10
          to label %2224 unwind label %2240

2224:                                             ; preds = %2219
  %sext1615 = add i64 %2221, 8589934592
  %2225 = ashr exact i64 %sext1615, 32
  %2226 = getelementptr inbounds i8, ptr %2223, i64 %2225
  store i8 0, ptr %2226, align 1, !tbaa !9
  %sext1617 = add i64 %2221, 4294967296
  %2227 = ashr exact i64 %sext1617, 32
  %2228 = load double, ptr %2, align 8, !tbaa !5
  %2229 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2223, i64 noundef %2227, ptr noundef nonnull @.str.22, double noundef %2228) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %269) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %270) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %270, ptr noundef nonnull align 8 dereferenceable(128) %267)
          to label %2230 unwind label %2242

2230:                                             ; preds = %2224
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %271) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %272) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %272) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %271, ptr noundef nonnull %2223, ptr noundef nonnull align 1 dereferenceable(1) %272)
          to label %2231 unwind label %2244

2231:                                             ; preds = %2230
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %269, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %270, ptr noundef nonnull align 8 dereferenceable(32) %271)
          to label %2232 unwind label %2246

2232:                                             ; preds = %2231
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %271) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %272) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %272) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %271) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %270) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %270) #9
  %2233 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %269)
  br i1 %2233, label %2264, label %2250

2234:                                             ; preds = %2215, %2201
  %.pn1608.pn.pn = phi { ptr, i32 } [ %.pn1608.pn, %2215 ], [ %.pn1605.pn, %2201 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %261) #9
  br label %2235

2235:                                             ; preds = %2190, %2234, %2192, %2188
  %.pn1608.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2189, %2188 ], [ %2191, %2190 ], [ %.pn1608.pn.pn, %2234 ], [ %2193, %2192 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %259) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %259) #9
  br label %4427

2236:                                             ; preds = %2216
  %2237 = landingpad { ptr, i32 }
          cleanup
  br label %2283

2238:                                             ; preds = %2218
  %2239 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %268) #9
  br label %2283

2240:                                             ; preds = %2219
  %2241 = landingpad { ptr, i32 }
          cleanup
  br label %2283

2242:                                             ; preds = %2224
  %2243 = landingpad { ptr, i32 }
          cleanup
  br label %2249

2244:                                             ; preds = %2230
  %2245 = landingpad { ptr, i32 }
          cleanup
  br label %2248

2246:                                             ; preds = %2231
  %2247 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %271) #9
  br label %2248

2248:                                             ; preds = %2246, %2244
  %.pn1618 = phi { ptr, i32 } [ %2247, %2246 ], [ %2245, %2244 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %272) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %272) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %271) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %270) #9
  br label %2249

2249:                                             ; preds = %2248, %2242
  %.pn1618.pn = phi { ptr, i32 } [ %.pn1618, %2248 ], [ %2243, %2242 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %270) #9
  br label %2282

2250:                                             ; preds = %2232
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %273) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %273)
          to label %2251 unwind label %2256

2251:                                             ; preds = %2250
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %274) #9
  %2252 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %269)
          to label %2253 unwind label %2258

2253:                                             ; preds = %2251
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %274, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 108, ptr noundef %2252)
          to label %2254 unwind label %2258

2254:                                             ; preds = %2253
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %274, ptr noundef nonnull align 8 dereferenceable(8) %273)
          to label %2255 unwind label %2260

2255:                                             ; preds = %2254
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %274) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %274) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %273) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %273) #9
  br label %2264

2256:                                             ; preds = %2250
  %2257 = landingpad { ptr, i32 }
          cleanup
  br label %2263

2258:                                             ; preds = %2253, %2251
  %2259 = landingpad { ptr, i32 }
          cleanup
  br label %2262

2260:                                             ; preds = %2254
  %2261 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %274) #9
  br label %2262

2262:                                             ; preds = %2260, %2258
  %.pn1621 = phi { ptr, i32 } [ %2261, %2260 ], [ %2259, %2258 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %274) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %273) #9
  br label %2263

2263:                                             ; preds = %2262, %2256
  %.pn1621.pn = phi { ptr, i32 } [ %.pn1621, %2262 ], [ %2257, %2256 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %273) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %269) #9
  br label %2282

2264:                                             ; preds = %2232, %2255
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %269) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %269) #9
  call void @_ZdaPv(ptr noundef nonnull %2223) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %267) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %267) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %275) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %275)
  %2265 = getelementptr inbounds i8, ptr %275, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2265, ptr noundef nonnull @.str.24, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2266 unwind label %2284

2266:                                             ; preds = %2264
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %276) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %276, ptr noundef nonnull align 8 dereferenceable(128) %275)
          to label %2267 unwind label %2286

2267:                                             ; preds = %2266
  %2268 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %276) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %276) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %276) #9
  %2269 = shl i64 %2268, 32
  %sext1629 = add i64 %2269, 12884901888
  %2270 = ashr exact i64 %sext1629, 32
  %2271 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2270) #10
          to label %2272 unwind label %2288

2272:                                             ; preds = %2267
  %sext1628 = add i64 %2269, 8589934592
  %2273 = ashr exact i64 %sext1628, 32
  %2274 = getelementptr inbounds i8, ptr %2271, i64 %2273
  store i8 0, ptr %2274, align 1, !tbaa !9
  %sext1630 = add i64 %2269, 4294967296
  %2275 = ashr exact i64 %sext1630, 32
  %2276 = load double, ptr %2, align 8, !tbaa !5
  %2277 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2271, i64 noundef %2275, ptr noundef nonnull @.str.24, double noundef %2276) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %277) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %278) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %278, ptr noundef nonnull align 8 dereferenceable(128) %275)
          to label %2278 unwind label %2290

2278:                                             ; preds = %2272
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %279) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %280) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %280) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %279, ptr noundef nonnull %2271, ptr noundef nonnull align 1 dereferenceable(1) %280)
          to label %2279 unwind label %2292

2279:                                             ; preds = %2278
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %277, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %278, ptr noundef nonnull align 8 dereferenceable(32) %279)
          to label %2280 unwind label %2294

2280:                                             ; preds = %2279
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %279) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %280) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %280) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %279) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %278) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %278) #9
  %2281 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %277)
  br i1 %2281, label %2312, label %2298

2282:                                             ; preds = %2263, %2249
  %.pn1621.pn.pn = phi { ptr, i32 } [ %.pn1621.pn, %2263 ], [ %.pn1618.pn, %2249 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %269) #9
  br label %2283

2283:                                             ; preds = %2238, %2282, %2240, %2236
  %.pn1621.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2237, %2236 ], [ %2239, %2238 ], [ %.pn1621.pn.pn, %2282 ], [ %2241, %2240 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %267) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %267) #9
  br label %4427

2284:                                             ; preds = %2264
  %2285 = landingpad { ptr, i32 }
          cleanup
  br label %2331

2286:                                             ; preds = %2266
  %2287 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %276) #9
  br label %2331

2288:                                             ; preds = %2267
  %2289 = landingpad { ptr, i32 }
          cleanup
  br label %2331

2290:                                             ; preds = %2272
  %2291 = landingpad { ptr, i32 }
          cleanup
  br label %2297

2292:                                             ; preds = %2278
  %2293 = landingpad { ptr, i32 }
          cleanup
  br label %2296

2294:                                             ; preds = %2279
  %2295 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %279) #9
  br label %2296

2296:                                             ; preds = %2294, %2292
  %.pn1631 = phi { ptr, i32 } [ %2295, %2294 ], [ %2293, %2292 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %280) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %280) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %279) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %278) #9
  br label %2297

2297:                                             ; preds = %2296, %2290
  %.pn1631.pn = phi { ptr, i32 } [ %.pn1631, %2296 ], [ %2291, %2290 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %278) #9
  br label %2330

2298:                                             ; preds = %2280
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %281) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %281)
          to label %2299 unwind label %2304

2299:                                             ; preds = %2298
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %282) #9
  %2300 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %277)
          to label %2301 unwind label %2306

2301:                                             ; preds = %2299
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %282, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 109, ptr noundef %2300)
          to label %2302 unwind label %2306

2302:                                             ; preds = %2301
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %282, ptr noundef nonnull align 8 dereferenceable(8) %281)
          to label %2303 unwind label %2308

2303:                                             ; preds = %2302
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %282) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %282) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %281) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %281) #9
  br label %2312

2304:                                             ; preds = %2298
  %2305 = landingpad { ptr, i32 }
          cleanup
  br label %2311

2306:                                             ; preds = %2301, %2299
  %2307 = landingpad { ptr, i32 }
          cleanup
  br label %2310

2308:                                             ; preds = %2302
  %2309 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %282) #9
  br label %2310

2310:                                             ; preds = %2308, %2306
  %.pn1634 = phi { ptr, i32 } [ %2309, %2308 ], [ %2307, %2306 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %282) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %281) #9
  br label %2311

2311:                                             ; preds = %2310, %2304
  %.pn1634.pn = phi { ptr, i32 } [ %.pn1634, %2310 ], [ %2305, %2304 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %281) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %277) #9
  br label %2330

2312:                                             ; preds = %2280, %2303
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %277) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %277) #9
  call void @_ZdaPv(ptr noundef nonnull %2271) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %275) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %275) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %283) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %283)
  %2313 = getelementptr inbounds i8, ptr %283, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2313, ptr noundef nonnull @.str.25, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2314 unwind label %2332

2314:                                             ; preds = %2312
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %284) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %284, ptr noundef nonnull align 8 dereferenceable(128) %283)
          to label %2315 unwind label %2334

2315:                                             ; preds = %2314
  %2316 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %284) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %284) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %284) #9
  %2317 = shl i64 %2316, 32
  %sext1642 = add i64 %2317, 12884901888
  %2318 = ashr exact i64 %sext1642, 32
  %2319 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2318) #10
          to label %2320 unwind label %2336

2320:                                             ; preds = %2315
  %sext1641 = add i64 %2317, 8589934592
  %2321 = ashr exact i64 %sext1641, 32
  %2322 = getelementptr inbounds i8, ptr %2319, i64 %2321
  store i8 0, ptr %2322, align 1, !tbaa !9
  %sext1643 = add i64 %2317, 4294967296
  %2323 = ashr exact i64 %sext1643, 32
  %2324 = load double, ptr %2, align 8, !tbaa !5
  %2325 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2319, i64 noundef %2323, ptr noundef nonnull @.str.25, double noundef %2324) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %285) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %286) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %286, ptr noundef nonnull align 8 dereferenceable(128) %283)
          to label %2326 unwind label %2338

2326:                                             ; preds = %2320
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %287) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %288) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %288) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %287, ptr noundef nonnull %2319, ptr noundef nonnull align 1 dereferenceable(1) %288)
          to label %2327 unwind label %2340

2327:                                             ; preds = %2326
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %285, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %286, ptr noundef nonnull align 8 dereferenceable(32) %287)
          to label %2328 unwind label %2342

2328:                                             ; preds = %2327
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %287) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %288) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %288) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %287) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %286) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %286) #9
  %2329 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %285)
  br i1 %2329, label %2360, label %2346

2330:                                             ; preds = %2311, %2297
  %.pn1634.pn.pn = phi { ptr, i32 } [ %.pn1634.pn, %2311 ], [ %.pn1631.pn, %2297 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %277) #9
  br label %2331

2331:                                             ; preds = %2286, %2330, %2288, %2284
  %.pn1634.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2285, %2284 ], [ %2287, %2286 ], [ %.pn1634.pn.pn, %2330 ], [ %2289, %2288 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %275) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %275) #9
  br label %4427

2332:                                             ; preds = %2312
  %2333 = landingpad { ptr, i32 }
          cleanup
  br label %2379

2334:                                             ; preds = %2314
  %2335 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %284) #9
  br label %2379

2336:                                             ; preds = %2315
  %2337 = landingpad { ptr, i32 }
          cleanup
  br label %2379

2338:                                             ; preds = %2320
  %2339 = landingpad { ptr, i32 }
          cleanup
  br label %2345

2340:                                             ; preds = %2326
  %2341 = landingpad { ptr, i32 }
          cleanup
  br label %2344

2342:                                             ; preds = %2327
  %2343 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %287) #9
  br label %2344

2344:                                             ; preds = %2342, %2340
  %.pn1644 = phi { ptr, i32 } [ %2343, %2342 ], [ %2341, %2340 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %288) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %288) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %287) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %286) #9
  br label %2345

2345:                                             ; preds = %2344, %2338
  %.pn1644.pn = phi { ptr, i32 } [ %.pn1644, %2344 ], [ %2339, %2338 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %286) #9
  br label %2378

2346:                                             ; preds = %2328
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %289) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %289)
          to label %2347 unwind label %2352

2347:                                             ; preds = %2346
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %290) #9
  %2348 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %285)
          to label %2349 unwind label %2354

2349:                                             ; preds = %2347
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %290, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 110, ptr noundef %2348)
          to label %2350 unwind label %2354

2350:                                             ; preds = %2349
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %290, ptr noundef nonnull align 8 dereferenceable(8) %289)
          to label %2351 unwind label %2356

2351:                                             ; preds = %2350
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %290) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %290) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %289) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %289) #9
  br label %2360

2352:                                             ; preds = %2346
  %2353 = landingpad { ptr, i32 }
          cleanup
  br label %2359

2354:                                             ; preds = %2349, %2347
  %2355 = landingpad { ptr, i32 }
          cleanup
  br label %2358

2356:                                             ; preds = %2350
  %2357 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %290) #9
  br label %2358

2358:                                             ; preds = %2356, %2354
  %.pn1647 = phi { ptr, i32 } [ %2357, %2356 ], [ %2355, %2354 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %290) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %289) #9
  br label %2359

2359:                                             ; preds = %2358, %2352
  %.pn1647.pn = phi { ptr, i32 } [ %.pn1647, %2358 ], [ %2353, %2352 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %289) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %285) #9
  br label %2378

2360:                                             ; preds = %2328, %2351
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %285) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %285) #9
  call void @_ZdaPv(ptr noundef nonnull %2319) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %283) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %283) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %291) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %291)
  %2361 = getelementptr inbounds i8, ptr %291, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2361, ptr noundef nonnull @.str.26, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2362 unwind label %2380

2362:                                             ; preds = %2360
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %292) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %292, ptr noundef nonnull align 8 dereferenceable(128) %291)
          to label %2363 unwind label %2382

2363:                                             ; preds = %2362
  %2364 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %292) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %292) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %292) #9
  %2365 = shl i64 %2364, 32
  %sext1655 = add i64 %2365, 12884901888
  %2366 = ashr exact i64 %sext1655, 32
  %2367 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2366) #10
          to label %2368 unwind label %2384

2368:                                             ; preds = %2363
  %sext1654 = add i64 %2365, 8589934592
  %2369 = ashr exact i64 %sext1654, 32
  %2370 = getelementptr inbounds i8, ptr %2367, i64 %2369
  store i8 0, ptr %2370, align 1, !tbaa !9
  %sext1656 = add i64 %2365, 4294967296
  %2371 = ashr exact i64 %sext1656, 32
  %2372 = load double, ptr %2, align 8, !tbaa !5
  %2373 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2367, i64 noundef %2371, ptr noundef nonnull @.str.26, double noundef %2372) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %293) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %294) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %294, ptr noundef nonnull align 8 dereferenceable(128) %291)
          to label %2374 unwind label %2386

2374:                                             ; preds = %2368
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %295) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %296) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %296) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %295, ptr noundef nonnull %2367, ptr noundef nonnull align 1 dereferenceable(1) %296)
          to label %2375 unwind label %2388

2375:                                             ; preds = %2374
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %293, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %294, ptr noundef nonnull align 8 dereferenceable(32) %295)
          to label %2376 unwind label %2390

2376:                                             ; preds = %2375
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %295) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %296) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %296) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %295) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %294) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %294) #9
  %2377 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %293)
  br i1 %2377, label %2408, label %2394

2378:                                             ; preds = %2359, %2345
  %.pn1647.pn.pn = phi { ptr, i32 } [ %.pn1647.pn, %2359 ], [ %.pn1644.pn, %2345 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %285) #9
  br label %2379

2379:                                             ; preds = %2334, %2378, %2336, %2332
  %.pn1647.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2333, %2332 ], [ %2335, %2334 ], [ %.pn1647.pn.pn, %2378 ], [ %2337, %2336 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %283) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %283) #9
  br label %4427

2380:                                             ; preds = %2360
  %2381 = landingpad { ptr, i32 }
          cleanup
  br label %2427

2382:                                             ; preds = %2362
  %2383 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %292) #9
  br label %2427

2384:                                             ; preds = %2363
  %2385 = landingpad { ptr, i32 }
          cleanup
  br label %2427

2386:                                             ; preds = %2368
  %2387 = landingpad { ptr, i32 }
          cleanup
  br label %2393

2388:                                             ; preds = %2374
  %2389 = landingpad { ptr, i32 }
          cleanup
  br label %2392

2390:                                             ; preds = %2375
  %2391 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %295) #9
  br label %2392

2392:                                             ; preds = %2390, %2388
  %.pn1657 = phi { ptr, i32 } [ %2391, %2390 ], [ %2389, %2388 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %296) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %296) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %295) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %294) #9
  br label %2393

2393:                                             ; preds = %2392, %2386
  %.pn1657.pn = phi { ptr, i32 } [ %.pn1657, %2392 ], [ %2387, %2386 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %294) #9
  br label %2426

2394:                                             ; preds = %2376
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %297) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %297)
          to label %2395 unwind label %2400

2395:                                             ; preds = %2394
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %298) #9
  %2396 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %293)
          to label %2397 unwind label %2402

2397:                                             ; preds = %2395
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %298, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 111, ptr noundef %2396)
          to label %2398 unwind label %2402

2398:                                             ; preds = %2397
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %298, ptr noundef nonnull align 8 dereferenceable(8) %297)
          to label %2399 unwind label %2404

2399:                                             ; preds = %2398
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %298) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %298) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %297) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %297) #9
  br label %2408

2400:                                             ; preds = %2394
  %2401 = landingpad { ptr, i32 }
          cleanup
  br label %2407

2402:                                             ; preds = %2397, %2395
  %2403 = landingpad { ptr, i32 }
          cleanup
  br label %2406

2404:                                             ; preds = %2398
  %2405 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %298) #9
  br label %2406

2406:                                             ; preds = %2404, %2402
  %.pn1660 = phi { ptr, i32 } [ %2405, %2404 ], [ %2403, %2402 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %298) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %297) #9
  br label %2407

2407:                                             ; preds = %2406, %2400
  %.pn1660.pn = phi { ptr, i32 } [ %.pn1660, %2406 ], [ %2401, %2400 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %297) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %293) #9
  br label %2426

2408:                                             ; preds = %2376, %2399
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %293) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %293) #9
  call void @_ZdaPv(ptr noundef nonnull %2367) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %291) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %291) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %299) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %299)
  %2409 = getelementptr inbounds i8, ptr %299, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2409, ptr noundef nonnull @.str.27, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2410 unwind label %2428

2410:                                             ; preds = %2408
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %300) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %300, ptr noundef nonnull align 8 dereferenceable(128) %299)
          to label %2411 unwind label %2430

2411:                                             ; preds = %2410
  %2412 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %300) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %300) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %300) #9
  %2413 = shl i64 %2412, 32
  %sext1668 = add i64 %2413, 12884901888
  %2414 = ashr exact i64 %sext1668, 32
  %2415 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2414) #10
          to label %2416 unwind label %2432

2416:                                             ; preds = %2411
  %sext1667 = add i64 %2413, 8589934592
  %2417 = ashr exact i64 %sext1667, 32
  %2418 = getelementptr inbounds i8, ptr %2415, i64 %2417
  store i8 0, ptr %2418, align 1, !tbaa !9
  %sext1669 = add i64 %2413, 4294967296
  %2419 = ashr exact i64 %sext1669, 32
  %2420 = load double, ptr %2, align 8, !tbaa !5
  %2421 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2415, i64 noundef %2419, ptr noundef nonnull @.str.27, double noundef %2420) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %301) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %302) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %302, ptr noundef nonnull align 8 dereferenceable(128) %299)
          to label %2422 unwind label %2434

2422:                                             ; preds = %2416
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %303) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %304) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %304) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %303, ptr noundef nonnull %2415, ptr noundef nonnull align 1 dereferenceable(1) %304)
          to label %2423 unwind label %2436

2423:                                             ; preds = %2422
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %301, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %302, ptr noundef nonnull align 8 dereferenceable(32) %303)
          to label %2424 unwind label %2438

2424:                                             ; preds = %2423
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %303) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %304) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %304) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %303) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %302) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %302) #9
  %2425 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %301)
  br i1 %2425, label %2456, label %2442

2426:                                             ; preds = %2407, %2393
  %.pn1660.pn.pn = phi { ptr, i32 } [ %.pn1660.pn, %2407 ], [ %.pn1657.pn, %2393 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %293) #9
  br label %2427

2427:                                             ; preds = %2382, %2426, %2384, %2380
  %.pn1660.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2381, %2380 ], [ %2383, %2382 ], [ %.pn1660.pn.pn, %2426 ], [ %2385, %2384 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %291) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %291) #9
  br label %4427

2428:                                             ; preds = %2408
  %2429 = landingpad { ptr, i32 }
          cleanup
  br label %2475

2430:                                             ; preds = %2410
  %2431 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %300) #9
  br label %2475

2432:                                             ; preds = %2411
  %2433 = landingpad { ptr, i32 }
          cleanup
  br label %2475

2434:                                             ; preds = %2416
  %2435 = landingpad { ptr, i32 }
          cleanup
  br label %2441

2436:                                             ; preds = %2422
  %2437 = landingpad { ptr, i32 }
          cleanup
  br label %2440

2438:                                             ; preds = %2423
  %2439 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %303) #9
  br label %2440

2440:                                             ; preds = %2438, %2436
  %.pn1670 = phi { ptr, i32 } [ %2439, %2438 ], [ %2437, %2436 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %304) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %304) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %303) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %302) #9
  br label %2441

2441:                                             ; preds = %2440, %2434
  %.pn1670.pn = phi { ptr, i32 } [ %.pn1670, %2440 ], [ %2435, %2434 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %302) #9
  br label %2474

2442:                                             ; preds = %2424
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %305) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %305)
          to label %2443 unwind label %2448

2443:                                             ; preds = %2442
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %306) #9
  %2444 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %301)
          to label %2445 unwind label %2450

2445:                                             ; preds = %2443
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %306, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 112, ptr noundef %2444)
          to label %2446 unwind label %2450

2446:                                             ; preds = %2445
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %306, ptr noundef nonnull align 8 dereferenceable(8) %305)
          to label %2447 unwind label %2452

2447:                                             ; preds = %2446
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %306) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %306) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %305) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %305) #9
  br label %2456

2448:                                             ; preds = %2442
  %2449 = landingpad { ptr, i32 }
          cleanup
  br label %2455

2450:                                             ; preds = %2445, %2443
  %2451 = landingpad { ptr, i32 }
          cleanup
  br label %2454

2452:                                             ; preds = %2446
  %2453 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %306) #9
  br label %2454

2454:                                             ; preds = %2452, %2450
  %.pn1673 = phi { ptr, i32 } [ %2453, %2452 ], [ %2451, %2450 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %306) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %305) #9
  br label %2455

2455:                                             ; preds = %2454, %2448
  %.pn1673.pn = phi { ptr, i32 } [ %.pn1673, %2454 ], [ %2449, %2448 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %305) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %301) #9
  br label %2474

2456:                                             ; preds = %2424, %2447
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %301) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %301) #9
  call void @_ZdaPv(ptr noundef nonnull %2415) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %299) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %299) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %307) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %307)
  %2457 = getelementptr inbounds i8, ptr %307, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2457, ptr noundef nonnull @.str.28, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2458 unwind label %2476

2458:                                             ; preds = %2456
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %308) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %308, ptr noundef nonnull align 8 dereferenceable(128) %307)
          to label %2459 unwind label %2478

2459:                                             ; preds = %2458
  %2460 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %308) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %308) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %308) #9
  %2461 = shl i64 %2460, 32
  %sext1681 = add i64 %2461, 12884901888
  %2462 = ashr exact i64 %sext1681, 32
  %2463 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2462) #10
          to label %2464 unwind label %2480

2464:                                             ; preds = %2459
  %sext1680 = add i64 %2461, 8589934592
  %2465 = ashr exact i64 %sext1680, 32
  %2466 = getelementptr inbounds i8, ptr %2463, i64 %2465
  store i8 0, ptr %2466, align 1, !tbaa !9
  %sext1682 = add i64 %2461, 4294967296
  %2467 = ashr exact i64 %sext1682, 32
  %2468 = load double, ptr %2, align 8, !tbaa !5
  %2469 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2463, i64 noundef %2467, ptr noundef nonnull @.str.28, double noundef %2468) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %309) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %310) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %310, ptr noundef nonnull align 8 dereferenceable(128) %307)
          to label %2470 unwind label %2482

2470:                                             ; preds = %2464
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %311) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %312) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %312) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %311, ptr noundef nonnull %2463, ptr noundef nonnull align 1 dereferenceable(1) %312)
          to label %2471 unwind label %2484

2471:                                             ; preds = %2470
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %309, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %310, ptr noundef nonnull align 8 dereferenceable(32) %311)
          to label %2472 unwind label %2486

2472:                                             ; preds = %2471
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %311) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %312) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %312) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %311) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %310) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %310) #9
  %2473 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %309)
  br i1 %2473, label %2504, label %2490

2474:                                             ; preds = %2455, %2441
  %.pn1673.pn.pn = phi { ptr, i32 } [ %.pn1673.pn, %2455 ], [ %.pn1670.pn, %2441 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %301) #9
  br label %2475

2475:                                             ; preds = %2430, %2474, %2432, %2428
  %.pn1673.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2429, %2428 ], [ %2431, %2430 ], [ %.pn1673.pn.pn, %2474 ], [ %2433, %2432 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %299) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %299) #9
  br label %4427

2476:                                             ; preds = %2456
  %2477 = landingpad { ptr, i32 }
          cleanup
  br label %2523

2478:                                             ; preds = %2458
  %2479 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %308) #9
  br label %2523

2480:                                             ; preds = %2459
  %2481 = landingpad { ptr, i32 }
          cleanup
  br label %2523

2482:                                             ; preds = %2464
  %2483 = landingpad { ptr, i32 }
          cleanup
  br label %2489

2484:                                             ; preds = %2470
  %2485 = landingpad { ptr, i32 }
          cleanup
  br label %2488

2486:                                             ; preds = %2471
  %2487 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %311) #9
  br label %2488

2488:                                             ; preds = %2486, %2484
  %.pn1683 = phi { ptr, i32 } [ %2487, %2486 ], [ %2485, %2484 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %312) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %312) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %311) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %310) #9
  br label %2489

2489:                                             ; preds = %2488, %2482
  %.pn1683.pn = phi { ptr, i32 } [ %.pn1683, %2488 ], [ %2483, %2482 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %310) #9
  br label %2522

2490:                                             ; preds = %2472
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %313) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %313)
          to label %2491 unwind label %2496

2491:                                             ; preds = %2490
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %314) #9
  %2492 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %309)
          to label %2493 unwind label %2498

2493:                                             ; preds = %2491
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %314, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 113, ptr noundef %2492)
          to label %2494 unwind label %2498

2494:                                             ; preds = %2493
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %314, ptr noundef nonnull align 8 dereferenceable(8) %313)
          to label %2495 unwind label %2500

2495:                                             ; preds = %2494
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %314) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %314) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %313) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %313) #9
  br label %2504

2496:                                             ; preds = %2490
  %2497 = landingpad { ptr, i32 }
          cleanup
  br label %2503

2498:                                             ; preds = %2493, %2491
  %2499 = landingpad { ptr, i32 }
          cleanup
  br label %2502

2500:                                             ; preds = %2494
  %2501 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %314) #9
  br label %2502

2502:                                             ; preds = %2500, %2498
  %.pn1686 = phi { ptr, i32 } [ %2501, %2500 ], [ %2499, %2498 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %314) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %313) #9
  br label %2503

2503:                                             ; preds = %2502, %2496
  %.pn1686.pn = phi { ptr, i32 } [ %.pn1686, %2502 ], [ %2497, %2496 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %313) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %309) #9
  br label %2522

2504:                                             ; preds = %2472, %2495
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %309) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %309) #9
  call void @_ZdaPv(ptr noundef nonnull %2463) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %307) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %307) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %315) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %315)
  %2505 = getelementptr inbounds i8, ptr %315, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2505, ptr noundef nonnull @.str.29, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2506 unwind label %2524

2506:                                             ; preds = %2504
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %316) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %316, ptr noundef nonnull align 8 dereferenceable(128) %315)
          to label %2507 unwind label %2526

2507:                                             ; preds = %2506
  %2508 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %316) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %316) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %316) #9
  %2509 = shl i64 %2508, 32
  %sext1694 = add i64 %2509, 12884901888
  %2510 = ashr exact i64 %sext1694, 32
  %2511 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2510) #10
          to label %2512 unwind label %2528

2512:                                             ; preds = %2507
  %sext1693 = add i64 %2509, 8589934592
  %2513 = ashr exact i64 %sext1693, 32
  %2514 = getelementptr inbounds i8, ptr %2511, i64 %2513
  store i8 0, ptr %2514, align 1, !tbaa !9
  %sext1695 = add i64 %2509, 4294967296
  %2515 = ashr exact i64 %sext1695, 32
  %2516 = load double, ptr %2, align 8, !tbaa !5
  %2517 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2511, i64 noundef %2515, ptr noundef nonnull @.str.29, double noundef %2516) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %317) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %318) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %318, ptr noundef nonnull align 8 dereferenceable(128) %315)
          to label %2518 unwind label %2530

2518:                                             ; preds = %2512
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %319) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %320) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %320) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %319, ptr noundef nonnull %2511, ptr noundef nonnull align 1 dereferenceable(1) %320)
          to label %2519 unwind label %2532

2519:                                             ; preds = %2518
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %317, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %318, ptr noundef nonnull align 8 dereferenceable(32) %319)
          to label %2520 unwind label %2534

2520:                                             ; preds = %2519
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %319) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %320) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %320) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %319) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %318) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %318) #9
  %2521 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %317)
  br i1 %2521, label %2552, label %2538

2522:                                             ; preds = %2503, %2489
  %.pn1686.pn.pn = phi { ptr, i32 } [ %.pn1686.pn, %2503 ], [ %.pn1683.pn, %2489 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %309) #9
  br label %2523

2523:                                             ; preds = %2478, %2522, %2480, %2476
  %.pn1686.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2477, %2476 ], [ %2479, %2478 ], [ %.pn1686.pn.pn, %2522 ], [ %2481, %2480 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %307) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %307) #9
  br label %4427

2524:                                             ; preds = %2504
  %2525 = landingpad { ptr, i32 }
          cleanup
  br label %2571

2526:                                             ; preds = %2506
  %2527 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %316) #9
  br label %2571

2528:                                             ; preds = %2507
  %2529 = landingpad { ptr, i32 }
          cleanup
  br label %2571

2530:                                             ; preds = %2512
  %2531 = landingpad { ptr, i32 }
          cleanup
  br label %2537

2532:                                             ; preds = %2518
  %2533 = landingpad { ptr, i32 }
          cleanup
  br label %2536

2534:                                             ; preds = %2519
  %2535 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %319) #9
  br label %2536

2536:                                             ; preds = %2534, %2532
  %.pn1696 = phi { ptr, i32 } [ %2535, %2534 ], [ %2533, %2532 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %320) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %320) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %319) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %318) #9
  br label %2537

2537:                                             ; preds = %2536, %2530
  %.pn1696.pn = phi { ptr, i32 } [ %.pn1696, %2536 ], [ %2531, %2530 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %318) #9
  br label %2570

2538:                                             ; preds = %2520
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %321) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %321)
          to label %2539 unwind label %2544

2539:                                             ; preds = %2538
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %322) #9
  %2540 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %317)
          to label %2541 unwind label %2546

2541:                                             ; preds = %2539
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %322, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 114, ptr noundef %2540)
          to label %2542 unwind label %2546

2542:                                             ; preds = %2541
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %322, ptr noundef nonnull align 8 dereferenceable(8) %321)
          to label %2543 unwind label %2548

2543:                                             ; preds = %2542
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %322) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %322) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %321) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %321) #9
  br label %2552

2544:                                             ; preds = %2538
  %2545 = landingpad { ptr, i32 }
          cleanup
  br label %2551

2546:                                             ; preds = %2541, %2539
  %2547 = landingpad { ptr, i32 }
          cleanup
  br label %2550

2548:                                             ; preds = %2542
  %2549 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %322) #9
  br label %2550

2550:                                             ; preds = %2548, %2546
  %.pn1699 = phi { ptr, i32 } [ %2549, %2548 ], [ %2547, %2546 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %322) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %321) #9
  br label %2551

2551:                                             ; preds = %2550, %2544
  %.pn1699.pn = phi { ptr, i32 } [ %.pn1699, %2550 ], [ %2545, %2544 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %321) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %317) #9
  br label %2570

2552:                                             ; preds = %2520, %2543
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %317) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %317) #9
  call void @_ZdaPv(ptr noundef nonnull %2511) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %315) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %315) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %323) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %323)
  %2553 = getelementptr inbounds i8, ptr %323, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2553, ptr noundef nonnull @.str.30, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2554 unwind label %2572

2554:                                             ; preds = %2552
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %324) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %324, ptr noundef nonnull align 8 dereferenceable(128) %323)
          to label %2555 unwind label %2574

2555:                                             ; preds = %2554
  %2556 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %324) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %324) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %324) #9
  %2557 = shl i64 %2556, 32
  %sext1707 = add i64 %2557, 12884901888
  %2558 = ashr exact i64 %sext1707, 32
  %2559 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2558) #10
          to label %2560 unwind label %2576

2560:                                             ; preds = %2555
  %sext1706 = add i64 %2557, 8589934592
  %2561 = ashr exact i64 %sext1706, 32
  %2562 = getelementptr inbounds i8, ptr %2559, i64 %2561
  store i8 0, ptr %2562, align 1, !tbaa !9
  %sext1708 = add i64 %2557, 4294967296
  %2563 = ashr exact i64 %sext1708, 32
  %2564 = load double, ptr %2, align 8, !tbaa !5
  %2565 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2559, i64 noundef %2563, ptr noundef nonnull @.str.30, double noundef %2564) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %325) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %326) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %326, ptr noundef nonnull align 8 dereferenceable(128) %323)
          to label %2566 unwind label %2578

2566:                                             ; preds = %2560
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %327) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %328) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %328) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %327, ptr noundef nonnull %2559, ptr noundef nonnull align 1 dereferenceable(1) %328)
          to label %2567 unwind label %2580

2567:                                             ; preds = %2566
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %325, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %326, ptr noundef nonnull align 8 dereferenceable(32) %327)
          to label %2568 unwind label %2582

2568:                                             ; preds = %2567
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %327) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %328) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %328) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %327) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %326) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %326) #9
  %2569 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %325)
  br i1 %2569, label %2600, label %2586

2570:                                             ; preds = %2551, %2537
  %.pn1699.pn.pn = phi { ptr, i32 } [ %.pn1699.pn, %2551 ], [ %.pn1696.pn, %2537 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %317) #9
  br label %2571

2571:                                             ; preds = %2526, %2570, %2528, %2524
  %.pn1699.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2525, %2524 ], [ %2527, %2526 ], [ %.pn1699.pn.pn, %2570 ], [ %2529, %2528 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %315) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %315) #9
  br label %4427

2572:                                             ; preds = %2552
  %2573 = landingpad { ptr, i32 }
          cleanup
  br label %2619

2574:                                             ; preds = %2554
  %2575 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %324) #9
  br label %2619

2576:                                             ; preds = %2555
  %2577 = landingpad { ptr, i32 }
          cleanup
  br label %2619

2578:                                             ; preds = %2560
  %2579 = landingpad { ptr, i32 }
          cleanup
  br label %2585

2580:                                             ; preds = %2566
  %2581 = landingpad { ptr, i32 }
          cleanup
  br label %2584

2582:                                             ; preds = %2567
  %2583 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %327) #9
  br label %2584

2584:                                             ; preds = %2582, %2580
  %.pn1709 = phi { ptr, i32 } [ %2583, %2582 ], [ %2581, %2580 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %328) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %328) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %327) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %326) #9
  br label %2585

2585:                                             ; preds = %2584, %2578
  %.pn1709.pn = phi { ptr, i32 } [ %.pn1709, %2584 ], [ %2579, %2578 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %326) #9
  br label %2618

2586:                                             ; preds = %2568
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %329) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %329)
          to label %2587 unwind label %2592

2587:                                             ; preds = %2586
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %330) #9
  %2588 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %325)
          to label %2589 unwind label %2594

2589:                                             ; preds = %2587
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %330, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 115, ptr noundef %2588)
          to label %2590 unwind label %2594

2590:                                             ; preds = %2589
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %330, ptr noundef nonnull align 8 dereferenceable(8) %329)
          to label %2591 unwind label %2596

2591:                                             ; preds = %2590
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %330) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %330) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %329) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %329) #9
  br label %2600

2592:                                             ; preds = %2586
  %2593 = landingpad { ptr, i32 }
          cleanup
  br label %2599

2594:                                             ; preds = %2589, %2587
  %2595 = landingpad { ptr, i32 }
          cleanup
  br label %2598

2596:                                             ; preds = %2590
  %2597 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %330) #9
  br label %2598

2598:                                             ; preds = %2596, %2594
  %.pn1712 = phi { ptr, i32 } [ %2597, %2596 ], [ %2595, %2594 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %330) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %329) #9
  br label %2599

2599:                                             ; preds = %2598, %2592
  %.pn1712.pn = phi { ptr, i32 } [ %.pn1712, %2598 ], [ %2593, %2592 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %329) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %325) #9
  br label %2618

2600:                                             ; preds = %2568, %2591
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %325) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %325) #9
  call void @_ZdaPv(ptr noundef nonnull %2559) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %323) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %323) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %331) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %331)
  %2601 = getelementptr inbounds i8, ptr %331, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2601, ptr noundef nonnull @.str.31, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2602 unwind label %2620

2602:                                             ; preds = %2600
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %332) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %332, ptr noundef nonnull align 8 dereferenceable(128) %331)
          to label %2603 unwind label %2622

2603:                                             ; preds = %2602
  %2604 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %332) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %332) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %332) #9
  %2605 = shl i64 %2604, 32
  %sext1720 = add i64 %2605, 12884901888
  %2606 = ashr exact i64 %sext1720, 32
  %2607 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2606) #10
          to label %2608 unwind label %2624

2608:                                             ; preds = %2603
  %sext1719 = add i64 %2605, 8589934592
  %2609 = ashr exact i64 %sext1719, 32
  %2610 = getelementptr inbounds i8, ptr %2607, i64 %2609
  store i8 0, ptr %2610, align 1, !tbaa !9
  %sext1721 = add i64 %2605, 4294967296
  %2611 = ashr exact i64 %sext1721, 32
  %2612 = load double, ptr %2, align 8, !tbaa !5
  %2613 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2607, i64 noundef %2611, ptr noundef nonnull @.str.31, double noundef %2612) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %333) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %334) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %334, ptr noundef nonnull align 8 dereferenceable(128) %331)
          to label %2614 unwind label %2626

2614:                                             ; preds = %2608
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %335) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %336) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %336) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %335, ptr noundef nonnull %2607, ptr noundef nonnull align 1 dereferenceable(1) %336)
          to label %2615 unwind label %2628

2615:                                             ; preds = %2614
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %333, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %334, ptr noundef nonnull align 8 dereferenceable(32) %335)
          to label %2616 unwind label %2630

2616:                                             ; preds = %2615
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %335) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %336) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %336) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %335) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %334) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %334) #9
  %2617 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %333)
  br i1 %2617, label %2648, label %2634

2618:                                             ; preds = %2599, %2585
  %.pn1712.pn.pn = phi { ptr, i32 } [ %.pn1712.pn, %2599 ], [ %.pn1709.pn, %2585 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %325) #9
  br label %2619

2619:                                             ; preds = %2574, %2618, %2576, %2572
  %.pn1712.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2573, %2572 ], [ %2575, %2574 ], [ %.pn1712.pn.pn, %2618 ], [ %2577, %2576 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %323) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %323) #9
  br label %4427

2620:                                             ; preds = %2600
  %2621 = landingpad { ptr, i32 }
          cleanup
  br label %2667

2622:                                             ; preds = %2602
  %2623 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %332) #9
  br label %2667

2624:                                             ; preds = %2603
  %2625 = landingpad { ptr, i32 }
          cleanup
  br label %2667

2626:                                             ; preds = %2608
  %2627 = landingpad { ptr, i32 }
          cleanup
  br label %2633

2628:                                             ; preds = %2614
  %2629 = landingpad { ptr, i32 }
          cleanup
  br label %2632

2630:                                             ; preds = %2615
  %2631 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %335) #9
  br label %2632

2632:                                             ; preds = %2630, %2628
  %.pn1722 = phi { ptr, i32 } [ %2631, %2630 ], [ %2629, %2628 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %336) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %336) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %335) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %334) #9
  br label %2633

2633:                                             ; preds = %2632, %2626
  %.pn1722.pn = phi { ptr, i32 } [ %.pn1722, %2632 ], [ %2627, %2626 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %334) #9
  br label %2666

2634:                                             ; preds = %2616
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %337) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %337)
          to label %2635 unwind label %2640

2635:                                             ; preds = %2634
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %338) #9
  %2636 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %333)
          to label %2637 unwind label %2642

2637:                                             ; preds = %2635
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %338, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 116, ptr noundef %2636)
          to label %2638 unwind label %2642

2638:                                             ; preds = %2637
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %338, ptr noundef nonnull align 8 dereferenceable(8) %337)
          to label %2639 unwind label %2644

2639:                                             ; preds = %2638
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %338) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %338) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %337) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %337) #9
  br label %2648

2640:                                             ; preds = %2634
  %2641 = landingpad { ptr, i32 }
          cleanup
  br label %2647

2642:                                             ; preds = %2637, %2635
  %2643 = landingpad { ptr, i32 }
          cleanup
  br label %2646

2644:                                             ; preds = %2638
  %2645 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %338) #9
  br label %2646

2646:                                             ; preds = %2644, %2642
  %.pn1725 = phi { ptr, i32 } [ %2645, %2644 ], [ %2643, %2642 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %338) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %337) #9
  br label %2647

2647:                                             ; preds = %2646, %2640
  %.pn1725.pn = phi { ptr, i32 } [ %.pn1725, %2646 ], [ %2641, %2640 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %337) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %333) #9
  br label %2666

2648:                                             ; preds = %2616, %2639
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %333) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %333) #9
  call void @_ZdaPv(ptr noundef nonnull %2607) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %331) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %331) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %339) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %339)
  %2649 = getelementptr inbounds i8, ptr %339, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2649, ptr noundef nonnull @.str.16, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2650 unwind label %2668

2650:                                             ; preds = %2648
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %340) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %340, ptr noundef nonnull align 8 dereferenceable(128) %339)
          to label %2651 unwind label %2670

2651:                                             ; preds = %2650
  %2652 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %340) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %340) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %340) #9
  %2653 = shl i64 %2652, 32
  %sext1733 = add i64 %2653, 12884901888
  %2654 = ashr exact i64 %sext1733, 32
  %2655 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2654) #10
          to label %2656 unwind label %2672

2656:                                             ; preds = %2651
  %sext1732 = add i64 %2653, 8589934592
  %2657 = ashr exact i64 %sext1732, 32
  %2658 = getelementptr inbounds i8, ptr %2655, i64 %2657
  store i8 0, ptr %2658, align 1, !tbaa !9
  %sext1734 = add i64 %2653, 4294967296
  %2659 = ashr exact i64 %sext1734, 32
  %2660 = load double, ptr %2, align 8, !tbaa !5
  %2661 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2655, i64 noundef %2659, ptr noundef nonnull @.str.16, double noundef %2660) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %341) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %342) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %342, ptr noundef nonnull align 8 dereferenceable(128) %339)
          to label %2662 unwind label %2674

2662:                                             ; preds = %2656
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %343) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %344) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %344) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %343, ptr noundef nonnull %2655, ptr noundef nonnull align 1 dereferenceable(1) %344)
          to label %2663 unwind label %2676

2663:                                             ; preds = %2662
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %341, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %342, ptr noundef nonnull align 8 dereferenceable(32) %343)
          to label %2664 unwind label %2678

2664:                                             ; preds = %2663
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %343) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %344) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %344) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %343) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %342) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %342) #9
  %2665 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %341)
  br i1 %2665, label %2696, label %2682

2666:                                             ; preds = %2647, %2633
  %.pn1725.pn.pn = phi { ptr, i32 } [ %.pn1725.pn, %2647 ], [ %.pn1722.pn, %2633 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %333) #9
  br label %2667

2667:                                             ; preds = %2622, %2666, %2624, %2620
  %.pn1725.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2621, %2620 ], [ %2623, %2622 ], [ %.pn1725.pn.pn, %2666 ], [ %2625, %2624 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %331) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %331) #9
  br label %4427

2668:                                             ; preds = %2648
  %2669 = landingpad { ptr, i32 }
          cleanup
  br label %2715

2670:                                             ; preds = %2650
  %2671 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %340) #9
  br label %2715

2672:                                             ; preds = %2651
  %2673 = landingpad { ptr, i32 }
          cleanup
  br label %2715

2674:                                             ; preds = %2656
  %2675 = landingpad { ptr, i32 }
          cleanup
  br label %2681

2676:                                             ; preds = %2662
  %2677 = landingpad { ptr, i32 }
          cleanup
  br label %2680

2678:                                             ; preds = %2663
  %2679 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %343) #9
  br label %2680

2680:                                             ; preds = %2678, %2676
  %.pn1735 = phi { ptr, i32 } [ %2679, %2678 ], [ %2677, %2676 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %344) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %344) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %343) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %342) #9
  br label %2681

2681:                                             ; preds = %2680, %2674
  %.pn1735.pn = phi { ptr, i32 } [ %.pn1735, %2680 ], [ %2675, %2674 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %342) #9
  br label %2714

2682:                                             ; preds = %2664
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %345) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %345)
          to label %2683 unwind label %2688

2683:                                             ; preds = %2682
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %346) #9
  %2684 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %341)
          to label %2685 unwind label %2690

2685:                                             ; preds = %2683
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %346, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 117, ptr noundef %2684)
          to label %2686 unwind label %2690

2686:                                             ; preds = %2685
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %346, ptr noundef nonnull align 8 dereferenceable(8) %345)
          to label %2687 unwind label %2692

2687:                                             ; preds = %2686
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %346) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %346) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %345) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %345) #9
  br label %2696

2688:                                             ; preds = %2682
  %2689 = landingpad { ptr, i32 }
          cleanup
  br label %2695

2690:                                             ; preds = %2685, %2683
  %2691 = landingpad { ptr, i32 }
          cleanup
  br label %2694

2692:                                             ; preds = %2686
  %2693 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %346) #9
  br label %2694

2694:                                             ; preds = %2692, %2690
  %.pn1738 = phi { ptr, i32 } [ %2693, %2692 ], [ %2691, %2690 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %346) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %345) #9
  br label %2695

2695:                                             ; preds = %2694, %2688
  %.pn1738.pn = phi { ptr, i32 } [ %.pn1738, %2694 ], [ %2689, %2688 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %345) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %341) #9
  br label %2714

2696:                                             ; preds = %2664, %2687
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %341) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %341) #9
  call void @_ZdaPv(ptr noundef nonnull %2655) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %339) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %339) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %347) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %347)
  %2697 = getelementptr inbounds i8, ptr %347, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2697, ptr noundef nonnull @.str.32, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2698 unwind label %2716

2698:                                             ; preds = %2696
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %348) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %348, ptr noundef nonnull align 8 dereferenceable(128) %347)
          to label %2699 unwind label %2718

2699:                                             ; preds = %2698
  %2700 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %348) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %348) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %348) #9
  %2701 = shl i64 %2700, 32
  %sext1746 = add i64 %2701, 12884901888
  %2702 = ashr exact i64 %sext1746, 32
  %2703 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2702) #10
          to label %2704 unwind label %2720

2704:                                             ; preds = %2699
  %sext1745 = add i64 %2701, 8589934592
  %2705 = ashr exact i64 %sext1745, 32
  %2706 = getelementptr inbounds i8, ptr %2703, i64 %2705
  store i8 0, ptr %2706, align 1, !tbaa !9
  %sext1747 = add i64 %2701, 4294967296
  %2707 = ashr exact i64 %sext1747, 32
  %2708 = load double, ptr %2, align 8, !tbaa !5
  %2709 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2703, i64 noundef %2707, ptr noundef nonnull @.str.32, double noundef %2708) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %349) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %350) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %350, ptr noundef nonnull align 8 dereferenceable(128) %347)
          to label %2710 unwind label %2722

2710:                                             ; preds = %2704
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %351) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %352) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %352) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %351, ptr noundef nonnull %2703, ptr noundef nonnull align 1 dereferenceable(1) %352)
          to label %2711 unwind label %2724

2711:                                             ; preds = %2710
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %349, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %350, ptr noundef nonnull align 8 dereferenceable(32) %351)
          to label %2712 unwind label %2726

2712:                                             ; preds = %2711
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %351) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %352) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %352) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %351) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %350) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %350) #9
  %2713 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %349)
  br i1 %2713, label %2744, label %2730

2714:                                             ; preds = %2695, %2681
  %.pn1738.pn.pn = phi { ptr, i32 } [ %.pn1738.pn, %2695 ], [ %.pn1735.pn, %2681 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %341) #9
  br label %2715

2715:                                             ; preds = %2670, %2714, %2672, %2668
  %.pn1738.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2669, %2668 ], [ %2671, %2670 ], [ %.pn1738.pn.pn, %2714 ], [ %2673, %2672 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %339) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %339) #9
  br label %4427

2716:                                             ; preds = %2696
  %2717 = landingpad { ptr, i32 }
          cleanup
  br label %2763

2718:                                             ; preds = %2698
  %2719 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %348) #9
  br label %2763

2720:                                             ; preds = %2699
  %2721 = landingpad { ptr, i32 }
          cleanup
  br label %2763

2722:                                             ; preds = %2704
  %2723 = landingpad { ptr, i32 }
          cleanup
  br label %2729

2724:                                             ; preds = %2710
  %2725 = landingpad { ptr, i32 }
          cleanup
  br label %2728

2726:                                             ; preds = %2711
  %2727 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %351) #9
  br label %2728

2728:                                             ; preds = %2726, %2724
  %.pn1748 = phi { ptr, i32 } [ %2727, %2726 ], [ %2725, %2724 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %352) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %352) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %351) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %350) #9
  br label %2729

2729:                                             ; preds = %2728, %2722
  %.pn1748.pn = phi { ptr, i32 } [ %.pn1748, %2728 ], [ %2723, %2722 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %350) #9
  br label %2762

2730:                                             ; preds = %2712
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %353) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %353)
          to label %2731 unwind label %2736

2731:                                             ; preds = %2730
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %354) #9
  %2732 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %349)
          to label %2733 unwind label %2738

2733:                                             ; preds = %2731
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %354, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 118, ptr noundef %2732)
          to label %2734 unwind label %2738

2734:                                             ; preds = %2733
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %354, ptr noundef nonnull align 8 dereferenceable(8) %353)
          to label %2735 unwind label %2740

2735:                                             ; preds = %2734
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %354) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %354) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %353) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %353) #9
  br label %2744

2736:                                             ; preds = %2730
  %2737 = landingpad { ptr, i32 }
          cleanup
  br label %2743

2738:                                             ; preds = %2733, %2731
  %2739 = landingpad { ptr, i32 }
          cleanup
  br label %2742

2740:                                             ; preds = %2734
  %2741 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %354) #9
  br label %2742

2742:                                             ; preds = %2740, %2738
  %.pn1751 = phi { ptr, i32 } [ %2741, %2740 ], [ %2739, %2738 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %354) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %353) #9
  br label %2743

2743:                                             ; preds = %2742, %2736
  %.pn1751.pn = phi { ptr, i32 } [ %.pn1751, %2742 ], [ %2737, %2736 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %353) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %349) #9
  br label %2762

2744:                                             ; preds = %2712, %2735
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %349) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %349) #9
  call void @_ZdaPv(ptr noundef nonnull %2703) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %347) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %347) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %355) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %355)
  %2745 = getelementptr inbounds i8, ptr %355, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2745, ptr noundef nonnull @.str.33, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2746 unwind label %2764

2746:                                             ; preds = %2744
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %356) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %356, ptr noundef nonnull align 8 dereferenceable(128) %355)
          to label %2747 unwind label %2766

2747:                                             ; preds = %2746
  %2748 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %356) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %356) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %356) #9
  %2749 = shl i64 %2748, 32
  %sext1759 = add i64 %2749, 12884901888
  %2750 = ashr exact i64 %sext1759, 32
  %2751 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2750) #10
          to label %2752 unwind label %2768

2752:                                             ; preds = %2747
  %sext1758 = add i64 %2749, 8589934592
  %2753 = ashr exact i64 %sext1758, 32
  %2754 = getelementptr inbounds i8, ptr %2751, i64 %2753
  store i8 0, ptr %2754, align 1, !tbaa !9
  %sext1760 = add i64 %2749, 4294967296
  %2755 = ashr exact i64 %sext1760, 32
  %2756 = load double, ptr %2, align 8, !tbaa !5
  %2757 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2751, i64 noundef %2755, ptr noundef nonnull @.str.33, double noundef %2756) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %357) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %358) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %358, ptr noundef nonnull align 8 dereferenceable(128) %355)
          to label %2758 unwind label %2770

2758:                                             ; preds = %2752
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %359) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %360) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %360) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %359, ptr noundef nonnull %2751, ptr noundef nonnull align 1 dereferenceable(1) %360)
          to label %2759 unwind label %2772

2759:                                             ; preds = %2758
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %357, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %358, ptr noundef nonnull align 8 dereferenceable(32) %359)
          to label %2760 unwind label %2774

2760:                                             ; preds = %2759
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %359) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %360) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %360) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %359) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %358) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %358) #9
  %2761 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %357)
  br i1 %2761, label %2792, label %2778

2762:                                             ; preds = %2743, %2729
  %.pn1751.pn.pn = phi { ptr, i32 } [ %.pn1751.pn, %2743 ], [ %.pn1748.pn, %2729 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %349) #9
  br label %2763

2763:                                             ; preds = %2718, %2762, %2720, %2716
  %.pn1751.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2717, %2716 ], [ %2719, %2718 ], [ %.pn1751.pn.pn, %2762 ], [ %2721, %2720 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %347) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %347) #9
  br label %4427

2764:                                             ; preds = %2744
  %2765 = landingpad { ptr, i32 }
          cleanup
  br label %2811

2766:                                             ; preds = %2746
  %2767 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %356) #9
  br label %2811

2768:                                             ; preds = %2747
  %2769 = landingpad { ptr, i32 }
          cleanup
  br label %2811

2770:                                             ; preds = %2752
  %2771 = landingpad { ptr, i32 }
          cleanup
  br label %2777

2772:                                             ; preds = %2758
  %2773 = landingpad { ptr, i32 }
          cleanup
  br label %2776

2774:                                             ; preds = %2759
  %2775 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %359) #9
  br label %2776

2776:                                             ; preds = %2774, %2772
  %.pn1761 = phi { ptr, i32 } [ %2775, %2774 ], [ %2773, %2772 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %360) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %360) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %359) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %358) #9
  br label %2777

2777:                                             ; preds = %2776, %2770
  %.pn1761.pn = phi { ptr, i32 } [ %.pn1761, %2776 ], [ %2771, %2770 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %358) #9
  br label %2810

2778:                                             ; preds = %2760
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %361) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %361)
          to label %2779 unwind label %2784

2779:                                             ; preds = %2778
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %362) #9
  %2780 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %357)
          to label %2781 unwind label %2786

2781:                                             ; preds = %2779
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %362, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 119, ptr noundef %2780)
          to label %2782 unwind label %2786

2782:                                             ; preds = %2781
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %362, ptr noundef nonnull align 8 dereferenceable(8) %361)
          to label %2783 unwind label %2788

2783:                                             ; preds = %2782
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %362) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %362) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %361) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %361) #9
  br label %2792

2784:                                             ; preds = %2778
  %2785 = landingpad { ptr, i32 }
          cleanup
  br label %2791

2786:                                             ; preds = %2781, %2779
  %2787 = landingpad { ptr, i32 }
          cleanup
  br label %2790

2788:                                             ; preds = %2782
  %2789 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %362) #9
  br label %2790

2790:                                             ; preds = %2788, %2786
  %.pn1764 = phi { ptr, i32 } [ %2789, %2788 ], [ %2787, %2786 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %362) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %361) #9
  br label %2791

2791:                                             ; preds = %2790, %2784
  %.pn1764.pn = phi { ptr, i32 } [ %.pn1764, %2790 ], [ %2785, %2784 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %361) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %357) #9
  br label %2810

2792:                                             ; preds = %2760, %2783
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %357) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %357) #9
  call void @_ZdaPv(ptr noundef nonnull %2751) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %355) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %355) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %363) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %363)
  %2793 = getelementptr inbounds i8, ptr %363, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2793, ptr noundef nonnull @.str.34, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2794 unwind label %2812

2794:                                             ; preds = %2792
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %364) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %364, ptr noundef nonnull align 8 dereferenceable(128) %363)
          to label %2795 unwind label %2814

2795:                                             ; preds = %2794
  %2796 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %364) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %364) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %364) #9
  %2797 = shl i64 %2796, 32
  %sext1772 = add i64 %2797, 12884901888
  %2798 = ashr exact i64 %sext1772, 32
  %2799 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2798) #10
          to label %2800 unwind label %2816

2800:                                             ; preds = %2795
  %sext1771 = add i64 %2797, 8589934592
  %2801 = ashr exact i64 %sext1771, 32
  %2802 = getelementptr inbounds i8, ptr %2799, i64 %2801
  store i8 0, ptr %2802, align 1, !tbaa !9
  %sext1773 = add i64 %2797, 4294967296
  %2803 = ashr exact i64 %sext1773, 32
  %2804 = load double, ptr %2, align 8, !tbaa !5
  %2805 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2799, i64 noundef %2803, ptr noundef nonnull @.str.34, double noundef %2804) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %365) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %366) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %366, ptr noundef nonnull align 8 dereferenceable(128) %363)
          to label %2806 unwind label %2818

2806:                                             ; preds = %2800
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %367) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %368) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %368) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %367, ptr noundef nonnull %2799, ptr noundef nonnull align 1 dereferenceable(1) %368)
          to label %2807 unwind label %2820

2807:                                             ; preds = %2806
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %365, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %366, ptr noundef nonnull align 8 dereferenceable(32) %367)
          to label %2808 unwind label %2822

2808:                                             ; preds = %2807
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %367) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %368) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %368) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %367) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %366) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %366) #9
  %2809 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %365)
  br i1 %2809, label %2840, label %2826

2810:                                             ; preds = %2791, %2777
  %.pn1764.pn.pn = phi { ptr, i32 } [ %.pn1764.pn, %2791 ], [ %.pn1761.pn, %2777 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %357) #9
  br label %2811

2811:                                             ; preds = %2766, %2810, %2768, %2764
  %.pn1764.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2765, %2764 ], [ %2767, %2766 ], [ %.pn1764.pn.pn, %2810 ], [ %2769, %2768 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %355) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %355) #9
  br label %4427

2812:                                             ; preds = %2792
  %2813 = landingpad { ptr, i32 }
          cleanup
  br label %2859

2814:                                             ; preds = %2794
  %2815 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %364) #9
  br label %2859

2816:                                             ; preds = %2795
  %2817 = landingpad { ptr, i32 }
          cleanup
  br label %2859

2818:                                             ; preds = %2800
  %2819 = landingpad { ptr, i32 }
          cleanup
  br label %2825

2820:                                             ; preds = %2806
  %2821 = landingpad { ptr, i32 }
          cleanup
  br label %2824

2822:                                             ; preds = %2807
  %2823 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %367) #9
  br label %2824

2824:                                             ; preds = %2822, %2820
  %.pn1774 = phi { ptr, i32 } [ %2823, %2822 ], [ %2821, %2820 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %368) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %368) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %367) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %366) #9
  br label %2825

2825:                                             ; preds = %2824, %2818
  %.pn1774.pn = phi { ptr, i32 } [ %.pn1774, %2824 ], [ %2819, %2818 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %366) #9
  br label %2858

2826:                                             ; preds = %2808
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %369) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %369)
          to label %2827 unwind label %2832

2827:                                             ; preds = %2826
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %370) #9
  %2828 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %365)
          to label %2829 unwind label %2834

2829:                                             ; preds = %2827
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %370, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 120, ptr noundef %2828)
          to label %2830 unwind label %2834

2830:                                             ; preds = %2829
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %370, ptr noundef nonnull align 8 dereferenceable(8) %369)
          to label %2831 unwind label %2836

2831:                                             ; preds = %2830
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %370) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %370) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %369) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %369) #9
  br label %2840

2832:                                             ; preds = %2826
  %2833 = landingpad { ptr, i32 }
          cleanup
  br label %2839

2834:                                             ; preds = %2829, %2827
  %2835 = landingpad { ptr, i32 }
          cleanup
  br label %2838

2836:                                             ; preds = %2830
  %2837 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %370) #9
  br label %2838

2838:                                             ; preds = %2836, %2834
  %.pn1777 = phi { ptr, i32 } [ %2837, %2836 ], [ %2835, %2834 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %370) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %369) #9
  br label %2839

2839:                                             ; preds = %2838, %2832
  %.pn1777.pn = phi { ptr, i32 } [ %.pn1777, %2838 ], [ %2833, %2832 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %369) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %365) #9
  br label %2858

2840:                                             ; preds = %2808, %2831
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %365) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %365) #9
  call void @_ZdaPv(ptr noundef nonnull %2799) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %363) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %363) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %371) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %371)
  %2841 = getelementptr inbounds i8, ptr %371, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2841, ptr noundef nonnull @.str.35, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2842 unwind label %2860

2842:                                             ; preds = %2840
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %372) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %372, ptr noundef nonnull align 8 dereferenceable(128) %371)
          to label %2843 unwind label %2862

2843:                                             ; preds = %2842
  %2844 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %372) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %372) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %372) #9
  %2845 = shl i64 %2844, 32
  %sext1785 = add i64 %2845, 12884901888
  %2846 = ashr exact i64 %sext1785, 32
  %2847 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2846) #10
          to label %2848 unwind label %2864

2848:                                             ; preds = %2843
  %sext1784 = add i64 %2845, 8589934592
  %2849 = ashr exact i64 %sext1784, 32
  %2850 = getelementptr inbounds i8, ptr %2847, i64 %2849
  store i8 0, ptr %2850, align 1, !tbaa !9
  %sext1786 = add i64 %2845, 4294967296
  %2851 = ashr exact i64 %sext1786, 32
  %2852 = load double, ptr %2, align 8, !tbaa !5
  %2853 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2847, i64 noundef %2851, ptr noundef nonnull @.str.35, double noundef %2852) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %373) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %374) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %374, ptr noundef nonnull align 8 dereferenceable(128) %371)
          to label %2854 unwind label %2866

2854:                                             ; preds = %2848
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %375) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %376) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %376) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %375, ptr noundef nonnull %2847, ptr noundef nonnull align 1 dereferenceable(1) %376)
          to label %2855 unwind label %2868

2855:                                             ; preds = %2854
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %373, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %374, ptr noundef nonnull align 8 dereferenceable(32) %375)
          to label %2856 unwind label %2870

2856:                                             ; preds = %2855
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %375) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %376) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %376) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %375) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %374) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %374) #9
  %2857 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %373)
  br i1 %2857, label %2888, label %2874

2858:                                             ; preds = %2839, %2825
  %.pn1777.pn.pn = phi { ptr, i32 } [ %.pn1777.pn, %2839 ], [ %.pn1774.pn, %2825 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %365) #9
  br label %2859

2859:                                             ; preds = %2814, %2858, %2816, %2812
  %.pn1777.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2813, %2812 ], [ %2815, %2814 ], [ %.pn1777.pn.pn, %2858 ], [ %2817, %2816 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %363) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %363) #9
  br label %4427

2860:                                             ; preds = %2840
  %2861 = landingpad { ptr, i32 }
          cleanup
  br label %2907

2862:                                             ; preds = %2842
  %2863 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %372) #9
  br label %2907

2864:                                             ; preds = %2843
  %2865 = landingpad { ptr, i32 }
          cleanup
  br label %2907

2866:                                             ; preds = %2848
  %2867 = landingpad { ptr, i32 }
          cleanup
  br label %2873

2868:                                             ; preds = %2854
  %2869 = landingpad { ptr, i32 }
          cleanup
  br label %2872

2870:                                             ; preds = %2855
  %2871 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %375) #9
  br label %2872

2872:                                             ; preds = %2870, %2868
  %.pn1787 = phi { ptr, i32 } [ %2871, %2870 ], [ %2869, %2868 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %376) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %376) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %375) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %374) #9
  br label %2873

2873:                                             ; preds = %2872, %2866
  %.pn1787.pn = phi { ptr, i32 } [ %.pn1787, %2872 ], [ %2867, %2866 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %374) #9
  br label %2906

2874:                                             ; preds = %2856
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %377) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %377)
          to label %2875 unwind label %2880

2875:                                             ; preds = %2874
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %378) #9
  %2876 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %373)
          to label %2877 unwind label %2882

2877:                                             ; preds = %2875
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %378, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 121, ptr noundef %2876)
          to label %2878 unwind label %2882

2878:                                             ; preds = %2877
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %378, ptr noundef nonnull align 8 dereferenceable(8) %377)
          to label %2879 unwind label %2884

2879:                                             ; preds = %2878
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %378) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %378) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %377) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %377) #9
  br label %2888

2880:                                             ; preds = %2874
  %2881 = landingpad { ptr, i32 }
          cleanup
  br label %2887

2882:                                             ; preds = %2877, %2875
  %2883 = landingpad { ptr, i32 }
          cleanup
  br label %2886

2884:                                             ; preds = %2878
  %2885 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %378) #9
  br label %2886

2886:                                             ; preds = %2884, %2882
  %.pn1790 = phi { ptr, i32 } [ %2885, %2884 ], [ %2883, %2882 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %378) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %377) #9
  br label %2887

2887:                                             ; preds = %2886, %2880
  %.pn1790.pn = phi { ptr, i32 } [ %.pn1790, %2886 ], [ %2881, %2880 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %377) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %373) #9
  br label %2906

2888:                                             ; preds = %2856, %2879
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %373) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %373) #9
  call void @_ZdaPv(ptr noundef nonnull %2847) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %371) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %371) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %379) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %379)
  %2889 = getelementptr inbounds i8, ptr %379, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2889, ptr noundef nonnull @.str.36, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2890 unwind label %2908

2890:                                             ; preds = %2888
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %380) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %380, ptr noundef nonnull align 8 dereferenceable(128) %379)
          to label %2891 unwind label %2910

2891:                                             ; preds = %2890
  %2892 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %380) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %380) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %380) #9
  %2893 = shl i64 %2892, 32
  %sext1798 = add i64 %2893, 12884901888
  %2894 = ashr exact i64 %sext1798, 32
  %2895 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2894) #10
          to label %2896 unwind label %2912

2896:                                             ; preds = %2891
  %sext1797 = add i64 %2893, 8589934592
  %2897 = ashr exact i64 %sext1797, 32
  %2898 = getelementptr inbounds i8, ptr %2895, i64 %2897
  store i8 0, ptr %2898, align 1, !tbaa !9
  %sext1799 = add i64 %2893, 4294967296
  %2899 = ashr exact i64 %sext1799, 32
  %2900 = load double, ptr %2, align 8, !tbaa !5
  %2901 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2895, i64 noundef %2899, ptr noundef nonnull @.str.36, double noundef %2900) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %381) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %382) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %382, ptr noundef nonnull align 8 dereferenceable(128) %379)
          to label %2902 unwind label %2914

2902:                                             ; preds = %2896
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %383) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %384) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %384) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %383, ptr noundef nonnull %2895, ptr noundef nonnull align 1 dereferenceable(1) %384)
          to label %2903 unwind label %2916

2903:                                             ; preds = %2902
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %381, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %382, ptr noundef nonnull align 8 dereferenceable(32) %383)
          to label %2904 unwind label %2918

2904:                                             ; preds = %2903
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %383) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %384) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %384) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %383) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %382) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %382) #9
  %2905 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %381)
  br i1 %2905, label %2936, label %2922

2906:                                             ; preds = %2887, %2873
  %.pn1790.pn.pn = phi { ptr, i32 } [ %.pn1790.pn, %2887 ], [ %.pn1787.pn, %2873 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %373) #9
  br label %2907

2907:                                             ; preds = %2862, %2906, %2864, %2860
  %.pn1790.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2861, %2860 ], [ %2863, %2862 ], [ %.pn1790.pn.pn, %2906 ], [ %2865, %2864 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %371) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %371) #9
  br label %4427

2908:                                             ; preds = %2888
  %2909 = landingpad { ptr, i32 }
          cleanup
  br label %2955

2910:                                             ; preds = %2890
  %2911 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %380) #9
  br label %2955

2912:                                             ; preds = %2891
  %2913 = landingpad { ptr, i32 }
          cleanup
  br label %2955

2914:                                             ; preds = %2896
  %2915 = landingpad { ptr, i32 }
          cleanup
  br label %2921

2916:                                             ; preds = %2902
  %2917 = landingpad { ptr, i32 }
          cleanup
  br label %2920

2918:                                             ; preds = %2903
  %2919 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %383) #9
  br label %2920

2920:                                             ; preds = %2918, %2916
  %.pn1800 = phi { ptr, i32 } [ %2919, %2918 ], [ %2917, %2916 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %384) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %384) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %383) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %382) #9
  br label %2921

2921:                                             ; preds = %2920, %2914
  %.pn1800.pn = phi { ptr, i32 } [ %.pn1800, %2920 ], [ %2915, %2914 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %382) #9
  br label %2954

2922:                                             ; preds = %2904
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %385) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %385)
          to label %2923 unwind label %2928

2923:                                             ; preds = %2922
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %386) #9
  %2924 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %381)
          to label %2925 unwind label %2930

2925:                                             ; preds = %2923
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %386, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 122, ptr noundef %2924)
          to label %2926 unwind label %2930

2926:                                             ; preds = %2925
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %386, ptr noundef nonnull align 8 dereferenceable(8) %385)
          to label %2927 unwind label %2932

2927:                                             ; preds = %2926
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %386) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %386) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %385) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %385) #9
  br label %2936

2928:                                             ; preds = %2922
  %2929 = landingpad { ptr, i32 }
          cleanup
  br label %2935

2930:                                             ; preds = %2925, %2923
  %2931 = landingpad { ptr, i32 }
          cleanup
  br label %2934

2932:                                             ; preds = %2926
  %2933 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %386) #9
  br label %2934

2934:                                             ; preds = %2932, %2930
  %.pn1803 = phi { ptr, i32 } [ %2933, %2932 ], [ %2931, %2930 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %386) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %385) #9
  br label %2935

2935:                                             ; preds = %2934, %2928
  %.pn1803.pn = phi { ptr, i32 } [ %.pn1803, %2934 ], [ %2929, %2928 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %385) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %381) #9
  br label %2954

2936:                                             ; preds = %2904, %2927
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %381) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %381) #9
  call void @_ZdaPv(ptr noundef nonnull %2895) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %379) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %379) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %387) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %387)
  %2937 = getelementptr inbounds i8, ptr %387, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2937, ptr noundef nonnull @.str.37, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2938 unwind label %2956

2938:                                             ; preds = %2936
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %388) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %388, ptr noundef nonnull align 8 dereferenceable(128) %387)
          to label %2939 unwind label %2958

2939:                                             ; preds = %2938
  %2940 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %388) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %388) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %388) #9
  %2941 = shl i64 %2940, 32
  %sext1811 = add i64 %2941, 12884901888
  %2942 = ashr exact i64 %sext1811, 32
  %2943 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2942) #10
          to label %2944 unwind label %2960

2944:                                             ; preds = %2939
  %sext1810 = add i64 %2941, 8589934592
  %2945 = ashr exact i64 %sext1810, 32
  %2946 = getelementptr inbounds i8, ptr %2943, i64 %2945
  store i8 0, ptr %2946, align 1, !tbaa !9
  %sext1812 = add i64 %2941, 4294967296
  %2947 = ashr exact i64 %sext1812, 32
  %2948 = load double, ptr %2, align 8, !tbaa !5
  %2949 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2943, i64 noundef %2947, ptr noundef nonnull @.str.37, double noundef %2948) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %389) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %390) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %390, ptr noundef nonnull align 8 dereferenceable(128) %387)
          to label %2950 unwind label %2962

2950:                                             ; preds = %2944
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %391) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %392) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %392) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %391, ptr noundef nonnull %2943, ptr noundef nonnull align 1 dereferenceable(1) %392)
          to label %2951 unwind label %2964

2951:                                             ; preds = %2950
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %389, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %390, ptr noundef nonnull align 8 dereferenceable(32) %391)
          to label %2952 unwind label %2966

2952:                                             ; preds = %2951
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %391) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %392) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %392) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %391) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %390) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %390) #9
  %2953 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %389)
  br i1 %2953, label %2984, label %2970

2954:                                             ; preds = %2935, %2921
  %.pn1803.pn.pn = phi { ptr, i32 } [ %.pn1803.pn, %2935 ], [ %.pn1800.pn, %2921 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %381) #9
  br label %2955

2955:                                             ; preds = %2910, %2954, %2912, %2908
  %.pn1803.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2909, %2908 ], [ %2911, %2910 ], [ %.pn1803.pn.pn, %2954 ], [ %2913, %2912 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %379) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %379) #9
  br label %4427

2956:                                             ; preds = %2936
  %2957 = landingpad { ptr, i32 }
          cleanup
  br label %3003

2958:                                             ; preds = %2938
  %2959 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %388) #9
  br label %3003

2960:                                             ; preds = %2939
  %2961 = landingpad { ptr, i32 }
          cleanup
  br label %3003

2962:                                             ; preds = %2944
  %2963 = landingpad { ptr, i32 }
          cleanup
  br label %2969

2964:                                             ; preds = %2950
  %2965 = landingpad { ptr, i32 }
          cleanup
  br label %2968

2966:                                             ; preds = %2951
  %2967 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %391) #9
  br label %2968

2968:                                             ; preds = %2966, %2964
  %.pn1813 = phi { ptr, i32 } [ %2967, %2966 ], [ %2965, %2964 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %392) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %392) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %391) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %390) #9
  br label %2969

2969:                                             ; preds = %2968, %2962
  %.pn1813.pn = phi { ptr, i32 } [ %.pn1813, %2968 ], [ %2963, %2962 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %390) #9
  br label %3002

2970:                                             ; preds = %2952
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %393) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %393)
          to label %2971 unwind label %2976

2971:                                             ; preds = %2970
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %394) #9
  %2972 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %389)
          to label %2973 unwind label %2978

2973:                                             ; preds = %2971
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %394, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 123, ptr noundef %2972)
          to label %2974 unwind label %2978

2974:                                             ; preds = %2973
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %394, ptr noundef nonnull align 8 dereferenceable(8) %393)
          to label %2975 unwind label %2980

2975:                                             ; preds = %2974
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %394) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %394) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %393) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %393) #9
  br label %2984

2976:                                             ; preds = %2970
  %2977 = landingpad { ptr, i32 }
          cleanup
  br label %2983

2978:                                             ; preds = %2973, %2971
  %2979 = landingpad { ptr, i32 }
          cleanup
  br label %2982

2980:                                             ; preds = %2974
  %2981 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %394) #9
  br label %2982

2982:                                             ; preds = %2980, %2978
  %.pn1816 = phi { ptr, i32 } [ %2981, %2980 ], [ %2979, %2978 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %394) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %393) #9
  br label %2983

2983:                                             ; preds = %2982, %2976
  %.pn1816.pn = phi { ptr, i32 } [ %.pn1816, %2982 ], [ %2977, %2976 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %393) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %389) #9
  br label %3002

2984:                                             ; preds = %2952, %2975
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %389) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %389) #9
  call void @_ZdaPv(ptr noundef nonnull %2943) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %387) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %387) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %395) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %395)
  %2985 = getelementptr inbounds i8, ptr %395, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %2985, ptr noundef nonnull @.str.38, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %2986 unwind label %3004

2986:                                             ; preds = %2984
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %396) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %396, ptr noundef nonnull align 8 dereferenceable(128) %395)
          to label %2987 unwind label %3006

2987:                                             ; preds = %2986
  %2988 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %396) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %396) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %396) #9
  %2989 = shl i64 %2988, 32
  %sext1824 = add i64 %2989, 12884901888
  %2990 = ashr exact i64 %sext1824, 32
  %2991 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %2990) #10
          to label %2992 unwind label %3008

2992:                                             ; preds = %2987
  %sext1823 = add i64 %2989, 8589934592
  %2993 = ashr exact i64 %sext1823, 32
  %2994 = getelementptr inbounds i8, ptr %2991, i64 %2993
  store i8 0, ptr %2994, align 1, !tbaa !9
  %sext1825 = add i64 %2989, 4294967296
  %2995 = ashr exact i64 %sext1825, 32
  %2996 = load double, ptr %2, align 8, !tbaa !5
  %2997 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %2991, i64 noundef %2995, ptr noundef nonnull @.str.38, double noundef %2996) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %397) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %398) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %398, ptr noundef nonnull align 8 dereferenceable(128) %395)
          to label %2998 unwind label %3010

2998:                                             ; preds = %2992
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %399) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %400) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %400) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %399, ptr noundef nonnull %2991, ptr noundef nonnull align 1 dereferenceable(1) %400)
          to label %2999 unwind label %3012

2999:                                             ; preds = %2998
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %397, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %398, ptr noundef nonnull align 8 dereferenceable(32) %399)
          to label %3000 unwind label %3014

3000:                                             ; preds = %2999
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %399) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %400) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %400) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %399) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %398) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %398) #9
  %3001 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %397)
  br i1 %3001, label %3032, label %3018

3002:                                             ; preds = %2983, %2969
  %.pn1816.pn.pn = phi { ptr, i32 } [ %.pn1816.pn, %2983 ], [ %.pn1813.pn, %2969 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %389) #9
  br label %3003

3003:                                             ; preds = %2958, %3002, %2960, %2956
  %.pn1816.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2957, %2956 ], [ %2959, %2958 ], [ %.pn1816.pn.pn, %3002 ], [ %2961, %2960 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %387) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %387) #9
  br label %4427

3004:                                             ; preds = %2984
  %3005 = landingpad { ptr, i32 }
          cleanup
  br label %3051

3006:                                             ; preds = %2986
  %3007 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %396) #9
  br label %3051

3008:                                             ; preds = %2987
  %3009 = landingpad { ptr, i32 }
          cleanup
  br label %3051

3010:                                             ; preds = %2992
  %3011 = landingpad { ptr, i32 }
          cleanup
  br label %3017

3012:                                             ; preds = %2998
  %3013 = landingpad { ptr, i32 }
          cleanup
  br label %3016

3014:                                             ; preds = %2999
  %3015 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %399) #9
  br label %3016

3016:                                             ; preds = %3014, %3012
  %.pn1826 = phi { ptr, i32 } [ %3015, %3014 ], [ %3013, %3012 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %400) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %400) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %399) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %398) #9
  br label %3017

3017:                                             ; preds = %3016, %3010
  %.pn1826.pn = phi { ptr, i32 } [ %.pn1826, %3016 ], [ %3011, %3010 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %398) #9
  br label %3050

3018:                                             ; preds = %3000
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %401) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %401)
          to label %3019 unwind label %3024

3019:                                             ; preds = %3018
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %402) #9
  %3020 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %397)
          to label %3021 unwind label %3026

3021:                                             ; preds = %3019
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %402, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 124, ptr noundef %3020)
          to label %3022 unwind label %3026

3022:                                             ; preds = %3021
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %402, ptr noundef nonnull align 8 dereferenceable(8) %401)
          to label %3023 unwind label %3028

3023:                                             ; preds = %3022
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %402) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %402) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %401) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %401) #9
  br label %3032

3024:                                             ; preds = %3018
  %3025 = landingpad { ptr, i32 }
          cleanup
  br label %3031

3026:                                             ; preds = %3021, %3019
  %3027 = landingpad { ptr, i32 }
          cleanup
  br label %3030

3028:                                             ; preds = %3022
  %3029 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %402) #9
  br label %3030

3030:                                             ; preds = %3028, %3026
  %.pn1829 = phi { ptr, i32 } [ %3029, %3028 ], [ %3027, %3026 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %402) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %401) #9
  br label %3031

3031:                                             ; preds = %3030, %3024
  %.pn1829.pn = phi { ptr, i32 } [ %.pn1829, %3030 ], [ %3025, %3024 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %401) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %397) #9
  br label %3050

3032:                                             ; preds = %3000, %3023
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %397) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %397) #9
  call void @_ZdaPv(ptr noundef nonnull %2991) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %395) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %395) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %403) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %403)
  %3033 = getelementptr inbounds i8, ptr %403, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3033, ptr noundef nonnull @.str.39, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3034 unwind label %3052

3034:                                             ; preds = %3032
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %404) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %404, ptr noundef nonnull align 8 dereferenceable(128) %403)
          to label %3035 unwind label %3054

3035:                                             ; preds = %3034
  %3036 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %404) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %404) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %404) #9
  %3037 = shl i64 %3036, 32
  %sext1837 = add i64 %3037, 12884901888
  %3038 = ashr exact i64 %sext1837, 32
  %3039 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3038) #10
          to label %3040 unwind label %3056

3040:                                             ; preds = %3035
  %sext1836 = add i64 %3037, 8589934592
  %3041 = ashr exact i64 %sext1836, 32
  %3042 = getelementptr inbounds i8, ptr %3039, i64 %3041
  store i8 0, ptr %3042, align 1, !tbaa !9
  %sext1838 = add i64 %3037, 4294967296
  %3043 = ashr exact i64 %sext1838, 32
  %3044 = load double, ptr %2, align 8, !tbaa !5
  %3045 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3039, i64 noundef %3043, ptr noundef nonnull @.str.39, double noundef %3044) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %405) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %406) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %406, ptr noundef nonnull align 8 dereferenceable(128) %403)
          to label %3046 unwind label %3058

3046:                                             ; preds = %3040
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %407) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %408) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %408) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %407, ptr noundef nonnull %3039, ptr noundef nonnull align 1 dereferenceable(1) %408)
          to label %3047 unwind label %3060

3047:                                             ; preds = %3046
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %405, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %406, ptr noundef nonnull align 8 dereferenceable(32) %407)
          to label %3048 unwind label %3062

3048:                                             ; preds = %3047
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %407) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %408) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %408) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %407) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %406) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %406) #9
  %3049 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %405)
  br i1 %3049, label %3080, label %3066

3050:                                             ; preds = %3031, %3017
  %.pn1829.pn.pn = phi { ptr, i32 } [ %.pn1829.pn, %3031 ], [ %.pn1826.pn, %3017 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %397) #9
  br label %3051

3051:                                             ; preds = %3006, %3050, %3008, %3004
  %.pn1829.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3005, %3004 ], [ %3007, %3006 ], [ %.pn1829.pn.pn, %3050 ], [ %3009, %3008 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %395) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %395) #9
  br label %4427

3052:                                             ; preds = %3032
  %3053 = landingpad { ptr, i32 }
          cleanup
  br label %3099

3054:                                             ; preds = %3034
  %3055 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %404) #9
  br label %3099

3056:                                             ; preds = %3035
  %3057 = landingpad { ptr, i32 }
          cleanup
  br label %3099

3058:                                             ; preds = %3040
  %3059 = landingpad { ptr, i32 }
          cleanup
  br label %3065

3060:                                             ; preds = %3046
  %3061 = landingpad { ptr, i32 }
          cleanup
  br label %3064

3062:                                             ; preds = %3047
  %3063 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %407) #9
  br label %3064

3064:                                             ; preds = %3062, %3060
  %.pn1839 = phi { ptr, i32 } [ %3063, %3062 ], [ %3061, %3060 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %408) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %408) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %407) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %406) #9
  br label %3065

3065:                                             ; preds = %3064, %3058
  %.pn1839.pn = phi { ptr, i32 } [ %.pn1839, %3064 ], [ %3059, %3058 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %406) #9
  br label %3098

3066:                                             ; preds = %3048
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %409) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %409)
          to label %3067 unwind label %3072

3067:                                             ; preds = %3066
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %410) #9
  %3068 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %405)
          to label %3069 unwind label %3074

3069:                                             ; preds = %3067
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %410, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 125, ptr noundef %3068)
          to label %3070 unwind label %3074

3070:                                             ; preds = %3069
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %410, ptr noundef nonnull align 8 dereferenceable(8) %409)
          to label %3071 unwind label %3076

3071:                                             ; preds = %3070
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %410) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %410) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %409) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %409) #9
  br label %3080

3072:                                             ; preds = %3066
  %3073 = landingpad { ptr, i32 }
          cleanup
  br label %3079

3074:                                             ; preds = %3069, %3067
  %3075 = landingpad { ptr, i32 }
          cleanup
  br label %3078

3076:                                             ; preds = %3070
  %3077 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %410) #9
  br label %3078

3078:                                             ; preds = %3076, %3074
  %.pn1842 = phi { ptr, i32 } [ %3077, %3076 ], [ %3075, %3074 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %410) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %409) #9
  br label %3079

3079:                                             ; preds = %3078, %3072
  %.pn1842.pn = phi { ptr, i32 } [ %.pn1842, %3078 ], [ %3073, %3072 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %409) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %405) #9
  br label %3098

3080:                                             ; preds = %3048, %3071
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %405) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %405) #9
  call void @_ZdaPv(ptr noundef nonnull %3039) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %403) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %403) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %411) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %411)
  %3081 = getelementptr inbounds i8, ptr %411, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3081, ptr noundef nonnull @.str.40, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3082 unwind label %3100

3082:                                             ; preds = %3080
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %412) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %412, ptr noundef nonnull align 8 dereferenceable(128) %411)
          to label %3083 unwind label %3102

3083:                                             ; preds = %3082
  %3084 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %412) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %412) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %412) #9
  %3085 = shl i64 %3084, 32
  %sext1850 = add i64 %3085, 12884901888
  %3086 = ashr exact i64 %sext1850, 32
  %3087 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3086) #10
          to label %3088 unwind label %3104

3088:                                             ; preds = %3083
  %sext1849 = add i64 %3085, 8589934592
  %3089 = ashr exact i64 %sext1849, 32
  %3090 = getelementptr inbounds i8, ptr %3087, i64 %3089
  store i8 0, ptr %3090, align 1, !tbaa !9
  %sext1851 = add i64 %3085, 4294967296
  %3091 = ashr exact i64 %sext1851, 32
  %3092 = load double, ptr %2, align 8, !tbaa !5
  %3093 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3087, i64 noundef %3091, ptr noundef nonnull @.str.40, double noundef %3092) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %413) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %414) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %414, ptr noundef nonnull align 8 dereferenceable(128) %411)
          to label %3094 unwind label %3106

3094:                                             ; preds = %3088
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %415) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %416) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %416) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %415, ptr noundef nonnull %3087, ptr noundef nonnull align 1 dereferenceable(1) %416)
          to label %3095 unwind label %3108

3095:                                             ; preds = %3094
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %413, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %414, ptr noundef nonnull align 8 dereferenceable(32) %415)
          to label %3096 unwind label %3110

3096:                                             ; preds = %3095
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %415) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %416) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %416) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %415) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %414) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %414) #9
  %3097 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %413)
  br i1 %3097, label %3128, label %3114

3098:                                             ; preds = %3079, %3065
  %.pn1842.pn.pn = phi { ptr, i32 } [ %.pn1842.pn, %3079 ], [ %.pn1839.pn, %3065 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %405) #9
  br label %3099

3099:                                             ; preds = %3054, %3098, %3056, %3052
  %.pn1842.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3053, %3052 ], [ %3055, %3054 ], [ %.pn1842.pn.pn, %3098 ], [ %3057, %3056 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %403) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %403) #9
  br label %4427

3100:                                             ; preds = %3080
  %3101 = landingpad { ptr, i32 }
          cleanup
  br label %3147

3102:                                             ; preds = %3082
  %3103 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %412) #9
  br label %3147

3104:                                             ; preds = %3083
  %3105 = landingpad { ptr, i32 }
          cleanup
  br label %3147

3106:                                             ; preds = %3088
  %3107 = landingpad { ptr, i32 }
          cleanup
  br label %3113

3108:                                             ; preds = %3094
  %3109 = landingpad { ptr, i32 }
          cleanup
  br label %3112

3110:                                             ; preds = %3095
  %3111 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %415) #9
  br label %3112

3112:                                             ; preds = %3110, %3108
  %.pn1852 = phi { ptr, i32 } [ %3111, %3110 ], [ %3109, %3108 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %416) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %416) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %415) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %414) #9
  br label %3113

3113:                                             ; preds = %3112, %3106
  %.pn1852.pn = phi { ptr, i32 } [ %.pn1852, %3112 ], [ %3107, %3106 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %414) #9
  br label %3146

3114:                                             ; preds = %3096
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %417) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %417)
          to label %3115 unwind label %3120

3115:                                             ; preds = %3114
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %418) #9
  %3116 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %413)
          to label %3117 unwind label %3122

3117:                                             ; preds = %3115
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %418, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 126, ptr noundef %3116)
          to label %3118 unwind label %3122

3118:                                             ; preds = %3117
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %418, ptr noundef nonnull align 8 dereferenceable(8) %417)
          to label %3119 unwind label %3124

3119:                                             ; preds = %3118
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %418) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %418) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %417) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %417) #9
  br label %3128

3120:                                             ; preds = %3114
  %3121 = landingpad { ptr, i32 }
          cleanup
  br label %3127

3122:                                             ; preds = %3117, %3115
  %3123 = landingpad { ptr, i32 }
          cleanup
  br label %3126

3124:                                             ; preds = %3118
  %3125 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %418) #9
  br label %3126

3126:                                             ; preds = %3124, %3122
  %.pn1855 = phi { ptr, i32 } [ %3125, %3124 ], [ %3123, %3122 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %418) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %417) #9
  br label %3127

3127:                                             ; preds = %3126, %3120
  %.pn1855.pn = phi { ptr, i32 } [ %.pn1855, %3126 ], [ %3121, %3120 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %417) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %413) #9
  br label %3146

3128:                                             ; preds = %3096, %3119
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %413) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %413) #9
  call void @_ZdaPv(ptr noundef nonnull %3087) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %411) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %411) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %419) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %419)
  %3129 = getelementptr inbounds i8, ptr %419, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3129, ptr noundef nonnull @.str.41, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3130 unwind label %3148

3130:                                             ; preds = %3128
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %420) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %420, ptr noundef nonnull align 8 dereferenceable(128) %419)
          to label %3131 unwind label %3150

3131:                                             ; preds = %3130
  %3132 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %420) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %420) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %420) #9
  %3133 = shl i64 %3132, 32
  %sext1863 = add i64 %3133, 12884901888
  %3134 = ashr exact i64 %sext1863, 32
  %3135 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3134) #10
          to label %3136 unwind label %3152

3136:                                             ; preds = %3131
  %sext1862 = add i64 %3133, 8589934592
  %3137 = ashr exact i64 %sext1862, 32
  %3138 = getelementptr inbounds i8, ptr %3135, i64 %3137
  store i8 0, ptr %3138, align 1, !tbaa !9
  %sext1864 = add i64 %3133, 4294967296
  %3139 = ashr exact i64 %sext1864, 32
  %3140 = load double, ptr %2, align 8, !tbaa !5
  %3141 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3135, i64 noundef %3139, ptr noundef nonnull @.str.41, double noundef %3140) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %421) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %422) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %422, ptr noundef nonnull align 8 dereferenceable(128) %419)
          to label %3142 unwind label %3154

3142:                                             ; preds = %3136
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %423) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %424) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %424) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %423, ptr noundef nonnull %3135, ptr noundef nonnull align 1 dereferenceable(1) %424)
          to label %3143 unwind label %3156

3143:                                             ; preds = %3142
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %421, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %422, ptr noundef nonnull align 8 dereferenceable(32) %423)
          to label %3144 unwind label %3158

3144:                                             ; preds = %3143
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %423) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %424) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %424) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %423) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %422) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %422) #9
  %3145 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %421)
  br i1 %3145, label %3176, label %3162

3146:                                             ; preds = %3127, %3113
  %.pn1855.pn.pn = phi { ptr, i32 } [ %.pn1855.pn, %3127 ], [ %.pn1852.pn, %3113 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %413) #9
  br label %3147

3147:                                             ; preds = %3102, %3146, %3104, %3100
  %.pn1855.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3101, %3100 ], [ %3103, %3102 ], [ %.pn1855.pn.pn, %3146 ], [ %3105, %3104 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %411) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %411) #9
  br label %4427

3148:                                             ; preds = %3128
  %3149 = landingpad { ptr, i32 }
          cleanup
  br label %3195

3150:                                             ; preds = %3130
  %3151 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %420) #9
  br label %3195

3152:                                             ; preds = %3131
  %3153 = landingpad { ptr, i32 }
          cleanup
  br label %3195

3154:                                             ; preds = %3136
  %3155 = landingpad { ptr, i32 }
          cleanup
  br label %3161

3156:                                             ; preds = %3142
  %3157 = landingpad { ptr, i32 }
          cleanup
  br label %3160

3158:                                             ; preds = %3143
  %3159 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %423) #9
  br label %3160

3160:                                             ; preds = %3158, %3156
  %.pn1865 = phi { ptr, i32 } [ %3159, %3158 ], [ %3157, %3156 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %424) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %424) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %423) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %422) #9
  br label %3161

3161:                                             ; preds = %3160, %3154
  %.pn1865.pn = phi { ptr, i32 } [ %.pn1865, %3160 ], [ %3155, %3154 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %422) #9
  br label %3194

3162:                                             ; preds = %3144
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %425) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %425)
          to label %3163 unwind label %3168

3163:                                             ; preds = %3162
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %426) #9
  %3164 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %421)
          to label %3165 unwind label %3170

3165:                                             ; preds = %3163
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %426, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 127, ptr noundef %3164)
          to label %3166 unwind label %3170

3166:                                             ; preds = %3165
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %426, ptr noundef nonnull align 8 dereferenceable(8) %425)
          to label %3167 unwind label %3172

3167:                                             ; preds = %3166
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %426) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %426) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %425) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %425) #9
  br label %3176

3168:                                             ; preds = %3162
  %3169 = landingpad { ptr, i32 }
          cleanup
  br label %3175

3170:                                             ; preds = %3165, %3163
  %3171 = landingpad { ptr, i32 }
          cleanup
  br label %3174

3172:                                             ; preds = %3166
  %3173 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %426) #9
  br label %3174

3174:                                             ; preds = %3172, %3170
  %.pn1868 = phi { ptr, i32 } [ %3173, %3172 ], [ %3171, %3170 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %426) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %425) #9
  br label %3175

3175:                                             ; preds = %3174, %3168
  %.pn1868.pn = phi { ptr, i32 } [ %.pn1868, %3174 ], [ %3169, %3168 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %425) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %421) #9
  br label %3194

3176:                                             ; preds = %3144, %3167
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %421) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %421) #9
  call void @_ZdaPv(ptr noundef nonnull %3135) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %419) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %419) #9
  store double 0x3E91CED52219BEA5, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %427) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %427)
  %3177 = getelementptr inbounds i8, ptr %427, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3177, ptr noundef nonnull @.str.42, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3178 unwind label %3196

3178:                                             ; preds = %3176
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %428) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %428, ptr noundef nonnull align 8 dereferenceable(128) %427)
          to label %3179 unwind label %3198

3179:                                             ; preds = %3178
  %3180 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %428) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %428) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %428) #9
  %3181 = shl i64 %3180, 32
  %sext1876 = add i64 %3181, 12884901888
  %3182 = ashr exact i64 %sext1876, 32
  %3183 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3182) #10
          to label %3184 unwind label %3200

3184:                                             ; preds = %3179
  %sext1875 = add i64 %3181, 8589934592
  %3185 = ashr exact i64 %sext1875, 32
  %3186 = getelementptr inbounds i8, ptr %3183, i64 %3185
  store i8 0, ptr %3186, align 1, !tbaa !9
  %sext1877 = add i64 %3181, 4294967296
  %3187 = ashr exact i64 %sext1877, 32
  %3188 = load double, ptr %2, align 8, !tbaa !5
  %3189 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3183, i64 noundef %3187, ptr noundef nonnull @.str.42, double noundef %3188) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %429) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %430) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %430, ptr noundef nonnull align 8 dereferenceable(128) %427)
          to label %3190 unwind label %3202

3190:                                             ; preds = %3184
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %431) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %432) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %432) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %431, ptr noundef nonnull %3183, ptr noundef nonnull align 1 dereferenceable(1) %432)
          to label %3191 unwind label %3204

3191:                                             ; preds = %3190
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %429, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %430, ptr noundef nonnull align 8 dereferenceable(32) %431)
          to label %3192 unwind label %3206

3192:                                             ; preds = %3191
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %431) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %432) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %432) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %431) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %430) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %430) #9
  %3193 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %429)
  br i1 %3193, label %3224, label %3210

3194:                                             ; preds = %3175, %3161
  %.pn1868.pn.pn = phi { ptr, i32 } [ %.pn1868.pn, %3175 ], [ %.pn1865.pn, %3161 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %421) #9
  br label %3195

3195:                                             ; preds = %3150, %3194, %3152, %3148
  %.pn1868.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3149, %3148 ], [ %3151, %3150 ], [ %.pn1868.pn.pn, %3194 ], [ %3153, %3152 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %419) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %419) #9
  br label %4427

3196:                                             ; preds = %3176
  %3197 = landingpad { ptr, i32 }
          cleanup
  br label %3243

3198:                                             ; preds = %3178
  %3199 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %428) #9
  br label %3243

3200:                                             ; preds = %3179
  %3201 = landingpad { ptr, i32 }
          cleanup
  br label %3243

3202:                                             ; preds = %3184
  %3203 = landingpad { ptr, i32 }
          cleanup
  br label %3209

3204:                                             ; preds = %3190
  %3205 = landingpad { ptr, i32 }
          cleanup
  br label %3208

3206:                                             ; preds = %3191
  %3207 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %431) #9
  br label %3208

3208:                                             ; preds = %3206, %3204
  %.pn1878 = phi { ptr, i32 } [ %3207, %3206 ], [ %3205, %3204 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %432) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %432) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %431) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %430) #9
  br label %3209

3209:                                             ; preds = %3208, %3202
  %.pn1878.pn = phi { ptr, i32 } [ %.pn1878, %3208 ], [ %3203, %3202 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %430) #9
  br label %3242

3210:                                             ; preds = %3192
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %433) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %433)
          to label %3211 unwind label %3216

3211:                                             ; preds = %3210
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %434) #9
  %3212 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %429)
          to label %3213 unwind label %3218

3213:                                             ; preds = %3211
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %434, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 130, ptr noundef %3212)
          to label %3214 unwind label %3218

3214:                                             ; preds = %3213
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %434, ptr noundef nonnull align 8 dereferenceable(8) %433)
          to label %3215 unwind label %3220

3215:                                             ; preds = %3214
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %434) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %434) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %433) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %433) #9
  br label %3224

3216:                                             ; preds = %3210
  %3217 = landingpad { ptr, i32 }
          cleanup
  br label %3223

3218:                                             ; preds = %3213, %3211
  %3219 = landingpad { ptr, i32 }
          cleanup
  br label %3222

3220:                                             ; preds = %3214
  %3221 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %434) #9
  br label %3222

3222:                                             ; preds = %3220, %3218
  %.pn1881 = phi { ptr, i32 } [ %3221, %3220 ], [ %3219, %3218 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %434) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %433) #9
  br label %3223

3223:                                             ; preds = %3222, %3216
  %.pn1881.pn = phi { ptr, i32 } [ %.pn1881, %3222 ], [ %3217, %3216 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %433) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %429) #9
  br label %3242

3224:                                             ; preds = %3192, %3215
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %429) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %429) #9
  call void @_ZdaPv(ptr noundef nonnull %3183) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %427) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %427) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %435) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %435)
  %3225 = getelementptr inbounds i8, ptr %435, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3225, ptr noundef nonnull @.str.43, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3226 unwind label %3244

3226:                                             ; preds = %3224
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %436) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %436, ptr noundef nonnull align 8 dereferenceable(128) %435)
          to label %3227 unwind label %3246

3227:                                             ; preds = %3226
  %3228 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %436) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %436) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %436) #9
  %3229 = shl i64 %3228, 32
  %sext1889 = add i64 %3229, 12884901888
  %3230 = ashr exact i64 %sext1889, 32
  %3231 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3230) #10
          to label %3232 unwind label %3248

3232:                                             ; preds = %3227
  %sext1888 = add i64 %3229, 8589934592
  %3233 = ashr exact i64 %sext1888, 32
  %3234 = getelementptr inbounds i8, ptr %3231, i64 %3233
  store i8 0, ptr %3234, align 1, !tbaa !9
  %sext1890 = add i64 %3229, 4294967296
  %3235 = ashr exact i64 %sext1890, 32
  %3236 = load double, ptr %2, align 8, !tbaa !5
  %3237 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3231, i64 noundef %3235, ptr noundef nonnull @.str.43, double noundef %3236) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %437) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %438) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %438, ptr noundef nonnull align 8 dereferenceable(128) %435)
          to label %3238 unwind label %3250

3238:                                             ; preds = %3232
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %439) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %440) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %440) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %439, ptr noundef nonnull %3231, ptr noundef nonnull align 1 dereferenceable(1) %440)
          to label %3239 unwind label %3252

3239:                                             ; preds = %3238
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %437, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %438, ptr noundef nonnull align 8 dereferenceable(32) %439)
          to label %3240 unwind label %3254

3240:                                             ; preds = %3239
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %439) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %440) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %440) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %439) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %438) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %438) #9
  %3241 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %437)
  br i1 %3241, label %3272, label %3258

3242:                                             ; preds = %3223, %3209
  %.pn1881.pn.pn = phi { ptr, i32 } [ %.pn1881.pn, %3223 ], [ %.pn1878.pn, %3209 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %429) #9
  br label %3243

3243:                                             ; preds = %3198, %3242, %3200, %3196
  %.pn1881.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3197, %3196 ], [ %3199, %3198 ], [ %.pn1881.pn.pn, %3242 ], [ %3201, %3200 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %427) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %427) #9
  br label %4427

3244:                                             ; preds = %3224
  %3245 = landingpad { ptr, i32 }
          cleanup
  br label %3291

3246:                                             ; preds = %3226
  %3247 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %436) #9
  br label %3291

3248:                                             ; preds = %3227
  %3249 = landingpad { ptr, i32 }
          cleanup
  br label %3291

3250:                                             ; preds = %3232
  %3251 = landingpad { ptr, i32 }
          cleanup
  br label %3257

3252:                                             ; preds = %3238
  %3253 = landingpad { ptr, i32 }
          cleanup
  br label %3256

3254:                                             ; preds = %3239
  %3255 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %439) #9
  br label %3256

3256:                                             ; preds = %3254, %3252
  %.pn1891 = phi { ptr, i32 } [ %3255, %3254 ], [ %3253, %3252 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %440) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %440) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %439) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %438) #9
  br label %3257

3257:                                             ; preds = %3256, %3250
  %.pn1891.pn = phi { ptr, i32 } [ %.pn1891, %3256 ], [ %3251, %3250 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %438) #9
  br label %3290

3258:                                             ; preds = %3240
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %441) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %441)
          to label %3259 unwind label %3264

3259:                                             ; preds = %3258
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %442) #9
  %3260 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %437)
          to label %3261 unwind label %3266

3261:                                             ; preds = %3259
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %442, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 131, ptr noundef %3260)
          to label %3262 unwind label %3266

3262:                                             ; preds = %3261
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %442, ptr noundef nonnull align 8 dereferenceable(8) %441)
          to label %3263 unwind label %3268

3263:                                             ; preds = %3262
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %442) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %442) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %441) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %441) #9
  br label %3272

3264:                                             ; preds = %3258
  %3265 = landingpad { ptr, i32 }
          cleanup
  br label %3271

3266:                                             ; preds = %3261, %3259
  %3267 = landingpad { ptr, i32 }
          cleanup
  br label %3270

3268:                                             ; preds = %3262
  %3269 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %442) #9
  br label %3270

3270:                                             ; preds = %3268, %3266
  %.pn1894 = phi { ptr, i32 } [ %3269, %3268 ], [ %3267, %3266 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %442) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %441) #9
  br label %3271

3271:                                             ; preds = %3270, %3264
  %.pn1894.pn = phi { ptr, i32 } [ %.pn1894, %3270 ], [ %3265, %3264 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %441) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %437) #9
  br label %3290

3272:                                             ; preds = %3240, %3263
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %437) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %437) #9
  call void @_ZdaPv(ptr noundef nonnull %3231) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %435) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %435) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %443) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %443)
  %3273 = getelementptr inbounds i8, ptr %443, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3273, ptr noundef nonnull @.str.44, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3274 unwind label %3292

3274:                                             ; preds = %3272
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %444) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %444, ptr noundef nonnull align 8 dereferenceable(128) %443)
          to label %3275 unwind label %3294

3275:                                             ; preds = %3274
  %3276 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %444) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %444) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %444) #9
  %3277 = shl i64 %3276, 32
  %sext1902 = add i64 %3277, 12884901888
  %3278 = ashr exact i64 %sext1902, 32
  %3279 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3278) #10
          to label %3280 unwind label %3296

3280:                                             ; preds = %3275
  %sext1901 = add i64 %3277, 8589934592
  %3281 = ashr exact i64 %sext1901, 32
  %3282 = getelementptr inbounds i8, ptr %3279, i64 %3281
  store i8 0, ptr %3282, align 1, !tbaa !9
  %sext1903 = add i64 %3277, 4294967296
  %3283 = ashr exact i64 %sext1903, 32
  %3284 = load double, ptr %2, align 8, !tbaa !5
  %3285 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3279, i64 noundef %3283, ptr noundef nonnull @.str.44, double noundef %3284) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %445) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %446) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %446, ptr noundef nonnull align 8 dereferenceable(128) %443)
          to label %3286 unwind label %3298

3286:                                             ; preds = %3280
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %447) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %448) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %448) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %447, ptr noundef nonnull %3279, ptr noundef nonnull align 1 dereferenceable(1) %448)
          to label %3287 unwind label %3300

3287:                                             ; preds = %3286
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %445, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %446, ptr noundef nonnull align 8 dereferenceable(32) %447)
          to label %3288 unwind label %3302

3288:                                             ; preds = %3287
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %447) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %448) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %448) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %447) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %446) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %446) #9
  %3289 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %445)
  br i1 %3289, label %3320, label %3306

3290:                                             ; preds = %3271, %3257
  %.pn1894.pn.pn = phi { ptr, i32 } [ %.pn1894.pn, %3271 ], [ %.pn1891.pn, %3257 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %437) #9
  br label %3291

3291:                                             ; preds = %3246, %3290, %3248, %3244
  %.pn1894.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3245, %3244 ], [ %3247, %3246 ], [ %.pn1894.pn.pn, %3290 ], [ %3249, %3248 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %435) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %435) #9
  br label %4427

3292:                                             ; preds = %3272
  %3293 = landingpad { ptr, i32 }
          cleanup
  br label %3339

3294:                                             ; preds = %3274
  %3295 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %444) #9
  br label %3339

3296:                                             ; preds = %3275
  %3297 = landingpad { ptr, i32 }
          cleanup
  br label %3339

3298:                                             ; preds = %3280
  %3299 = landingpad { ptr, i32 }
          cleanup
  br label %3305

3300:                                             ; preds = %3286
  %3301 = landingpad { ptr, i32 }
          cleanup
  br label %3304

3302:                                             ; preds = %3287
  %3303 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %447) #9
  br label %3304

3304:                                             ; preds = %3302, %3300
  %.pn1904 = phi { ptr, i32 } [ %3303, %3302 ], [ %3301, %3300 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %448) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %448) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %447) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %446) #9
  br label %3305

3305:                                             ; preds = %3304, %3298
  %.pn1904.pn = phi { ptr, i32 } [ %.pn1904, %3304 ], [ %3299, %3298 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %446) #9
  br label %3338

3306:                                             ; preds = %3288
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %449) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %449)
          to label %3307 unwind label %3312

3307:                                             ; preds = %3306
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %450) #9
  %3308 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %445)
          to label %3309 unwind label %3314

3309:                                             ; preds = %3307
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %450, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 132, ptr noundef %3308)
          to label %3310 unwind label %3314

3310:                                             ; preds = %3309
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %450, ptr noundef nonnull align 8 dereferenceable(8) %449)
          to label %3311 unwind label %3316

3311:                                             ; preds = %3310
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %450) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %450) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %449) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %449) #9
  br label %3320

3312:                                             ; preds = %3306
  %3313 = landingpad { ptr, i32 }
          cleanup
  br label %3319

3314:                                             ; preds = %3309, %3307
  %3315 = landingpad { ptr, i32 }
          cleanup
  br label %3318

3316:                                             ; preds = %3310
  %3317 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %450) #9
  br label %3318

3318:                                             ; preds = %3316, %3314
  %.pn1907 = phi { ptr, i32 } [ %3317, %3316 ], [ %3315, %3314 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %450) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %449) #9
  br label %3319

3319:                                             ; preds = %3318, %3312
  %.pn1907.pn = phi { ptr, i32 } [ %.pn1907, %3318 ], [ %3313, %3312 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %449) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %445) #9
  br label %3338

3320:                                             ; preds = %3288, %3311
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %445) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %445) #9
  call void @_ZdaPv(ptr noundef nonnull %3279) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %443) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %443) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %451) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %451)
  %3321 = getelementptr inbounds i8, ptr %451, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3321, ptr noundef nonnull @.str.45, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3322 unwind label %3340

3322:                                             ; preds = %3320
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %452) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %452, ptr noundef nonnull align 8 dereferenceable(128) %451)
          to label %3323 unwind label %3342

3323:                                             ; preds = %3322
  %3324 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %452) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %452) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %452) #9
  %3325 = shl i64 %3324, 32
  %sext1915 = add i64 %3325, 12884901888
  %3326 = ashr exact i64 %sext1915, 32
  %3327 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3326) #10
          to label %3328 unwind label %3344

3328:                                             ; preds = %3323
  %sext1914 = add i64 %3325, 8589934592
  %3329 = ashr exact i64 %sext1914, 32
  %3330 = getelementptr inbounds i8, ptr %3327, i64 %3329
  store i8 0, ptr %3330, align 1, !tbaa !9
  %sext1916 = add i64 %3325, 4294967296
  %3331 = ashr exact i64 %sext1916, 32
  %3332 = load double, ptr %2, align 8, !tbaa !5
  %3333 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3327, i64 noundef %3331, ptr noundef nonnull @.str.45, double noundef %3332) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %453) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %454) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %454, ptr noundef nonnull align 8 dereferenceable(128) %451)
          to label %3334 unwind label %3346

3334:                                             ; preds = %3328
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %455) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %456) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %456) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %455, ptr noundef nonnull %3327, ptr noundef nonnull align 1 dereferenceable(1) %456)
          to label %3335 unwind label %3348

3335:                                             ; preds = %3334
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %453, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %454, ptr noundef nonnull align 8 dereferenceable(32) %455)
          to label %3336 unwind label %3350

3336:                                             ; preds = %3335
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %455) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %456) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %456) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %455) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %454) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %454) #9
  %3337 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %453)
  br i1 %3337, label %3368, label %3354

3338:                                             ; preds = %3319, %3305
  %.pn1907.pn.pn = phi { ptr, i32 } [ %.pn1907.pn, %3319 ], [ %.pn1904.pn, %3305 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %445) #9
  br label %3339

3339:                                             ; preds = %3294, %3338, %3296, %3292
  %.pn1907.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3293, %3292 ], [ %3295, %3294 ], [ %.pn1907.pn.pn, %3338 ], [ %3297, %3296 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %443) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %443) #9
  br label %4427

3340:                                             ; preds = %3320
  %3341 = landingpad { ptr, i32 }
          cleanup
  br label %3387

3342:                                             ; preds = %3322
  %3343 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %452) #9
  br label %3387

3344:                                             ; preds = %3323
  %3345 = landingpad { ptr, i32 }
          cleanup
  br label %3387

3346:                                             ; preds = %3328
  %3347 = landingpad { ptr, i32 }
          cleanup
  br label %3353

3348:                                             ; preds = %3334
  %3349 = landingpad { ptr, i32 }
          cleanup
  br label %3352

3350:                                             ; preds = %3335
  %3351 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %455) #9
  br label %3352

3352:                                             ; preds = %3350, %3348
  %.pn1917 = phi { ptr, i32 } [ %3351, %3350 ], [ %3349, %3348 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %456) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %456) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %455) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %454) #9
  br label %3353

3353:                                             ; preds = %3352, %3346
  %.pn1917.pn = phi { ptr, i32 } [ %.pn1917, %3352 ], [ %3347, %3346 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %454) #9
  br label %3386

3354:                                             ; preds = %3336
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %457) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %457)
          to label %3355 unwind label %3360

3355:                                             ; preds = %3354
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %458) #9
  %3356 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %453)
          to label %3357 unwind label %3362

3357:                                             ; preds = %3355
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %458, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 133, ptr noundef %3356)
          to label %3358 unwind label %3362

3358:                                             ; preds = %3357
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %458, ptr noundef nonnull align 8 dereferenceable(8) %457)
          to label %3359 unwind label %3364

3359:                                             ; preds = %3358
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %458) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %458) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %457) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %457) #9
  br label %3368

3360:                                             ; preds = %3354
  %3361 = landingpad { ptr, i32 }
          cleanup
  br label %3367

3362:                                             ; preds = %3357, %3355
  %3363 = landingpad { ptr, i32 }
          cleanup
  br label %3366

3364:                                             ; preds = %3358
  %3365 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %458) #9
  br label %3366

3366:                                             ; preds = %3364, %3362
  %.pn1920 = phi { ptr, i32 } [ %3365, %3364 ], [ %3363, %3362 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %458) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %457) #9
  br label %3367

3367:                                             ; preds = %3366, %3360
  %.pn1920.pn = phi { ptr, i32 } [ %.pn1920, %3366 ], [ %3361, %3360 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %457) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %453) #9
  br label %3386

3368:                                             ; preds = %3336, %3359
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %453) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %453) #9
  call void @_ZdaPv(ptr noundef nonnull %3327) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %451) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %451) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %459) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %459)
  %3369 = getelementptr inbounds i8, ptr %459, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3369, ptr noundef nonnull @.str.46, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3370 unwind label %3388

3370:                                             ; preds = %3368
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %460) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %460, ptr noundef nonnull align 8 dereferenceable(128) %459)
          to label %3371 unwind label %3390

3371:                                             ; preds = %3370
  %3372 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %460) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %460) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %460) #9
  %3373 = shl i64 %3372, 32
  %sext1928 = add i64 %3373, 12884901888
  %3374 = ashr exact i64 %sext1928, 32
  %3375 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3374) #10
          to label %3376 unwind label %3392

3376:                                             ; preds = %3371
  %sext1927 = add i64 %3373, 8589934592
  %3377 = ashr exact i64 %sext1927, 32
  %3378 = getelementptr inbounds i8, ptr %3375, i64 %3377
  store i8 0, ptr %3378, align 1, !tbaa !9
  %sext1929 = add i64 %3373, 4294967296
  %3379 = ashr exact i64 %sext1929, 32
  %3380 = load double, ptr %2, align 8, !tbaa !5
  %3381 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3375, i64 noundef %3379, ptr noundef nonnull @.str.46, double noundef %3380) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %461) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %462) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %462, ptr noundef nonnull align 8 dereferenceable(128) %459)
          to label %3382 unwind label %3394

3382:                                             ; preds = %3376
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %463) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %464) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %464) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %463, ptr noundef nonnull %3375, ptr noundef nonnull align 1 dereferenceable(1) %464)
          to label %3383 unwind label %3396

3383:                                             ; preds = %3382
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %461, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %462, ptr noundef nonnull align 8 dereferenceable(32) %463)
          to label %3384 unwind label %3398

3384:                                             ; preds = %3383
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %463) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %464) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %464) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %463) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %462) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %462) #9
  %3385 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %461)
  br i1 %3385, label %3416, label %3402

3386:                                             ; preds = %3367, %3353
  %.pn1920.pn.pn = phi { ptr, i32 } [ %.pn1920.pn, %3367 ], [ %.pn1917.pn, %3353 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %453) #9
  br label %3387

3387:                                             ; preds = %3342, %3386, %3344, %3340
  %.pn1920.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3341, %3340 ], [ %3343, %3342 ], [ %.pn1920.pn.pn, %3386 ], [ %3345, %3344 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %451) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %451) #9
  br label %4427

3388:                                             ; preds = %3368
  %3389 = landingpad { ptr, i32 }
          cleanup
  br label %3435

3390:                                             ; preds = %3370
  %3391 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %460) #9
  br label %3435

3392:                                             ; preds = %3371
  %3393 = landingpad { ptr, i32 }
          cleanup
  br label %3435

3394:                                             ; preds = %3376
  %3395 = landingpad { ptr, i32 }
          cleanup
  br label %3401

3396:                                             ; preds = %3382
  %3397 = landingpad { ptr, i32 }
          cleanup
  br label %3400

3398:                                             ; preds = %3383
  %3399 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %463) #9
  br label %3400

3400:                                             ; preds = %3398, %3396
  %.pn1930 = phi { ptr, i32 } [ %3399, %3398 ], [ %3397, %3396 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %464) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %464) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %463) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %462) #9
  br label %3401

3401:                                             ; preds = %3400, %3394
  %.pn1930.pn = phi { ptr, i32 } [ %.pn1930, %3400 ], [ %3395, %3394 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %462) #9
  br label %3434

3402:                                             ; preds = %3384
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %465) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %465)
          to label %3403 unwind label %3408

3403:                                             ; preds = %3402
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %466) #9
  %3404 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %461)
          to label %3405 unwind label %3410

3405:                                             ; preds = %3403
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %466, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 134, ptr noundef %3404)
          to label %3406 unwind label %3410

3406:                                             ; preds = %3405
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %466, ptr noundef nonnull align 8 dereferenceable(8) %465)
          to label %3407 unwind label %3412

3407:                                             ; preds = %3406
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %466) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %466) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %465) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %465) #9
  br label %3416

3408:                                             ; preds = %3402
  %3409 = landingpad { ptr, i32 }
          cleanup
  br label %3415

3410:                                             ; preds = %3405, %3403
  %3411 = landingpad { ptr, i32 }
          cleanup
  br label %3414

3412:                                             ; preds = %3406
  %3413 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %466) #9
  br label %3414

3414:                                             ; preds = %3412, %3410
  %.pn1933 = phi { ptr, i32 } [ %3413, %3412 ], [ %3411, %3410 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %466) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %465) #9
  br label %3415

3415:                                             ; preds = %3414, %3408
  %.pn1933.pn = phi { ptr, i32 } [ %.pn1933, %3414 ], [ %3409, %3408 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %465) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %461) #9
  br label %3434

3416:                                             ; preds = %3384, %3407
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %461) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %461) #9
  call void @_ZdaPv(ptr noundef nonnull %3375) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %459) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %459) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %467) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %467)
  %3417 = getelementptr inbounds i8, ptr %467, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3417, ptr noundef nonnull @.str.47, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3418 unwind label %3436

3418:                                             ; preds = %3416
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %468) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %468, ptr noundef nonnull align 8 dereferenceable(128) %467)
          to label %3419 unwind label %3438

3419:                                             ; preds = %3418
  %3420 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %468) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %468) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %468) #9
  %3421 = shl i64 %3420, 32
  %sext1941 = add i64 %3421, 12884901888
  %3422 = ashr exact i64 %sext1941, 32
  %3423 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3422) #10
          to label %3424 unwind label %3440

3424:                                             ; preds = %3419
  %sext1940 = add i64 %3421, 8589934592
  %3425 = ashr exact i64 %sext1940, 32
  %3426 = getelementptr inbounds i8, ptr %3423, i64 %3425
  store i8 0, ptr %3426, align 1, !tbaa !9
  %sext1942 = add i64 %3421, 4294967296
  %3427 = ashr exact i64 %sext1942, 32
  %3428 = load double, ptr %2, align 8, !tbaa !5
  %3429 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3423, i64 noundef %3427, ptr noundef nonnull @.str.47, double noundef %3428) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %469) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %470) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %470, ptr noundef nonnull align 8 dereferenceable(128) %467)
          to label %3430 unwind label %3442

3430:                                             ; preds = %3424
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %471) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %472) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %472) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %471, ptr noundef nonnull %3423, ptr noundef nonnull align 1 dereferenceable(1) %472)
          to label %3431 unwind label %3444

3431:                                             ; preds = %3430
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %469, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %470, ptr noundef nonnull align 8 dereferenceable(32) %471)
          to label %3432 unwind label %3446

3432:                                             ; preds = %3431
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %471) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %472) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %472) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %471) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %470) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %470) #9
  %3433 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %469)
  br i1 %3433, label %3464, label %3450

3434:                                             ; preds = %3415, %3401
  %.pn1933.pn.pn = phi { ptr, i32 } [ %.pn1933.pn, %3415 ], [ %.pn1930.pn, %3401 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %461) #9
  br label %3435

3435:                                             ; preds = %3390, %3434, %3392, %3388
  %.pn1933.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3389, %3388 ], [ %3391, %3390 ], [ %.pn1933.pn.pn, %3434 ], [ %3393, %3392 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %459) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %459) #9
  br label %4427

3436:                                             ; preds = %3416
  %3437 = landingpad { ptr, i32 }
          cleanup
  br label %3483

3438:                                             ; preds = %3418
  %3439 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %468) #9
  br label %3483

3440:                                             ; preds = %3419
  %3441 = landingpad { ptr, i32 }
          cleanup
  br label %3483

3442:                                             ; preds = %3424
  %3443 = landingpad { ptr, i32 }
          cleanup
  br label %3449

3444:                                             ; preds = %3430
  %3445 = landingpad { ptr, i32 }
          cleanup
  br label %3448

3446:                                             ; preds = %3431
  %3447 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %471) #9
  br label %3448

3448:                                             ; preds = %3446, %3444
  %.pn1943 = phi { ptr, i32 } [ %3447, %3446 ], [ %3445, %3444 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %472) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %472) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %471) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %470) #9
  br label %3449

3449:                                             ; preds = %3448, %3442
  %.pn1943.pn = phi { ptr, i32 } [ %.pn1943, %3448 ], [ %3443, %3442 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %470) #9
  br label %3482

3450:                                             ; preds = %3432
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %473) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %473)
          to label %3451 unwind label %3456

3451:                                             ; preds = %3450
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %474) #9
  %3452 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %469)
          to label %3453 unwind label %3458

3453:                                             ; preds = %3451
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %474, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 135, ptr noundef %3452)
          to label %3454 unwind label %3458

3454:                                             ; preds = %3453
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %474, ptr noundef nonnull align 8 dereferenceable(8) %473)
          to label %3455 unwind label %3460

3455:                                             ; preds = %3454
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %474) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %474) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %473) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %473) #9
  br label %3464

3456:                                             ; preds = %3450
  %3457 = landingpad { ptr, i32 }
          cleanup
  br label %3463

3458:                                             ; preds = %3453, %3451
  %3459 = landingpad { ptr, i32 }
          cleanup
  br label %3462

3460:                                             ; preds = %3454
  %3461 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %474) #9
  br label %3462

3462:                                             ; preds = %3460, %3458
  %.pn1946 = phi { ptr, i32 } [ %3461, %3460 ], [ %3459, %3458 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %474) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %473) #9
  br label %3463

3463:                                             ; preds = %3462, %3456
  %.pn1946.pn = phi { ptr, i32 } [ %.pn1946, %3462 ], [ %3457, %3456 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %473) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %469) #9
  br label %3482

3464:                                             ; preds = %3432, %3455
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %469) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %469) #9
  call void @_ZdaPv(ptr noundef nonnull %3423) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %467) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %467) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %475) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %475)
  %3465 = getelementptr inbounds i8, ptr %475, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3465, ptr noundef nonnull @.str.48, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3466 unwind label %3484

3466:                                             ; preds = %3464
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %476) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %476, ptr noundef nonnull align 8 dereferenceable(128) %475)
          to label %3467 unwind label %3486

3467:                                             ; preds = %3466
  %3468 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %476) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %476) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %476) #9
  %3469 = shl i64 %3468, 32
  %sext1954 = add i64 %3469, 12884901888
  %3470 = ashr exact i64 %sext1954, 32
  %3471 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3470) #10
          to label %3472 unwind label %3488

3472:                                             ; preds = %3467
  %sext1953 = add i64 %3469, 8589934592
  %3473 = ashr exact i64 %sext1953, 32
  %3474 = getelementptr inbounds i8, ptr %3471, i64 %3473
  store i8 0, ptr %3474, align 1, !tbaa !9
  %sext1955 = add i64 %3469, 4294967296
  %3475 = ashr exact i64 %sext1955, 32
  %3476 = load double, ptr %2, align 8, !tbaa !5
  %3477 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3471, i64 noundef %3475, ptr noundef nonnull @.str.48, double noundef %3476) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %477) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %478) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %478, ptr noundef nonnull align 8 dereferenceable(128) %475)
          to label %3478 unwind label %3490

3478:                                             ; preds = %3472
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %479) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %480) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %480) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %479, ptr noundef nonnull %3471, ptr noundef nonnull align 1 dereferenceable(1) %480)
          to label %3479 unwind label %3492

3479:                                             ; preds = %3478
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %477, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %478, ptr noundef nonnull align 8 dereferenceable(32) %479)
          to label %3480 unwind label %3494

3480:                                             ; preds = %3479
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %479) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %480) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %480) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %479) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %478) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %478) #9
  %3481 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %477)
  br i1 %3481, label %3512, label %3498

3482:                                             ; preds = %3463, %3449
  %.pn1946.pn.pn = phi { ptr, i32 } [ %.pn1946.pn, %3463 ], [ %.pn1943.pn, %3449 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %469) #9
  br label %3483

3483:                                             ; preds = %3438, %3482, %3440, %3436
  %.pn1946.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3437, %3436 ], [ %3439, %3438 ], [ %.pn1946.pn.pn, %3482 ], [ %3441, %3440 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %467) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %467) #9
  br label %4427

3484:                                             ; preds = %3464
  %3485 = landingpad { ptr, i32 }
          cleanup
  br label %3531

3486:                                             ; preds = %3466
  %3487 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %476) #9
  br label %3531

3488:                                             ; preds = %3467
  %3489 = landingpad { ptr, i32 }
          cleanup
  br label %3531

3490:                                             ; preds = %3472
  %3491 = landingpad { ptr, i32 }
          cleanup
  br label %3497

3492:                                             ; preds = %3478
  %3493 = landingpad { ptr, i32 }
          cleanup
  br label %3496

3494:                                             ; preds = %3479
  %3495 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %479) #9
  br label %3496

3496:                                             ; preds = %3494, %3492
  %.pn1956 = phi { ptr, i32 } [ %3495, %3494 ], [ %3493, %3492 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %480) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %480) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %479) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %478) #9
  br label %3497

3497:                                             ; preds = %3496, %3490
  %.pn1956.pn = phi { ptr, i32 } [ %.pn1956, %3496 ], [ %3491, %3490 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %478) #9
  br label %3530

3498:                                             ; preds = %3480
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %481) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %481)
          to label %3499 unwind label %3504

3499:                                             ; preds = %3498
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %482) #9
  %3500 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %477)
          to label %3501 unwind label %3506

3501:                                             ; preds = %3499
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %482, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 136, ptr noundef %3500)
          to label %3502 unwind label %3506

3502:                                             ; preds = %3501
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %482, ptr noundef nonnull align 8 dereferenceable(8) %481)
          to label %3503 unwind label %3508

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

3504:                                             ; preds = %3498
  %3505 = landingpad { ptr, i32 }
          cleanup
  br label %3511

3506:                                             ; preds = %3501, %3499
  %3507 = landingpad { ptr, i32 }
          cleanup
  br label %3510

3508:                                             ; preds = %3502
  %3509 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %482) #9
  br label %3510

3510:                                             ; preds = %3508, %3506
  %.pn1959 = phi { ptr, i32 } [ %3509, %3508 ], [ %3507, %3506 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %482) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %481) #9
  br label %3511

3511:                                             ; preds = %3510, %3504
  %.pn1959.pn = phi { ptr, i32 } [ %.pn1959, %3510 ], [ %3505, %3504 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %481) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %477) #9
  br label %3530

3512:                                             ; preds = %3480, %3503
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %477) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %477) #9
  call void @_ZdaPv(ptr noundef nonnull %3471) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %475) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %475) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %483) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %483)
  %3513 = getelementptr inbounds i8, ptr %483, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3513, ptr noundef nonnull @.str.49, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3514 unwind label %3532

3514:                                             ; preds = %3512
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %484) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %484, ptr noundef nonnull align 8 dereferenceable(128) %483)
          to label %3515 unwind label %3534

3515:                                             ; preds = %3514
  %3516 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %484) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %484) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %484) #9
  %3517 = shl i64 %3516, 32
  %sext1967 = add i64 %3517, 12884901888
  %3518 = ashr exact i64 %sext1967, 32
  %3519 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3518) #10
          to label %3520 unwind label %3536

3520:                                             ; preds = %3515
  %sext1966 = add i64 %3517, 8589934592
  %3521 = ashr exact i64 %sext1966, 32
  %3522 = getelementptr inbounds i8, ptr %3519, i64 %3521
  store i8 0, ptr %3522, align 1, !tbaa !9
  %sext1968 = add i64 %3517, 4294967296
  %3523 = ashr exact i64 %sext1968, 32
  %3524 = load double, ptr %2, align 8, !tbaa !5
  %3525 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3519, i64 noundef %3523, ptr noundef nonnull @.str.49, double noundef %3524) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %485) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %486) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %486, ptr noundef nonnull align 8 dereferenceable(128) %483)
          to label %3526 unwind label %3538

3526:                                             ; preds = %3520
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %487) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %488) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %488) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %487, ptr noundef nonnull %3519, ptr noundef nonnull align 1 dereferenceable(1) %488)
          to label %3527 unwind label %3540

3527:                                             ; preds = %3526
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %485, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %486, ptr noundef nonnull align 8 dereferenceable(32) %487)
          to label %3528 unwind label %3542

3528:                                             ; preds = %3527
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %487) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %488) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %488) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %487) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %486) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %486) #9
  %3529 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %485)
  br i1 %3529, label %3560, label %3546

3530:                                             ; preds = %3511, %3497
  %.pn1959.pn.pn = phi { ptr, i32 } [ %.pn1959.pn, %3511 ], [ %.pn1956.pn, %3497 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %477) #9
  br label %3531

3531:                                             ; preds = %3486, %3530, %3488, %3484
  %.pn1959.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3485, %3484 ], [ %3487, %3486 ], [ %.pn1959.pn.pn, %3530 ], [ %3489, %3488 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %475) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %475) #9
  br label %4427

3532:                                             ; preds = %3512
  %3533 = landingpad { ptr, i32 }
          cleanup
  br label %3579

3534:                                             ; preds = %3514
  %3535 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %484) #9
  br label %3579

3536:                                             ; preds = %3515
  %3537 = landingpad { ptr, i32 }
          cleanup
  br label %3579

3538:                                             ; preds = %3520
  %3539 = landingpad { ptr, i32 }
          cleanup
  br label %3545

3540:                                             ; preds = %3526
  %3541 = landingpad { ptr, i32 }
          cleanup
  br label %3544

3542:                                             ; preds = %3527
  %3543 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %487) #9
  br label %3544

3544:                                             ; preds = %3542, %3540
  %.pn1969 = phi { ptr, i32 } [ %3543, %3542 ], [ %3541, %3540 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %488) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %488) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %487) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %486) #9
  br label %3545

3545:                                             ; preds = %3544, %3538
  %.pn1969.pn = phi { ptr, i32 } [ %.pn1969, %3544 ], [ %3539, %3538 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %486) #9
  br label %3578

3546:                                             ; preds = %3528
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %489) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %489)
          to label %3547 unwind label %3552

3547:                                             ; preds = %3546
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %490) #9
  %3548 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %485)
          to label %3549 unwind label %3554

3549:                                             ; preds = %3547
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %490, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 137, ptr noundef %3548)
          to label %3550 unwind label %3554

3550:                                             ; preds = %3549
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %490, ptr noundef nonnull align 8 dereferenceable(8) %489)
          to label %3551 unwind label %3556

3551:                                             ; preds = %3550
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %490) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %490) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %489) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %489) #9
  br label %3560

3552:                                             ; preds = %3546
  %3553 = landingpad { ptr, i32 }
          cleanup
  br label %3559

3554:                                             ; preds = %3549, %3547
  %3555 = landingpad { ptr, i32 }
          cleanup
  br label %3558

3556:                                             ; preds = %3550
  %3557 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %490) #9
  br label %3558

3558:                                             ; preds = %3556, %3554
  %.pn1972 = phi { ptr, i32 } [ %3557, %3556 ], [ %3555, %3554 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %490) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %489) #9
  br label %3559

3559:                                             ; preds = %3558, %3552
  %.pn1972.pn = phi { ptr, i32 } [ %.pn1972, %3558 ], [ %3553, %3552 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %489) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %485) #9
  br label %3578

3560:                                             ; preds = %3528, %3551
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %485) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %485) #9
  call void @_ZdaPv(ptr noundef nonnull %3519) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %483) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %483) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %491) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %491)
  %3561 = getelementptr inbounds i8, ptr %491, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3561, ptr noundef nonnull @.str.50, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3562 unwind label %3580

3562:                                             ; preds = %3560
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %492) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %492, ptr noundef nonnull align 8 dereferenceable(128) %491)
          to label %3563 unwind label %3582

3563:                                             ; preds = %3562
  %3564 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %492) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %492) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %492) #9
  %3565 = shl i64 %3564, 32
  %sext1980 = add i64 %3565, 12884901888
  %3566 = ashr exact i64 %sext1980, 32
  %3567 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3566) #10
          to label %3568 unwind label %3584

3568:                                             ; preds = %3563
  %sext1979 = add i64 %3565, 8589934592
  %3569 = ashr exact i64 %sext1979, 32
  %3570 = getelementptr inbounds i8, ptr %3567, i64 %3569
  store i8 0, ptr %3570, align 1, !tbaa !9
  %sext1981 = add i64 %3565, 4294967296
  %3571 = ashr exact i64 %sext1981, 32
  %3572 = load double, ptr %2, align 8, !tbaa !5
  %3573 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3567, i64 noundef %3571, ptr noundef nonnull @.str.50, double noundef %3572) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %493) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %494) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %494, ptr noundef nonnull align 8 dereferenceable(128) %491)
          to label %3574 unwind label %3586

3574:                                             ; preds = %3568
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %495) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %496) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %496) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %495, ptr noundef nonnull %3567, ptr noundef nonnull align 1 dereferenceable(1) %496)
          to label %3575 unwind label %3588

3575:                                             ; preds = %3574
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %493, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %494, ptr noundef nonnull align 8 dereferenceable(32) %495)
          to label %3576 unwind label %3590

3576:                                             ; preds = %3575
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %495) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %496) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %496) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %495) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %494) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %494) #9
  %3577 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %493)
  br i1 %3577, label %3608, label %3594

3578:                                             ; preds = %3559, %3545
  %.pn1972.pn.pn = phi { ptr, i32 } [ %.pn1972.pn, %3559 ], [ %.pn1969.pn, %3545 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %485) #9
  br label %3579

3579:                                             ; preds = %3534, %3578, %3536, %3532
  %.pn1972.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3533, %3532 ], [ %3535, %3534 ], [ %.pn1972.pn.pn, %3578 ], [ %3537, %3536 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %483) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %483) #9
  br label %4427

3580:                                             ; preds = %3560
  %3581 = landingpad { ptr, i32 }
          cleanup
  br label %3627

3582:                                             ; preds = %3562
  %3583 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %492) #9
  br label %3627

3584:                                             ; preds = %3563
  %3585 = landingpad { ptr, i32 }
          cleanup
  br label %3627

3586:                                             ; preds = %3568
  %3587 = landingpad { ptr, i32 }
          cleanup
  br label %3593

3588:                                             ; preds = %3574
  %3589 = landingpad { ptr, i32 }
          cleanup
  br label %3592

3590:                                             ; preds = %3575
  %3591 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %495) #9
  br label %3592

3592:                                             ; preds = %3590, %3588
  %.pn1982 = phi { ptr, i32 } [ %3591, %3590 ], [ %3589, %3588 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %496) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %496) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %495) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %494) #9
  br label %3593

3593:                                             ; preds = %3592, %3586
  %.pn1982.pn = phi { ptr, i32 } [ %.pn1982, %3592 ], [ %3587, %3586 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %494) #9
  br label %3626

3594:                                             ; preds = %3576
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %497) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %497)
          to label %3595 unwind label %3600

3595:                                             ; preds = %3594
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %498) #9
  %3596 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %493)
          to label %3597 unwind label %3602

3597:                                             ; preds = %3595
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %498, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 138, ptr noundef %3596)
          to label %3598 unwind label %3602

3598:                                             ; preds = %3597
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %498, ptr noundef nonnull align 8 dereferenceable(8) %497)
          to label %3599 unwind label %3604

3599:                                             ; preds = %3598
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %498) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %498) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %497) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %497) #9
  br label %3608

3600:                                             ; preds = %3594
  %3601 = landingpad { ptr, i32 }
          cleanup
  br label %3607

3602:                                             ; preds = %3597, %3595
  %3603 = landingpad { ptr, i32 }
          cleanup
  br label %3606

3604:                                             ; preds = %3598
  %3605 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %498) #9
  br label %3606

3606:                                             ; preds = %3604, %3602
  %.pn1985 = phi { ptr, i32 } [ %3605, %3604 ], [ %3603, %3602 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %498) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %497) #9
  br label %3607

3607:                                             ; preds = %3606, %3600
  %.pn1985.pn = phi { ptr, i32 } [ %.pn1985, %3606 ], [ %3601, %3600 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %497) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %493) #9
  br label %3626

3608:                                             ; preds = %3576, %3599
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %493) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %493) #9
  call void @_ZdaPv(ptr noundef nonnull %3567) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %491) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %491) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %499) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %499)
  %3609 = getelementptr inbounds i8, ptr %499, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3609, ptr noundef nonnull @.str.51, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3610 unwind label %3628

3610:                                             ; preds = %3608
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %500) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %500, ptr noundef nonnull align 8 dereferenceable(128) %499)
          to label %3611 unwind label %3630

3611:                                             ; preds = %3610
  %3612 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %500) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %500) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %500) #9
  %3613 = shl i64 %3612, 32
  %sext1993 = add i64 %3613, 12884901888
  %3614 = ashr exact i64 %sext1993, 32
  %3615 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3614) #10
          to label %3616 unwind label %3632

3616:                                             ; preds = %3611
  %sext1992 = add i64 %3613, 8589934592
  %3617 = ashr exact i64 %sext1992, 32
  %3618 = getelementptr inbounds i8, ptr %3615, i64 %3617
  store i8 0, ptr %3618, align 1, !tbaa !9
  %sext1994 = add i64 %3613, 4294967296
  %3619 = ashr exact i64 %sext1994, 32
  %3620 = load double, ptr %2, align 8, !tbaa !5
  %3621 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3615, i64 noundef %3619, ptr noundef nonnull @.str.51, double noundef %3620) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %501) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %502) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %502, ptr noundef nonnull align 8 dereferenceable(128) %499)
          to label %3622 unwind label %3634

3622:                                             ; preds = %3616
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %503) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %504) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %504) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %503, ptr noundef nonnull %3615, ptr noundef nonnull align 1 dereferenceable(1) %504)
          to label %3623 unwind label %3636

3623:                                             ; preds = %3622
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %501, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %502, ptr noundef nonnull align 8 dereferenceable(32) %503)
          to label %3624 unwind label %3638

3624:                                             ; preds = %3623
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %503) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %504) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %504) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %503) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %502) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %502) #9
  %3625 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %501)
  br i1 %3625, label %3656, label %3642

3626:                                             ; preds = %3607, %3593
  %.pn1985.pn.pn = phi { ptr, i32 } [ %.pn1985.pn, %3607 ], [ %.pn1982.pn, %3593 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %493) #9
  br label %3627

3627:                                             ; preds = %3582, %3626, %3584, %3580
  %.pn1985.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3581, %3580 ], [ %3583, %3582 ], [ %.pn1985.pn.pn, %3626 ], [ %3585, %3584 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %491) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %491) #9
  br label %4427

3628:                                             ; preds = %3608
  %3629 = landingpad { ptr, i32 }
          cleanup
  br label %3675

3630:                                             ; preds = %3610
  %3631 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %500) #9
  br label %3675

3632:                                             ; preds = %3611
  %3633 = landingpad { ptr, i32 }
          cleanup
  br label %3675

3634:                                             ; preds = %3616
  %3635 = landingpad { ptr, i32 }
          cleanup
  br label %3641

3636:                                             ; preds = %3622
  %3637 = landingpad { ptr, i32 }
          cleanup
  br label %3640

3638:                                             ; preds = %3623
  %3639 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %503) #9
  br label %3640

3640:                                             ; preds = %3638, %3636
  %.pn1995 = phi { ptr, i32 } [ %3639, %3638 ], [ %3637, %3636 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %504) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %504) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %503) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %502) #9
  br label %3641

3641:                                             ; preds = %3640, %3634
  %.pn1995.pn = phi { ptr, i32 } [ %.pn1995, %3640 ], [ %3635, %3634 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %502) #9
  br label %3674

3642:                                             ; preds = %3624
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %505) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %505)
          to label %3643 unwind label %3648

3643:                                             ; preds = %3642
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %506) #9
  %3644 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %501)
          to label %3645 unwind label %3650

3645:                                             ; preds = %3643
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %506, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 139, ptr noundef %3644)
          to label %3646 unwind label %3650

3646:                                             ; preds = %3645
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %506, ptr noundef nonnull align 8 dereferenceable(8) %505)
          to label %3647 unwind label %3652

3647:                                             ; preds = %3646
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %506) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %506) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %505) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %505) #9
  br label %3656

3648:                                             ; preds = %3642
  %3649 = landingpad { ptr, i32 }
          cleanup
  br label %3655

3650:                                             ; preds = %3645, %3643
  %3651 = landingpad { ptr, i32 }
          cleanup
  br label %3654

3652:                                             ; preds = %3646
  %3653 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %506) #9
  br label %3654

3654:                                             ; preds = %3652, %3650
  %.pn1998 = phi { ptr, i32 } [ %3653, %3652 ], [ %3651, %3650 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %506) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %505) #9
  br label %3655

3655:                                             ; preds = %3654, %3648
  %.pn1998.pn = phi { ptr, i32 } [ %.pn1998, %3654 ], [ %3649, %3648 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %505) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %501) #9
  br label %3674

3656:                                             ; preds = %3624, %3647
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %501) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %501) #9
  call void @_ZdaPv(ptr noundef nonnull %3615) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %499) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %499) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %507) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %507)
  %3657 = getelementptr inbounds i8, ptr %507, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3657, ptr noundef nonnull @.str.52, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3658 unwind label %3676

3658:                                             ; preds = %3656
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %508) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %508, ptr noundef nonnull align 8 dereferenceable(128) %507)
          to label %3659 unwind label %3678

3659:                                             ; preds = %3658
  %3660 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %508) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %508) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %508) #9
  %3661 = shl i64 %3660, 32
  %sext2006 = add i64 %3661, 12884901888
  %3662 = ashr exact i64 %sext2006, 32
  %3663 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3662) #10
          to label %3664 unwind label %3680

3664:                                             ; preds = %3659
  %sext2005 = add i64 %3661, 8589934592
  %3665 = ashr exact i64 %sext2005, 32
  %3666 = getelementptr inbounds i8, ptr %3663, i64 %3665
  store i8 0, ptr %3666, align 1, !tbaa !9
  %sext2007 = add i64 %3661, 4294967296
  %3667 = ashr exact i64 %sext2007, 32
  %3668 = load double, ptr %2, align 8, !tbaa !5
  %3669 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3663, i64 noundef %3667, ptr noundef nonnull @.str.52, double noundef %3668) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %509) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %510) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %510, ptr noundef nonnull align 8 dereferenceable(128) %507)
          to label %3670 unwind label %3682

3670:                                             ; preds = %3664
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %511) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %512) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %512) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %511, ptr noundef nonnull %3663, ptr noundef nonnull align 1 dereferenceable(1) %512)
          to label %3671 unwind label %3684

3671:                                             ; preds = %3670
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %509, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %510, ptr noundef nonnull align 8 dereferenceable(32) %511)
          to label %3672 unwind label %3686

3672:                                             ; preds = %3671
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %511) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %512) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %512) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %511) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %510) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %510) #9
  %3673 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %509)
  br i1 %3673, label %3704, label %3690

3674:                                             ; preds = %3655, %3641
  %.pn1998.pn.pn = phi { ptr, i32 } [ %.pn1998.pn, %3655 ], [ %.pn1995.pn, %3641 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %501) #9
  br label %3675

3675:                                             ; preds = %3630, %3674, %3632, %3628
  %.pn1998.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3629, %3628 ], [ %3631, %3630 ], [ %.pn1998.pn.pn, %3674 ], [ %3633, %3632 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %499) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %499) #9
  br label %4427

3676:                                             ; preds = %3656
  %3677 = landingpad { ptr, i32 }
          cleanup
  br label %3723

3678:                                             ; preds = %3658
  %3679 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %508) #9
  br label %3723

3680:                                             ; preds = %3659
  %3681 = landingpad { ptr, i32 }
          cleanup
  br label %3723

3682:                                             ; preds = %3664
  %3683 = landingpad { ptr, i32 }
          cleanup
  br label %3689

3684:                                             ; preds = %3670
  %3685 = landingpad { ptr, i32 }
          cleanup
  br label %3688

3686:                                             ; preds = %3671
  %3687 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %511) #9
  br label %3688

3688:                                             ; preds = %3686, %3684
  %.pn2008 = phi { ptr, i32 } [ %3687, %3686 ], [ %3685, %3684 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %512) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %512) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %511) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %510) #9
  br label %3689

3689:                                             ; preds = %3688, %3682
  %.pn2008.pn = phi { ptr, i32 } [ %.pn2008, %3688 ], [ %3683, %3682 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %510) #9
  br label %3722

3690:                                             ; preds = %3672
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %513) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %513)
          to label %3691 unwind label %3696

3691:                                             ; preds = %3690
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %514) #9
  %3692 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %509)
          to label %3693 unwind label %3698

3693:                                             ; preds = %3691
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %514, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 140, ptr noundef %3692)
          to label %3694 unwind label %3698

3694:                                             ; preds = %3693
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %514, ptr noundef nonnull align 8 dereferenceable(8) %513)
          to label %3695 unwind label %3700

3695:                                             ; preds = %3694
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %514) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %514) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %513) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %513) #9
  br label %3704

3696:                                             ; preds = %3690
  %3697 = landingpad { ptr, i32 }
          cleanup
  br label %3703

3698:                                             ; preds = %3693, %3691
  %3699 = landingpad { ptr, i32 }
          cleanup
  br label %3702

3700:                                             ; preds = %3694
  %3701 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %514) #9
  br label %3702

3702:                                             ; preds = %3700, %3698
  %.pn2011 = phi { ptr, i32 } [ %3701, %3700 ], [ %3699, %3698 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %514) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %513) #9
  br label %3703

3703:                                             ; preds = %3702, %3696
  %.pn2011.pn = phi { ptr, i32 } [ %.pn2011, %3702 ], [ %3697, %3696 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %513) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %509) #9
  br label %3722

3704:                                             ; preds = %3672, %3695
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %509) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %509) #9
  call void @_ZdaPv(ptr noundef nonnull %3663) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %507) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %507) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %515) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %515)
  %3705 = getelementptr inbounds i8, ptr %515, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3705, ptr noundef nonnull @.str.53, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3706 unwind label %3724

3706:                                             ; preds = %3704
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %516) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %516, ptr noundef nonnull align 8 dereferenceable(128) %515)
          to label %3707 unwind label %3726

3707:                                             ; preds = %3706
  %3708 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %516) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %516) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %516) #9
  %3709 = shl i64 %3708, 32
  %sext2019 = add i64 %3709, 12884901888
  %3710 = ashr exact i64 %sext2019, 32
  %3711 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3710) #10
          to label %3712 unwind label %3728

3712:                                             ; preds = %3707
  %sext2018 = add i64 %3709, 8589934592
  %3713 = ashr exact i64 %sext2018, 32
  %3714 = getelementptr inbounds i8, ptr %3711, i64 %3713
  store i8 0, ptr %3714, align 1, !tbaa !9
  %sext2020 = add i64 %3709, 4294967296
  %3715 = ashr exact i64 %sext2020, 32
  %3716 = load double, ptr %2, align 8, !tbaa !5
  %3717 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3711, i64 noundef %3715, ptr noundef nonnull @.str.53, double noundef %3716) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %517) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %518) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %518, ptr noundef nonnull align 8 dereferenceable(128) %515)
          to label %3718 unwind label %3730

3718:                                             ; preds = %3712
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %519) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %520) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %520) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %519, ptr noundef nonnull %3711, ptr noundef nonnull align 1 dereferenceable(1) %520)
          to label %3719 unwind label %3732

3719:                                             ; preds = %3718
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %517, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %518, ptr noundef nonnull align 8 dereferenceable(32) %519)
          to label %3720 unwind label %3734

3720:                                             ; preds = %3719
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %519) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %520) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %520) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %519) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %518) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %518) #9
  %3721 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %517)
  br i1 %3721, label %3752, label %3738

3722:                                             ; preds = %3703, %3689
  %.pn2011.pn.pn = phi { ptr, i32 } [ %.pn2011.pn, %3703 ], [ %.pn2008.pn, %3689 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %509) #9
  br label %3723

3723:                                             ; preds = %3678, %3722, %3680, %3676
  %.pn2011.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3677, %3676 ], [ %3679, %3678 ], [ %.pn2011.pn.pn, %3722 ], [ %3681, %3680 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %507) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %507) #9
  br label %4427

3724:                                             ; preds = %3704
  %3725 = landingpad { ptr, i32 }
          cleanup
  br label %3771

3726:                                             ; preds = %3706
  %3727 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %516) #9
  br label %3771

3728:                                             ; preds = %3707
  %3729 = landingpad { ptr, i32 }
          cleanup
  br label %3771

3730:                                             ; preds = %3712
  %3731 = landingpad { ptr, i32 }
          cleanup
  br label %3737

3732:                                             ; preds = %3718
  %3733 = landingpad { ptr, i32 }
          cleanup
  br label %3736

3734:                                             ; preds = %3719
  %3735 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %519) #9
  br label %3736

3736:                                             ; preds = %3734, %3732
  %.pn2021 = phi { ptr, i32 } [ %3735, %3734 ], [ %3733, %3732 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %520) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %520) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %519) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %518) #9
  br label %3737

3737:                                             ; preds = %3736, %3730
  %.pn2021.pn = phi { ptr, i32 } [ %.pn2021, %3736 ], [ %3731, %3730 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %518) #9
  br label %3770

3738:                                             ; preds = %3720
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %521) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %521)
          to label %3739 unwind label %3744

3739:                                             ; preds = %3738
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %522) #9
  %3740 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %517)
          to label %3741 unwind label %3746

3741:                                             ; preds = %3739
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %522, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 141, ptr noundef %3740)
          to label %3742 unwind label %3746

3742:                                             ; preds = %3741
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %522, ptr noundef nonnull align 8 dereferenceable(8) %521)
          to label %3743 unwind label %3748

3743:                                             ; preds = %3742
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %522) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %522) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %521) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %521) #9
  br label %3752

3744:                                             ; preds = %3738
  %3745 = landingpad { ptr, i32 }
          cleanup
  br label %3751

3746:                                             ; preds = %3741, %3739
  %3747 = landingpad { ptr, i32 }
          cleanup
  br label %3750

3748:                                             ; preds = %3742
  %3749 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %522) #9
  br label %3750

3750:                                             ; preds = %3748, %3746
  %.pn2024 = phi { ptr, i32 } [ %3749, %3748 ], [ %3747, %3746 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %522) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %521) #9
  br label %3751

3751:                                             ; preds = %3750, %3744
  %.pn2024.pn = phi { ptr, i32 } [ %.pn2024, %3750 ], [ %3745, %3744 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %521) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %517) #9
  br label %3770

3752:                                             ; preds = %3720, %3743
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %517) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %517) #9
  call void @_ZdaPv(ptr noundef nonnull %3711) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %515) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %515) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %523) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %523)
  %3753 = getelementptr inbounds i8, ptr %523, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3753, ptr noundef nonnull @.str.54, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3754 unwind label %3772

3754:                                             ; preds = %3752
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %524) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %524, ptr noundef nonnull align 8 dereferenceable(128) %523)
          to label %3755 unwind label %3774

3755:                                             ; preds = %3754
  %3756 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %524) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %524) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %524) #9
  %3757 = shl i64 %3756, 32
  %sext2032 = add i64 %3757, 12884901888
  %3758 = ashr exact i64 %sext2032, 32
  %3759 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3758) #10
          to label %3760 unwind label %3776

3760:                                             ; preds = %3755
  %sext2031 = add i64 %3757, 8589934592
  %3761 = ashr exact i64 %sext2031, 32
  %3762 = getelementptr inbounds i8, ptr %3759, i64 %3761
  store i8 0, ptr %3762, align 1, !tbaa !9
  %sext2033 = add i64 %3757, 4294967296
  %3763 = ashr exact i64 %sext2033, 32
  %3764 = load double, ptr %2, align 8, !tbaa !5
  %3765 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3759, i64 noundef %3763, ptr noundef nonnull @.str.54, double noundef %3764) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %525) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %526) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %526, ptr noundef nonnull align 8 dereferenceable(128) %523)
          to label %3766 unwind label %3778

3766:                                             ; preds = %3760
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %527) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %528) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %528) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %527, ptr noundef nonnull %3759, ptr noundef nonnull align 1 dereferenceable(1) %528)
          to label %3767 unwind label %3780

3767:                                             ; preds = %3766
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %525, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %526, ptr noundef nonnull align 8 dereferenceable(32) %527)
          to label %3768 unwind label %3782

3768:                                             ; preds = %3767
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %527) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %528) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %528) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %527) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %526) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %526) #9
  %3769 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %525)
  br i1 %3769, label %3800, label %3786

3770:                                             ; preds = %3751, %3737
  %.pn2024.pn.pn = phi { ptr, i32 } [ %.pn2024.pn, %3751 ], [ %.pn2021.pn, %3737 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %517) #9
  br label %3771

3771:                                             ; preds = %3726, %3770, %3728, %3724
  %.pn2024.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3725, %3724 ], [ %3727, %3726 ], [ %.pn2024.pn.pn, %3770 ], [ %3729, %3728 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %515) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %515) #9
  br label %4427

3772:                                             ; preds = %3752
  %3773 = landingpad { ptr, i32 }
          cleanup
  br label %3819

3774:                                             ; preds = %3754
  %3775 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %524) #9
  br label %3819

3776:                                             ; preds = %3755
  %3777 = landingpad { ptr, i32 }
          cleanup
  br label %3819

3778:                                             ; preds = %3760
  %3779 = landingpad { ptr, i32 }
          cleanup
  br label %3785

3780:                                             ; preds = %3766
  %3781 = landingpad { ptr, i32 }
          cleanup
  br label %3784

3782:                                             ; preds = %3767
  %3783 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %527) #9
  br label %3784

3784:                                             ; preds = %3782, %3780
  %.pn2034 = phi { ptr, i32 } [ %3783, %3782 ], [ %3781, %3780 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %528) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %528) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %527) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %526) #9
  br label %3785

3785:                                             ; preds = %3784, %3778
  %.pn2034.pn = phi { ptr, i32 } [ %.pn2034, %3784 ], [ %3779, %3778 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %526) #9
  br label %3818

3786:                                             ; preds = %3768
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %529) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %529)
          to label %3787 unwind label %3792

3787:                                             ; preds = %3786
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %530) #9
  %3788 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %525)
          to label %3789 unwind label %3794

3789:                                             ; preds = %3787
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %530, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 142, ptr noundef %3788)
          to label %3790 unwind label %3794

3790:                                             ; preds = %3789
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %530, ptr noundef nonnull align 8 dereferenceable(8) %529)
          to label %3791 unwind label %3796

3791:                                             ; preds = %3790
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %530) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %530) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %529) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %529) #9
  br label %3800

3792:                                             ; preds = %3786
  %3793 = landingpad { ptr, i32 }
          cleanup
  br label %3799

3794:                                             ; preds = %3789, %3787
  %3795 = landingpad { ptr, i32 }
          cleanup
  br label %3798

3796:                                             ; preds = %3790
  %3797 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %530) #9
  br label %3798

3798:                                             ; preds = %3796, %3794
  %.pn2037 = phi { ptr, i32 } [ %3797, %3796 ], [ %3795, %3794 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %530) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %529) #9
  br label %3799

3799:                                             ; preds = %3798, %3792
  %.pn2037.pn = phi { ptr, i32 } [ %.pn2037, %3798 ], [ %3793, %3792 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %529) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %525) #9
  br label %3818

3800:                                             ; preds = %3768, %3791
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %525) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %525) #9
  call void @_ZdaPv(ptr noundef nonnull %3759) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %523) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %523) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %531) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %531)
  %3801 = getelementptr inbounds i8, ptr %531, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3801, ptr noundef nonnull @.str.55, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3802 unwind label %3820

3802:                                             ; preds = %3800
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %532) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %532, ptr noundef nonnull align 8 dereferenceable(128) %531)
          to label %3803 unwind label %3822

3803:                                             ; preds = %3802
  %3804 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %532) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %532) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %532) #9
  %3805 = shl i64 %3804, 32
  %sext2045 = add i64 %3805, 12884901888
  %3806 = ashr exact i64 %sext2045, 32
  %3807 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3806) #10
          to label %3808 unwind label %3824

3808:                                             ; preds = %3803
  %sext2044 = add i64 %3805, 8589934592
  %3809 = ashr exact i64 %sext2044, 32
  %3810 = getelementptr inbounds i8, ptr %3807, i64 %3809
  store i8 0, ptr %3810, align 1, !tbaa !9
  %sext2046 = add i64 %3805, 4294967296
  %3811 = ashr exact i64 %sext2046, 32
  %3812 = load double, ptr %2, align 8, !tbaa !5
  %3813 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3807, i64 noundef %3811, ptr noundef nonnull @.str.55, double noundef %3812) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %533) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %534) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %534, ptr noundef nonnull align 8 dereferenceable(128) %531)
          to label %3814 unwind label %3826

3814:                                             ; preds = %3808
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %535) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %536) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %536) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %535, ptr noundef nonnull %3807, ptr noundef nonnull align 1 dereferenceable(1) %536)
          to label %3815 unwind label %3828

3815:                                             ; preds = %3814
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %533, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %534, ptr noundef nonnull align 8 dereferenceable(32) %535)
          to label %3816 unwind label %3830

3816:                                             ; preds = %3815
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %535) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %536) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %536) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %535) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %534) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %534) #9
  %3817 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %533)
  br i1 %3817, label %3848, label %3834

3818:                                             ; preds = %3799, %3785
  %.pn2037.pn.pn = phi { ptr, i32 } [ %.pn2037.pn, %3799 ], [ %.pn2034.pn, %3785 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %525) #9
  br label %3819

3819:                                             ; preds = %3774, %3818, %3776, %3772
  %.pn2037.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3773, %3772 ], [ %3775, %3774 ], [ %.pn2037.pn.pn, %3818 ], [ %3777, %3776 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %523) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %523) #9
  br label %4427

3820:                                             ; preds = %3800
  %3821 = landingpad { ptr, i32 }
          cleanup
  br label %3867

3822:                                             ; preds = %3802
  %3823 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %532) #9
  br label %3867

3824:                                             ; preds = %3803
  %3825 = landingpad { ptr, i32 }
          cleanup
  br label %3867

3826:                                             ; preds = %3808
  %3827 = landingpad { ptr, i32 }
          cleanup
  br label %3833

3828:                                             ; preds = %3814
  %3829 = landingpad { ptr, i32 }
          cleanup
  br label %3832

3830:                                             ; preds = %3815
  %3831 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %535) #9
  br label %3832

3832:                                             ; preds = %3830, %3828
  %.pn2047 = phi { ptr, i32 } [ %3831, %3830 ], [ %3829, %3828 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %536) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %536) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %535) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %534) #9
  br label %3833

3833:                                             ; preds = %3832, %3826
  %.pn2047.pn = phi { ptr, i32 } [ %.pn2047, %3832 ], [ %3827, %3826 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %534) #9
  br label %3866

3834:                                             ; preds = %3816
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %537) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %537)
          to label %3835 unwind label %3840

3835:                                             ; preds = %3834
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %538) #9
  %3836 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %533)
          to label %3837 unwind label %3842

3837:                                             ; preds = %3835
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %538, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 143, ptr noundef %3836)
          to label %3838 unwind label %3842

3838:                                             ; preds = %3837
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %538, ptr noundef nonnull align 8 dereferenceable(8) %537)
          to label %3839 unwind label %3844

3839:                                             ; preds = %3838
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %538) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %538) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %537) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %537) #9
  br label %3848

3840:                                             ; preds = %3834
  %3841 = landingpad { ptr, i32 }
          cleanup
  br label %3847

3842:                                             ; preds = %3837, %3835
  %3843 = landingpad { ptr, i32 }
          cleanup
  br label %3846

3844:                                             ; preds = %3838
  %3845 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %538) #9
  br label %3846

3846:                                             ; preds = %3844, %3842
  %.pn2050 = phi { ptr, i32 } [ %3845, %3844 ], [ %3843, %3842 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %538) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %537) #9
  br label %3847

3847:                                             ; preds = %3846, %3840
  %.pn2050.pn = phi { ptr, i32 } [ %.pn2050, %3846 ], [ %3841, %3840 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %537) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %533) #9
  br label %3866

3848:                                             ; preds = %3816, %3839
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %533) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %533) #9
  call void @_ZdaPv(ptr noundef nonnull %3807) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %531) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %531) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %539) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %539)
  %3849 = getelementptr inbounds i8, ptr %539, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3849, ptr noundef nonnull @.str.56, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3850 unwind label %3868

3850:                                             ; preds = %3848
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %540) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %540, ptr noundef nonnull align 8 dereferenceable(128) %539)
          to label %3851 unwind label %3870

3851:                                             ; preds = %3850
  %3852 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %540) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %540) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %540) #9
  %3853 = shl i64 %3852, 32
  %sext2058 = add i64 %3853, 12884901888
  %3854 = ashr exact i64 %sext2058, 32
  %3855 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3854) #10
          to label %3856 unwind label %3872

3856:                                             ; preds = %3851
  %sext2057 = add i64 %3853, 8589934592
  %3857 = ashr exact i64 %sext2057, 32
  %3858 = getelementptr inbounds i8, ptr %3855, i64 %3857
  store i8 0, ptr %3858, align 1, !tbaa !9
  %sext2059 = add i64 %3853, 4294967296
  %3859 = ashr exact i64 %sext2059, 32
  %3860 = load double, ptr %2, align 8, !tbaa !5
  %3861 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3855, i64 noundef %3859, ptr noundef nonnull @.str.56, double noundef %3860) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %541) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %542) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %542, ptr noundef nonnull align 8 dereferenceable(128) %539)
          to label %3862 unwind label %3874

3862:                                             ; preds = %3856
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %543) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %544) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %544) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %543, ptr noundef nonnull %3855, ptr noundef nonnull align 1 dereferenceable(1) %544)
          to label %3863 unwind label %3876

3863:                                             ; preds = %3862
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %541, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %542, ptr noundef nonnull align 8 dereferenceable(32) %543)
          to label %3864 unwind label %3878

3864:                                             ; preds = %3863
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %543) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %544) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %544) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %543) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %542) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %542) #9
  %3865 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %541)
  br i1 %3865, label %3896, label %3882

3866:                                             ; preds = %3847, %3833
  %.pn2050.pn.pn = phi { ptr, i32 } [ %.pn2050.pn, %3847 ], [ %.pn2047.pn, %3833 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %533) #9
  br label %3867

3867:                                             ; preds = %3822, %3866, %3824, %3820
  %.pn2050.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3821, %3820 ], [ %3823, %3822 ], [ %.pn2050.pn.pn, %3866 ], [ %3825, %3824 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %531) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %531) #9
  br label %4427

3868:                                             ; preds = %3848
  %3869 = landingpad { ptr, i32 }
          cleanup
  br label %3915

3870:                                             ; preds = %3850
  %3871 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %540) #9
  br label %3915

3872:                                             ; preds = %3851
  %3873 = landingpad { ptr, i32 }
          cleanup
  br label %3915

3874:                                             ; preds = %3856
  %3875 = landingpad { ptr, i32 }
          cleanup
  br label %3881

3876:                                             ; preds = %3862
  %3877 = landingpad { ptr, i32 }
          cleanup
  br label %3880

3878:                                             ; preds = %3863
  %3879 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %543) #9
  br label %3880

3880:                                             ; preds = %3878, %3876
  %.pn2060 = phi { ptr, i32 } [ %3879, %3878 ], [ %3877, %3876 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %544) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %544) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %543) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %542) #9
  br label %3881

3881:                                             ; preds = %3880, %3874
  %.pn2060.pn = phi { ptr, i32 } [ %.pn2060, %3880 ], [ %3875, %3874 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %542) #9
  br label %3914

3882:                                             ; preds = %3864
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %545) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %545)
          to label %3883 unwind label %3888

3883:                                             ; preds = %3882
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %546) #9
  %3884 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %541)
          to label %3885 unwind label %3890

3885:                                             ; preds = %3883
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %546, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 144, ptr noundef %3884)
          to label %3886 unwind label %3890

3886:                                             ; preds = %3885
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %546, ptr noundef nonnull align 8 dereferenceable(8) %545)
          to label %3887 unwind label %3892

3887:                                             ; preds = %3886
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %546) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %546) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %545) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %545) #9
  br label %3896

3888:                                             ; preds = %3882
  %3889 = landingpad { ptr, i32 }
          cleanup
  br label %3895

3890:                                             ; preds = %3885, %3883
  %3891 = landingpad { ptr, i32 }
          cleanup
  br label %3894

3892:                                             ; preds = %3886
  %3893 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %546) #9
  br label %3894

3894:                                             ; preds = %3892, %3890
  %.pn2063 = phi { ptr, i32 } [ %3893, %3892 ], [ %3891, %3890 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %546) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %545) #9
  br label %3895

3895:                                             ; preds = %3894, %3888
  %.pn2063.pn = phi { ptr, i32 } [ %.pn2063, %3894 ], [ %3889, %3888 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %545) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %541) #9
  br label %3914

3896:                                             ; preds = %3864, %3887
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %541) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %541) #9
  call void @_ZdaPv(ptr noundef nonnull %3855) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %539) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %539) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %547) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %547)
  %3897 = getelementptr inbounds i8, ptr %547, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3897, ptr noundef nonnull @.str.42, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3898 unwind label %3916

3898:                                             ; preds = %3896
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %548) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %548, ptr noundef nonnull align 8 dereferenceable(128) %547)
          to label %3899 unwind label %3918

3899:                                             ; preds = %3898
  %3900 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %548) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %548) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %548) #9
  %3901 = shl i64 %3900, 32
  %sext2071 = add i64 %3901, 12884901888
  %3902 = ashr exact i64 %sext2071, 32
  %3903 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3902) #10
          to label %3904 unwind label %3920

3904:                                             ; preds = %3899
  %sext2070 = add i64 %3901, 8589934592
  %3905 = ashr exact i64 %sext2070, 32
  %3906 = getelementptr inbounds i8, ptr %3903, i64 %3905
  store i8 0, ptr %3906, align 1, !tbaa !9
  %sext2072 = add i64 %3901, 4294967296
  %3907 = ashr exact i64 %sext2072, 32
  %3908 = load double, ptr %2, align 8, !tbaa !5
  %3909 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3903, i64 noundef %3907, ptr noundef nonnull @.str.42, double noundef %3908) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %549) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %550) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %550, ptr noundef nonnull align 8 dereferenceable(128) %547)
          to label %3910 unwind label %3922

3910:                                             ; preds = %3904
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %551) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %552) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %552) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %551, ptr noundef nonnull %3903, ptr noundef nonnull align 1 dereferenceable(1) %552)
          to label %3911 unwind label %3924

3911:                                             ; preds = %3910
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %549, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %550, ptr noundef nonnull align 8 dereferenceable(32) %551)
          to label %3912 unwind label %3926

3912:                                             ; preds = %3911
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %551) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %552) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %552) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %551) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %550) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %550) #9
  %3913 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %549)
  br i1 %3913, label %3944, label %3930

3914:                                             ; preds = %3895, %3881
  %.pn2063.pn.pn = phi { ptr, i32 } [ %.pn2063.pn, %3895 ], [ %.pn2060.pn, %3881 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %541) #9
  br label %3915

3915:                                             ; preds = %3870, %3914, %3872, %3868
  %.pn2063.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3869, %3868 ], [ %3871, %3870 ], [ %.pn2063.pn.pn, %3914 ], [ %3873, %3872 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %539) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %539) #9
  br label %4427

3916:                                             ; preds = %3896
  %3917 = landingpad { ptr, i32 }
          cleanup
  br label %3963

3918:                                             ; preds = %3898
  %3919 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %548) #9
  br label %3963

3920:                                             ; preds = %3899
  %3921 = landingpad { ptr, i32 }
          cleanup
  br label %3963

3922:                                             ; preds = %3904
  %3923 = landingpad { ptr, i32 }
          cleanup
  br label %3929

3924:                                             ; preds = %3910
  %3925 = landingpad { ptr, i32 }
          cleanup
  br label %3928

3926:                                             ; preds = %3911
  %3927 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %551) #9
  br label %3928

3928:                                             ; preds = %3926, %3924
  %.pn2073 = phi { ptr, i32 } [ %3927, %3926 ], [ %3925, %3924 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %552) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %552) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %551) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %550) #9
  br label %3929

3929:                                             ; preds = %3928, %3922
  %.pn2073.pn = phi { ptr, i32 } [ %.pn2073, %3928 ], [ %3923, %3922 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %550) #9
  br label %3962

3930:                                             ; preds = %3912
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %553) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %553)
          to label %3931 unwind label %3936

3931:                                             ; preds = %3930
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %554) #9
  %3932 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %549)
          to label %3933 unwind label %3938

3933:                                             ; preds = %3931
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %554, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 145, ptr noundef %3932)
          to label %3934 unwind label %3938

3934:                                             ; preds = %3933
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %554, ptr noundef nonnull align 8 dereferenceable(8) %553)
          to label %3935 unwind label %3940

3935:                                             ; preds = %3934
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %554) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %554) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %553) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %553) #9
  br label %3944

3936:                                             ; preds = %3930
  %3937 = landingpad { ptr, i32 }
          cleanup
  br label %3943

3938:                                             ; preds = %3933, %3931
  %3939 = landingpad { ptr, i32 }
          cleanup
  br label %3942

3940:                                             ; preds = %3934
  %3941 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %554) #9
  br label %3942

3942:                                             ; preds = %3940, %3938
  %.pn2076 = phi { ptr, i32 } [ %3941, %3940 ], [ %3939, %3938 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %554) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %553) #9
  br label %3943

3943:                                             ; preds = %3942, %3936
  %.pn2076.pn = phi { ptr, i32 } [ %.pn2076, %3942 ], [ %3937, %3936 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %553) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %549) #9
  br label %3962

3944:                                             ; preds = %3912, %3935
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %549) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %549) #9
  call void @_ZdaPv(ptr noundef nonnull %3903) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %547) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %547) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %555) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %555)
  %3945 = getelementptr inbounds i8, ptr %555, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3945, ptr noundef nonnull @.str.57, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3946 unwind label %3964

3946:                                             ; preds = %3944
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %556) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %556, ptr noundef nonnull align 8 dereferenceable(128) %555)
          to label %3947 unwind label %3966

3947:                                             ; preds = %3946
  %3948 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %556) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %556) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %556) #9
  %3949 = shl i64 %3948, 32
  %sext2084 = add i64 %3949, 12884901888
  %3950 = ashr exact i64 %sext2084, 32
  %3951 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3950) #10
          to label %3952 unwind label %3968

3952:                                             ; preds = %3947
  %sext2083 = add i64 %3949, 8589934592
  %3953 = ashr exact i64 %sext2083, 32
  %3954 = getelementptr inbounds i8, ptr %3951, i64 %3953
  store i8 0, ptr %3954, align 1, !tbaa !9
  %sext2085 = add i64 %3949, 4294967296
  %3955 = ashr exact i64 %sext2085, 32
  %3956 = load double, ptr %2, align 8, !tbaa !5
  %3957 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3951, i64 noundef %3955, ptr noundef nonnull @.str.57, double noundef %3956) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %557) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %558) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %558, ptr noundef nonnull align 8 dereferenceable(128) %555)
          to label %3958 unwind label %3970

3958:                                             ; preds = %3952
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %559) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %560) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %560) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %559, ptr noundef nonnull %3951, ptr noundef nonnull align 1 dereferenceable(1) %560)
          to label %3959 unwind label %3972

3959:                                             ; preds = %3958
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %557, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %558, ptr noundef nonnull align 8 dereferenceable(32) %559)
          to label %3960 unwind label %3974

3960:                                             ; preds = %3959
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %559) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %560) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %560) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %559) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %558) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %558) #9
  %3961 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %557)
  br i1 %3961, label %3992, label %3978

3962:                                             ; preds = %3943, %3929
  %.pn2076.pn.pn = phi { ptr, i32 } [ %.pn2076.pn, %3943 ], [ %.pn2073.pn, %3929 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %549) #9
  br label %3963

3963:                                             ; preds = %3918, %3962, %3920, %3916
  %.pn2076.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3917, %3916 ], [ %3919, %3918 ], [ %.pn2076.pn.pn, %3962 ], [ %3921, %3920 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %547) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %547) #9
  br label %4427

3964:                                             ; preds = %3944
  %3965 = landingpad { ptr, i32 }
          cleanup
  br label %4011

3966:                                             ; preds = %3946
  %3967 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %556) #9
  br label %4011

3968:                                             ; preds = %3947
  %3969 = landingpad { ptr, i32 }
          cleanup
  br label %4011

3970:                                             ; preds = %3952
  %3971 = landingpad { ptr, i32 }
          cleanup
  br label %3977

3972:                                             ; preds = %3958
  %3973 = landingpad { ptr, i32 }
          cleanup
  br label %3976

3974:                                             ; preds = %3959
  %3975 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %559) #9
  br label %3976

3976:                                             ; preds = %3974, %3972
  %.pn2086 = phi { ptr, i32 } [ %3975, %3974 ], [ %3973, %3972 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %560) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %560) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %559) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %558) #9
  br label %3977

3977:                                             ; preds = %3976, %3970
  %.pn2086.pn = phi { ptr, i32 } [ %.pn2086, %3976 ], [ %3971, %3970 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %558) #9
  br label %4010

3978:                                             ; preds = %3960
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %561) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %561)
          to label %3979 unwind label %3984

3979:                                             ; preds = %3978
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %562) #9
  %3980 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %557)
          to label %3981 unwind label %3986

3981:                                             ; preds = %3979
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %562, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 146, ptr noundef %3980)
          to label %3982 unwind label %3986

3982:                                             ; preds = %3981
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %562, ptr noundef nonnull align 8 dereferenceable(8) %561)
          to label %3983 unwind label %3988

3983:                                             ; preds = %3982
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %562) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %562) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %561) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %561) #9
  br label %3992

3984:                                             ; preds = %3978
  %3985 = landingpad { ptr, i32 }
          cleanup
  br label %3991

3986:                                             ; preds = %3981, %3979
  %3987 = landingpad { ptr, i32 }
          cleanup
  br label %3990

3988:                                             ; preds = %3982
  %3989 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %562) #9
  br label %3990

3990:                                             ; preds = %3988, %3986
  %.pn2089 = phi { ptr, i32 } [ %3989, %3988 ], [ %3987, %3986 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %562) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %561) #9
  br label %3991

3991:                                             ; preds = %3990, %3984
  %.pn2089.pn = phi { ptr, i32 } [ %.pn2089, %3990 ], [ %3985, %3984 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %561) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %557) #9
  br label %4010

3992:                                             ; preds = %3960, %3983
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %557) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %557) #9
  call void @_ZdaPv(ptr noundef nonnull %3951) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %555) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %555) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %563) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %563)
  %3993 = getelementptr inbounds i8, ptr %563, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %3993, ptr noundef nonnull @.str.58, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %3994 unwind label %4012

3994:                                             ; preds = %3992
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %564) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %564, ptr noundef nonnull align 8 dereferenceable(128) %563)
          to label %3995 unwind label %4014

3995:                                             ; preds = %3994
  %3996 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %564) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %564) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %564) #9
  %3997 = shl i64 %3996, 32
  %sext2097 = add i64 %3997, 12884901888
  %3998 = ashr exact i64 %sext2097, 32
  %3999 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %3998) #10
          to label %4000 unwind label %4016

4000:                                             ; preds = %3995
  %sext2096 = add i64 %3997, 8589934592
  %4001 = ashr exact i64 %sext2096, 32
  %4002 = getelementptr inbounds i8, ptr %3999, i64 %4001
  store i8 0, ptr %4002, align 1, !tbaa !9
  %sext2098 = add i64 %3997, 4294967296
  %4003 = ashr exact i64 %sext2098, 32
  %4004 = load double, ptr %2, align 8, !tbaa !5
  %4005 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %3999, i64 noundef %4003, ptr noundef nonnull @.str.58, double noundef %4004) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %565) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %566) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %566, ptr noundef nonnull align 8 dereferenceable(128) %563)
          to label %4006 unwind label %4018

4006:                                             ; preds = %4000
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %567) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %568) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %568) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %567, ptr noundef nonnull %3999, ptr noundef nonnull align 1 dereferenceable(1) %568)
          to label %4007 unwind label %4020

4007:                                             ; preds = %4006
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %565, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %566, ptr noundef nonnull align 8 dereferenceable(32) %567)
          to label %4008 unwind label %4022

4008:                                             ; preds = %4007
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %567) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %568) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %568) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %567) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %566) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %566) #9
  %4009 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %565)
  br i1 %4009, label %4040, label %4026

4010:                                             ; preds = %3991, %3977
  %.pn2089.pn.pn = phi { ptr, i32 } [ %.pn2089.pn, %3991 ], [ %.pn2086.pn, %3977 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %557) #9
  br label %4011

4011:                                             ; preds = %3966, %4010, %3968, %3964
  %.pn2089.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %3965, %3964 ], [ %3967, %3966 ], [ %.pn2089.pn.pn, %4010 ], [ %3969, %3968 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %555) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %555) #9
  br label %4427

4012:                                             ; preds = %3992
  %4013 = landingpad { ptr, i32 }
          cleanup
  br label %4059

4014:                                             ; preds = %3994
  %4015 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %564) #9
  br label %4059

4016:                                             ; preds = %3995
  %4017 = landingpad { ptr, i32 }
          cleanup
  br label %4059

4018:                                             ; preds = %4000
  %4019 = landingpad { ptr, i32 }
          cleanup
  br label %4025

4020:                                             ; preds = %4006
  %4021 = landingpad { ptr, i32 }
          cleanup
  br label %4024

4022:                                             ; preds = %4007
  %4023 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %567) #9
  br label %4024

4024:                                             ; preds = %4022, %4020
  %.pn2099 = phi { ptr, i32 } [ %4023, %4022 ], [ %4021, %4020 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %568) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %568) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %567) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %566) #9
  br label %4025

4025:                                             ; preds = %4024, %4018
  %.pn2099.pn = phi { ptr, i32 } [ %.pn2099, %4024 ], [ %4019, %4018 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %566) #9
  br label %4058

4026:                                             ; preds = %4008
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %569) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %569)
          to label %4027 unwind label %4032

4027:                                             ; preds = %4026
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %570) #9
  %4028 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %565)
          to label %4029 unwind label %4034

4029:                                             ; preds = %4027
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %570, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 147, ptr noundef %4028)
          to label %4030 unwind label %4034

4030:                                             ; preds = %4029
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %570, ptr noundef nonnull align 8 dereferenceable(8) %569)
          to label %4031 unwind label %4036

4031:                                             ; preds = %4030
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %570) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %570) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %569) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %569) #9
  br label %4040

4032:                                             ; preds = %4026
  %4033 = landingpad { ptr, i32 }
          cleanup
  br label %4039

4034:                                             ; preds = %4029, %4027
  %4035 = landingpad { ptr, i32 }
          cleanup
  br label %4038

4036:                                             ; preds = %4030
  %4037 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %570) #9
  br label %4038

4038:                                             ; preds = %4036, %4034
  %.pn2102 = phi { ptr, i32 } [ %4037, %4036 ], [ %4035, %4034 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %570) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %569) #9
  br label %4039

4039:                                             ; preds = %4038, %4032
  %.pn2102.pn = phi { ptr, i32 } [ %.pn2102, %4038 ], [ %4033, %4032 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %569) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %565) #9
  br label %4058

4040:                                             ; preds = %4008, %4031
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %565) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %565) #9
  call void @_ZdaPv(ptr noundef nonnull %3999) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %563) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %563) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %571) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %571)
  %4041 = getelementptr inbounds i8, ptr %571, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4041, ptr noundef nonnull @.str.59, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %4042 unwind label %4060

4042:                                             ; preds = %4040
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %572) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %572, ptr noundef nonnull align 8 dereferenceable(128) %571)
          to label %4043 unwind label %4062

4043:                                             ; preds = %4042
  %4044 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %572) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %572) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %572) #9
  %4045 = shl i64 %4044, 32
  %sext2110 = add i64 %4045, 12884901888
  %4046 = ashr exact i64 %sext2110, 32
  %4047 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4046) #10
          to label %4048 unwind label %4064

4048:                                             ; preds = %4043
  %sext2109 = add i64 %4045, 8589934592
  %4049 = ashr exact i64 %sext2109, 32
  %4050 = getelementptr inbounds i8, ptr %4047, i64 %4049
  store i8 0, ptr %4050, align 1, !tbaa !9
  %sext2111 = add i64 %4045, 4294967296
  %4051 = ashr exact i64 %sext2111, 32
  %4052 = load double, ptr %2, align 8, !tbaa !5
  %4053 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %4047, i64 noundef %4051, ptr noundef nonnull @.str.59, double noundef %4052) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %573) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %574) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %574, ptr noundef nonnull align 8 dereferenceable(128) %571)
          to label %4054 unwind label %4066

4054:                                             ; preds = %4048
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %575) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %576) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %576) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %575, ptr noundef nonnull %4047, ptr noundef nonnull align 1 dereferenceable(1) %576)
          to label %4055 unwind label %4068

4055:                                             ; preds = %4054
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %573, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %574, ptr noundef nonnull align 8 dereferenceable(32) %575)
          to label %4056 unwind label %4070

4056:                                             ; preds = %4055
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %575) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %576) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %576) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %575) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %574) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %574) #9
  %4057 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %573)
  br i1 %4057, label %4088, label %4074

4058:                                             ; preds = %4039, %4025
  %.pn2102.pn.pn = phi { ptr, i32 } [ %.pn2102.pn, %4039 ], [ %.pn2099.pn, %4025 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %565) #9
  br label %4059

4059:                                             ; preds = %4014, %4058, %4016, %4012
  %.pn2102.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %4013, %4012 ], [ %4015, %4014 ], [ %.pn2102.pn.pn, %4058 ], [ %4017, %4016 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %563) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %563) #9
  br label %4427

4060:                                             ; preds = %4040
  %4061 = landingpad { ptr, i32 }
          cleanup
  br label %4107

4062:                                             ; preds = %4042
  %4063 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %572) #9
  br label %4107

4064:                                             ; preds = %4043
  %4065 = landingpad { ptr, i32 }
          cleanup
  br label %4107

4066:                                             ; preds = %4048
  %4067 = landingpad { ptr, i32 }
          cleanup
  br label %4073

4068:                                             ; preds = %4054
  %4069 = landingpad { ptr, i32 }
          cleanup
  br label %4072

4070:                                             ; preds = %4055
  %4071 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %575) #9
  br label %4072

4072:                                             ; preds = %4070, %4068
  %.pn2112 = phi { ptr, i32 } [ %4071, %4070 ], [ %4069, %4068 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %576) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %576) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %575) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %574) #9
  br label %4073

4073:                                             ; preds = %4072, %4066
  %.pn2112.pn = phi { ptr, i32 } [ %.pn2112, %4072 ], [ %4067, %4066 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %574) #9
  br label %4106

4074:                                             ; preds = %4056
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %577) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %577)
          to label %4075 unwind label %4080

4075:                                             ; preds = %4074
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %578) #9
  %4076 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %573)
          to label %4077 unwind label %4082

4077:                                             ; preds = %4075
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %578, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 148, ptr noundef %4076)
          to label %4078 unwind label %4082

4078:                                             ; preds = %4077
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %578, ptr noundef nonnull align 8 dereferenceable(8) %577)
          to label %4079 unwind label %4084

4079:                                             ; preds = %4078
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %578) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %578) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %577) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %577) #9
  br label %4088

4080:                                             ; preds = %4074
  %4081 = landingpad { ptr, i32 }
          cleanup
  br label %4087

4082:                                             ; preds = %4077, %4075
  %4083 = landingpad { ptr, i32 }
          cleanup
  br label %4086

4084:                                             ; preds = %4078
  %4085 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %578) #9
  br label %4086

4086:                                             ; preds = %4084, %4082
  %.pn2115 = phi { ptr, i32 } [ %4085, %4084 ], [ %4083, %4082 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %578) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %577) #9
  br label %4087

4087:                                             ; preds = %4086, %4080
  %.pn2115.pn = phi { ptr, i32 } [ %.pn2115, %4086 ], [ %4081, %4080 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %577) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %573) #9
  br label %4106

4088:                                             ; preds = %4056, %4079
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %573) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %573) #9
  call void @_ZdaPv(ptr noundef nonnull %4047) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %571) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %571) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %579) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %579)
  %4089 = getelementptr inbounds i8, ptr %579, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4089, ptr noundef nonnull @.str.60, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %4090 unwind label %4108

4090:                                             ; preds = %4088
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %580) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %580, ptr noundef nonnull align 8 dereferenceable(128) %579)
          to label %4091 unwind label %4110

4091:                                             ; preds = %4090
  %4092 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %580) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %580) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %580) #9
  %4093 = shl i64 %4092, 32
  %sext2123 = add i64 %4093, 12884901888
  %4094 = ashr exact i64 %sext2123, 32
  %4095 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4094) #10
          to label %4096 unwind label %4112

4096:                                             ; preds = %4091
  %sext2122 = add i64 %4093, 8589934592
  %4097 = ashr exact i64 %sext2122, 32
  %4098 = getelementptr inbounds i8, ptr %4095, i64 %4097
  store i8 0, ptr %4098, align 1, !tbaa !9
  %sext2124 = add i64 %4093, 4294967296
  %4099 = ashr exact i64 %sext2124, 32
  %4100 = load double, ptr %2, align 8, !tbaa !5
  %4101 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %4095, i64 noundef %4099, ptr noundef nonnull @.str.60, double noundef %4100) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %581) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %582) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %582, ptr noundef nonnull align 8 dereferenceable(128) %579)
          to label %4102 unwind label %4114

4102:                                             ; preds = %4096
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %583) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %584) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %584) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %583, ptr noundef nonnull %4095, ptr noundef nonnull align 1 dereferenceable(1) %584)
          to label %4103 unwind label %4116

4103:                                             ; preds = %4102
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %581, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %582, ptr noundef nonnull align 8 dereferenceable(32) %583)
          to label %4104 unwind label %4118

4104:                                             ; preds = %4103
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %583) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %584) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %584) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %583) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %582) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %582) #9
  %4105 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %581)
  br i1 %4105, label %4136, label %4122

4106:                                             ; preds = %4087, %4073
  %.pn2115.pn.pn = phi { ptr, i32 } [ %.pn2115.pn, %4087 ], [ %.pn2112.pn, %4073 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %573) #9
  br label %4107

4107:                                             ; preds = %4062, %4106, %4064, %4060
  %.pn2115.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %4061, %4060 ], [ %4063, %4062 ], [ %.pn2115.pn.pn, %4106 ], [ %4065, %4064 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %571) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %571) #9
  br label %4427

4108:                                             ; preds = %4088
  %4109 = landingpad { ptr, i32 }
          cleanup
  br label %4155

4110:                                             ; preds = %4090
  %4111 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %580) #9
  br label %4155

4112:                                             ; preds = %4091
  %4113 = landingpad { ptr, i32 }
          cleanup
  br label %4155

4114:                                             ; preds = %4096
  %4115 = landingpad { ptr, i32 }
          cleanup
  br label %4121

4116:                                             ; preds = %4102
  %4117 = landingpad { ptr, i32 }
          cleanup
  br label %4120

4118:                                             ; preds = %4103
  %4119 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %583) #9
  br label %4120

4120:                                             ; preds = %4118, %4116
  %.pn2125 = phi { ptr, i32 } [ %4119, %4118 ], [ %4117, %4116 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %584) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %584) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %583) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %582) #9
  br label %4121

4121:                                             ; preds = %4120, %4114
  %.pn2125.pn = phi { ptr, i32 } [ %.pn2125, %4120 ], [ %4115, %4114 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %582) #9
  br label %4154

4122:                                             ; preds = %4104
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %585) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %585)
          to label %4123 unwind label %4128

4123:                                             ; preds = %4122
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %586) #9
  %4124 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %581)
          to label %4125 unwind label %4130

4125:                                             ; preds = %4123
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %586, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 149, ptr noundef %4124)
          to label %4126 unwind label %4130

4126:                                             ; preds = %4125
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %586, ptr noundef nonnull align 8 dereferenceable(8) %585)
          to label %4127 unwind label %4132

4127:                                             ; preds = %4126
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %586) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %586) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %585) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %585) #9
  br label %4136

4128:                                             ; preds = %4122
  %4129 = landingpad { ptr, i32 }
          cleanup
  br label %4135

4130:                                             ; preds = %4125, %4123
  %4131 = landingpad { ptr, i32 }
          cleanup
  br label %4134

4132:                                             ; preds = %4126
  %4133 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %586) #9
  br label %4134

4134:                                             ; preds = %4132, %4130
  %.pn2128 = phi { ptr, i32 } [ %4133, %4132 ], [ %4131, %4130 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %586) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %585) #9
  br label %4135

4135:                                             ; preds = %4134, %4128
  %.pn2128.pn = phi { ptr, i32 } [ %.pn2128, %4134 ], [ %4129, %4128 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %585) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %581) #9
  br label %4154

4136:                                             ; preds = %4104, %4127
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %581) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %581) #9
  call void @_ZdaPv(ptr noundef nonnull %4095) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %579) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %579) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %587) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %587)
  %4137 = getelementptr inbounds i8, ptr %587, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4137, ptr noundef nonnull @.str.61, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %4138 unwind label %4156

4138:                                             ; preds = %4136
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %588) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %588, ptr noundef nonnull align 8 dereferenceable(128) %587)
          to label %4139 unwind label %4158

4139:                                             ; preds = %4138
  %4140 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %588) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %588) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %588) #9
  %4141 = shl i64 %4140, 32
  %sext2136 = add i64 %4141, 12884901888
  %4142 = ashr exact i64 %sext2136, 32
  %4143 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4142) #10
          to label %4144 unwind label %4160

4144:                                             ; preds = %4139
  %sext2135 = add i64 %4141, 8589934592
  %4145 = ashr exact i64 %sext2135, 32
  %4146 = getelementptr inbounds i8, ptr %4143, i64 %4145
  store i8 0, ptr %4146, align 1, !tbaa !9
  %sext2137 = add i64 %4141, 4294967296
  %4147 = ashr exact i64 %sext2137, 32
  %4148 = load double, ptr %2, align 8, !tbaa !5
  %4149 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %4143, i64 noundef %4147, ptr noundef nonnull @.str.61, double noundef %4148) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %589) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %590) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %590, ptr noundef nonnull align 8 dereferenceable(128) %587)
          to label %4150 unwind label %4162

4150:                                             ; preds = %4144
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %591) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %592) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %592) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %591, ptr noundef nonnull %4143, ptr noundef nonnull align 1 dereferenceable(1) %592)
          to label %4151 unwind label %4164

4151:                                             ; preds = %4150
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %589, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %590, ptr noundef nonnull align 8 dereferenceable(32) %591)
          to label %4152 unwind label %4166

4152:                                             ; preds = %4151
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %591) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %592) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %592) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %591) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %590) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %590) #9
  %4153 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %589)
  br i1 %4153, label %4184, label %4170

4154:                                             ; preds = %4135, %4121
  %.pn2128.pn.pn = phi { ptr, i32 } [ %.pn2128.pn, %4135 ], [ %.pn2125.pn, %4121 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %581) #9
  br label %4155

4155:                                             ; preds = %4110, %4154, %4112, %4108
  %.pn2128.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %4109, %4108 ], [ %4111, %4110 ], [ %.pn2128.pn.pn, %4154 ], [ %4113, %4112 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %579) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %579) #9
  br label %4427

4156:                                             ; preds = %4136
  %4157 = landingpad { ptr, i32 }
          cleanup
  br label %4203

4158:                                             ; preds = %4138
  %4159 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %588) #9
  br label %4203

4160:                                             ; preds = %4139
  %4161 = landingpad { ptr, i32 }
          cleanup
  br label %4203

4162:                                             ; preds = %4144
  %4163 = landingpad { ptr, i32 }
          cleanup
  br label %4169

4164:                                             ; preds = %4150
  %4165 = landingpad { ptr, i32 }
          cleanup
  br label %4168

4166:                                             ; preds = %4151
  %4167 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %591) #9
  br label %4168

4168:                                             ; preds = %4166, %4164
  %.pn2138 = phi { ptr, i32 } [ %4167, %4166 ], [ %4165, %4164 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %592) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %592) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %591) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %590) #9
  br label %4169

4169:                                             ; preds = %4168, %4162
  %.pn2138.pn = phi { ptr, i32 } [ %.pn2138, %4168 ], [ %4163, %4162 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %590) #9
  br label %4202

4170:                                             ; preds = %4152
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %593) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %593)
          to label %4171 unwind label %4176

4171:                                             ; preds = %4170
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %594) #9
  %4172 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %589)
          to label %4173 unwind label %4178

4173:                                             ; preds = %4171
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %594, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 150, ptr noundef %4172)
          to label %4174 unwind label %4178

4174:                                             ; preds = %4173
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %594, ptr noundef nonnull align 8 dereferenceable(8) %593)
          to label %4175 unwind label %4180

4175:                                             ; preds = %4174
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %594) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %594) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %593) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %593) #9
  br label %4184

4176:                                             ; preds = %4170
  %4177 = landingpad { ptr, i32 }
          cleanup
  br label %4183

4178:                                             ; preds = %4173, %4171
  %4179 = landingpad { ptr, i32 }
          cleanup
  br label %4182

4180:                                             ; preds = %4174
  %4181 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %594) #9
  br label %4182

4182:                                             ; preds = %4180, %4178
  %.pn2141 = phi { ptr, i32 } [ %4181, %4180 ], [ %4179, %4178 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %594) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %593) #9
  br label %4183

4183:                                             ; preds = %4182, %4176
  %.pn2141.pn = phi { ptr, i32 } [ %.pn2141, %4182 ], [ %4177, %4176 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %593) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %589) #9
  br label %4202

4184:                                             ; preds = %4152, %4175
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %589) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %589) #9
  call void @_ZdaPv(ptr noundef nonnull %4143) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %587) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %587) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %595) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %595)
  %4185 = getelementptr inbounds i8, ptr %595, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4185, ptr noundef nonnull @.str.62, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %4186 unwind label %4204

4186:                                             ; preds = %4184
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %596) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %596, ptr noundef nonnull align 8 dereferenceable(128) %595)
          to label %4187 unwind label %4206

4187:                                             ; preds = %4186
  %4188 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %596) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %596) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %596) #9
  %4189 = shl i64 %4188, 32
  %sext2149 = add i64 %4189, 12884901888
  %4190 = ashr exact i64 %sext2149, 32
  %4191 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4190) #10
          to label %4192 unwind label %4208

4192:                                             ; preds = %4187
  %sext2148 = add i64 %4189, 8589934592
  %4193 = ashr exact i64 %sext2148, 32
  %4194 = getelementptr inbounds i8, ptr %4191, i64 %4193
  store i8 0, ptr %4194, align 1, !tbaa !9
  %sext2150 = add i64 %4189, 4294967296
  %4195 = ashr exact i64 %sext2150, 32
  %4196 = load double, ptr %2, align 8, !tbaa !5
  %4197 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %4191, i64 noundef %4195, ptr noundef nonnull @.str.62, double noundef %4196) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %597) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %598) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %598, ptr noundef nonnull align 8 dereferenceable(128) %595)
          to label %4198 unwind label %4210

4198:                                             ; preds = %4192
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %599) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %600) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %600) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %599, ptr noundef nonnull %4191, ptr noundef nonnull align 1 dereferenceable(1) %600)
          to label %4199 unwind label %4212

4199:                                             ; preds = %4198
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %597, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %598, ptr noundef nonnull align 8 dereferenceable(32) %599)
          to label %4200 unwind label %4214

4200:                                             ; preds = %4199
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %599) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %600) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %600) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %599) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %598) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %598) #9
  %4201 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %597)
  br i1 %4201, label %4232, label %4218

4202:                                             ; preds = %4183, %4169
  %.pn2141.pn.pn = phi { ptr, i32 } [ %.pn2141.pn, %4183 ], [ %.pn2138.pn, %4169 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %589) #9
  br label %4203

4203:                                             ; preds = %4158, %4202, %4160, %4156
  %.pn2141.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %4157, %4156 ], [ %4159, %4158 ], [ %.pn2141.pn.pn, %4202 ], [ %4161, %4160 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %587) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %587) #9
  br label %4427

4204:                                             ; preds = %4184
  %4205 = landingpad { ptr, i32 }
          cleanup
  br label %4251

4206:                                             ; preds = %4186
  %4207 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %596) #9
  br label %4251

4208:                                             ; preds = %4187
  %4209 = landingpad { ptr, i32 }
          cleanup
  br label %4251

4210:                                             ; preds = %4192
  %4211 = landingpad { ptr, i32 }
          cleanup
  br label %4217

4212:                                             ; preds = %4198
  %4213 = landingpad { ptr, i32 }
          cleanup
  br label %4216

4214:                                             ; preds = %4199
  %4215 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %599) #9
  br label %4216

4216:                                             ; preds = %4214, %4212
  %.pn2151 = phi { ptr, i32 } [ %4215, %4214 ], [ %4213, %4212 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %600) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %600) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %599) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %598) #9
  br label %4217

4217:                                             ; preds = %4216, %4210
  %.pn2151.pn = phi { ptr, i32 } [ %.pn2151, %4216 ], [ %4211, %4210 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %598) #9
  br label %4250

4218:                                             ; preds = %4200
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %601) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %601)
          to label %4219 unwind label %4224

4219:                                             ; preds = %4218
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %602) #9
  %4220 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %597)
          to label %4221 unwind label %4226

4221:                                             ; preds = %4219
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %602, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 151, ptr noundef %4220)
          to label %4222 unwind label %4226

4222:                                             ; preds = %4221
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %602, ptr noundef nonnull align 8 dereferenceable(8) %601)
          to label %4223 unwind label %4228

4223:                                             ; preds = %4222
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %602) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %602) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %601) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %601) #9
  br label %4232

4224:                                             ; preds = %4218
  %4225 = landingpad { ptr, i32 }
          cleanup
  br label %4231

4226:                                             ; preds = %4221, %4219
  %4227 = landingpad { ptr, i32 }
          cleanup
  br label %4230

4228:                                             ; preds = %4222
  %4229 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %602) #9
  br label %4230

4230:                                             ; preds = %4228, %4226
  %.pn2154 = phi { ptr, i32 } [ %4229, %4228 ], [ %4227, %4226 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %602) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %601) #9
  br label %4231

4231:                                             ; preds = %4230, %4224
  %.pn2154.pn = phi { ptr, i32 } [ %.pn2154, %4230 ], [ %4225, %4224 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %601) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %597) #9
  br label %4250

4232:                                             ; preds = %4200, %4223
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %597) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %597) #9
  call void @_ZdaPv(ptr noundef nonnull %4191) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %595) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %595) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %603) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %603)
  %4233 = getelementptr inbounds i8, ptr %603, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4233, ptr noundef nonnull @.str.63, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %4234 unwind label %4252

4234:                                             ; preds = %4232
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %604) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %604, ptr noundef nonnull align 8 dereferenceable(128) %603)
          to label %4235 unwind label %4254

4235:                                             ; preds = %4234
  %4236 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %604) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %604) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %604) #9
  %4237 = shl i64 %4236, 32
  %sext2162 = add i64 %4237, 12884901888
  %4238 = ashr exact i64 %sext2162, 32
  %4239 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4238) #10
          to label %4240 unwind label %4256

4240:                                             ; preds = %4235
  %sext2161 = add i64 %4237, 8589934592
  %4241 = ashr exact i64 %sext2161, 32
  %4242 = getelementptr inbounds i8, ptr %4239, i64 %4241
  store i8 0, ptr %4242, align 1, !tbaa !9
  %sext2163 = add i64 %4237, 4294967296
  %4243 = ashr exact i64 %sext2163, 32
  %4244 = load double, ptr %2, align 8, !tbaa !5
  %4245 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %4239, i64 noundef %4243, ptr noundef nonnull @.str.63, double noundef %4244) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %605) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %606) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %606, ptr noundef nonnull align 8 dereferenceable(128) %603)
          to label %4246 unwind label %4258

4246:                                             ; preds = %4240
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %607) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %608) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %608) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %607, ptr noundef nonnull %4239, ptr noundef nonnull align 1 dereferenceable(1) %608)
          to label %4247 unwind label %4260

4247:                                             ; preds = %4246
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %605, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %606, ptr noundef nonnull align 8 dereferenceable(32) %607)
          to label %4248 unwind label %4262

4248:                                             ; preds = %4247
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %607) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %608) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %608) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %607) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %606) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %606) #9
  %4249 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %605)
  br i1 %4249, label %4280, label %4266

4250:                                             ; preds = %4231, %4217
  %.pn2154.pn.pn = phi { ptr, i32 } [ %.pn2154.pn, %4231 ], [ %.pn2151.pn, %4217 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %597) #9
  br label %4251

4251:                                             ; preds = %4206, %4250, %4208, %4204
  %.pn2154.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %4205, %4204 ], [ %4207, %4206 ], [ %.pn2154.pn.pn, %4250 ], [ %4209, %4208 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %595) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %595) #9
  br label %4427

4252:                                             ; preds = %4232
  %4253 = landingpad { ptr, i32 }
          cleanup
  br label %4299

4254:                                             ; preds = %4234
  %4255 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %604) #9
  br label %4299

4256:                                             ; preds = %4235
  %4257 = landingpad { ptr, i32 }
          cleanup
  br label %4299

4258:                                             ; preds = %4240
  %4259 = landingpad { ptr, i32 }
          cleanup
  br label %4265

4260:                                             ; preds = %4246
  %4261 = landingpad { ptr, i32 }
          cleanup
  br label %4264

4262:                                             ; preds = %4247
  %4263 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %607) #9
  br label %4264

4264:                                             ; preds = %4262, %4260
  %.pn2164 = phi { ptr, i32 } [ %4263, %4262 ], [ %4261, %4260 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %608) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %608) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %607) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %606) #9
  br label %4265

4265:                                             ; preds = %4264, %4258
  %.pn2164.pn = phi { ptr, i32 } [ %.pn2164, %4264 ], [ %4259, %4258 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %606) #9
  br label %4298

4266:                                             ; preds = %4248
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %609) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %609)
          to label %4267 unwind label %4272

4267:                                             ; preds = %4266
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %610) #9
  %4268 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %605)
          to label %4269 unwind label %4274

4269:                                             ; preds = %4267
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %610, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 152, ptr noundef %4268)
          to label %4270 unwind label %4274

4270:                                             ; preds = %4269
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %610, ptr noundef nonnull align 8 dereferenceable(8) %609)
          to label %4271 unwind label %4276

4271:                                             ; preds = %4270
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %610) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %610) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %609) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %609) #9
  br label %4280

4272:                                             ; preds = %4266
  %4273 = landingpad { ptr, i32 }
          cleanup
  br label %4279

4274:                                             ; preds = %4269, %4267
  %4275 = landingpad { ptr, i32 }
          cleanup
  br label %4278

4276:                                             ; preds = %4270
  %4277 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %610) #9
  br label %4278

4278:                                             ; preds = %4276, %4274
  %.pn2167 = phi { ptr, i32 } [ %4277, %4276 ], [ %4275, %4274 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %610) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %609) #9
  br label %4279

4279:                                             ; preds = %4278, %4272
  %.pn2167.pn = phi { ptr, i32 } [ %.pn2167, %4278 ], [ %4273, %4272 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %609) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %605) #9
  br label %4298

4280:                                             ; preds = %4248, %4271
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %605) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %605) #9
  call void @_ZdaPv(ptr noundef nonnull %4239) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %603) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %603) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %611) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %611)
  %4281 = getelementptr inbounds i8, ptr %611, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4281, ptr noundef nonnull @.str.64, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %4282 unwind label %4300

4282:                                             ; preds = %4280
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %612) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %612, ptr noundef nonnull align 8 dereferenceable(128) %611)
          to label %4283 unwind label %4302

4283:                                             ; preds = %4282
  %4284 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %612) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %612) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %612) #9
  %4285 = shl i64 %4284, 32
  %sext2175 = add i64 %4285, 12884901888
  %4286 = ashr exact i64 %sext2175, 32
  %4287 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4286) #10
          to label %4288 unwind label %4304

4288:                                             ; preds = %4283
  %sext2174 = add i64 %4285, 8589934592
  %4289 = ashr exact i64 %sext2174, 32
  %4290 = getelementptr inbounds i8, ptr %4287, i64 %4289
  store i8 0, ptr %4290, align 1, !tbaa !9
  %sext2176 = add i64 %4285, 4294967296
  %4291 = ashr exact i64 %sext2176, 32
  %4292 = load double, ptr %2, align 8, !tbaa !5
  %4293 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %4287, i64 noundef %4291, ptr noundef nonnull @.str.64, double noundef %4292) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %613) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %614) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %614, ptr noundef nonnull align 8 dereferenceable(128) %611)
          to label %4294 unwind label %4306

4294:                                             ; preds = %4288
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %615) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %616) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %616) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %615, ptr noundef nonnull %4287, ptr noundef nonnull align 1 dereferenceable(1) %616)
          to label %4295 unwind label %4308

4295:                                             ; preds = %4294
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %613, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %614, ptr noundef nonnull align 8 dereferenceable(32) %615)
          to label %4296 unwind label %4310

4296:                                             ; preds = %4295
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %615) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %616) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %616) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %615) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %614) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %614) #9
  %4297 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %613)
  br i1 %4297, label %4328, label %4314

4298:                                             ; preds = %4279, %4265
  %.pn2167.pn.pn = phi { ptr, i32 } [ %.pn2167.pn, %4279 ], [ %.pn2164.pn, %4265 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %605) #9
  br label %4299

4299:                                             ; preds = %4254, %4298, %4256, %4252
  %.pn2167.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %4253, %4252 ], [ %4255, %4254 ], [ %.pn2167.pn.pn, %4298 ], [ %4257, %4256 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %603) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %603) #9
  br label %4427

4300:                                             ; preds = %4280
  %4301 = landingpad { ptr, i32 }
          cleanup
  br label %4347

4302:                                             ; preds = %4282
  %4303 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %612) #9
  br label %4347

4304:                                             ; preds = %4283
  %4305 = landingpad { ptr, i32 }
          cleanup
  br label %4347

4306:                                             ; preds = %4288
  %4307 = landingpad { ptr, i32 }
          cleanup
  br label %4313

4308:                                             ; preds = %4294
  %4309 = landingpad { ptr, i32 }
          cleanup
  br label %4312

4310:                                             ; preds = %4295
  %4311 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %615) #9
  br label %4312

4312:                                             ; preds = %4310, %4308
  %.pn2177 = phi { ptr, i32 } [ %4311, %4310 ], [ %4309, %4308 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %616) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %616) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %615) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %614) #9
  br label %4313

4313:                                             ; preds = %4312, %4306
  %.pn2177.pn = phi { ptr, i32 } [ %.pn2177, %4312 ], [ %4307, %4306 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %614) #9
  br label %4346

4314:                                             ; preds = %4296
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %617) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %617)
          to label %4315 unwind label %4320

4315:                                             ; preds = %4314
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %618) #9
  %4316 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %613)
          to label %4317 unwind label %4322

4317:                                             ; preds = %4315
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %618, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 153, ptr noundef %4316)
          to label %4318 unwind label %4322

4318:                                             ; preds = %4317
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %618, ptr noundef nonnull align 8 dereferenceable(8) %617)
          to label %4319 unwind label %4324

4319:                                             ; preds = %4318
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %618) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %618) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %617) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %617) #9
  br label %4328

4320:                                             ; preds = %4314
  %4321 = landingpad { ptr, i32 }
          cleanup
  br label %4327

4322:                                             ; preds = %4317, %4315
  %4323 = landingpad { ptr, i32 }
          cleanup
  br label %4326

4324:                                             ; preds = %4318
  %4325 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %618) #9
  br label %4326

4326:                                             ; preds = %4324, %4322
  %.pn2180 = phi { ptr, i32 } [ %4325, %4324 ], [ %4323, %4322 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %618) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %617) #9
  br label %4327

4327:                                             ; preds = %4326, %4320
  %.pn2180.pn = phi { ptr, i32 } [ %.pn2180, %4326 ], [ %4321, %4320 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %617) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %613) #9
  br label %4346

4328:                                             ; preds = %4296, %4319
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %613) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %613) #9
  call void @_ZdaPv(ptr noundef nonnull %4287) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %611) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %611) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %619) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %619)
  %4329 = getelementptr inbounds i8, ptr %619, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4329, ptr noundef nonnull @.str.65, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %4330 unwind label %4348

4330:                                             ; preds = %4328
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %620) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %620, ptr noundef nonnull align 8 dereferenceable(128) %619)
          to label %4331 unwind label %4350

4331:                                             ; preds = %4330
  %4332 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %620) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %620) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %620) #9
  %4333 = shl i64 %4332, 32
  %sext2188 = add i64 %4333, 12884901888
  %4334 = ashr exact i64 %sext2188, 32
  %4335 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4334) #10
          to label %4336 unwind label %4352

4336:                                             ; preds = %4331
  %sext2187 = add i64 %4333, 8589934592
  %4337 = ashr exact i64 %sext2187, 32
  %4338 = getelementptr inbounds i8, ptr %4335, i64 %4337
  store i8 0, ptr %4338, align 1, !tbaa !9
  %sext2189 = add i64 %4333, 4294967296
  %4339 = ashr exact i64 %sext2189, 32
  %4340 = load double, ptr %2, align 8, !tbaa !5
  %4341 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %4335, i64 noundef %4339, ptr noundef nonnull @.str.65, double noundef %4340) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %621) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %622) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %622, ptr noundef nonnull align 8 dereferenceable(128) %619)
          to label %4342 unwind label %4354

4342:                                             ; preds = %4336
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %623) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %624) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %624) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %623, ptr noundef nonnull %4335, ptr noundef nonnull align 1 dereferenceable(1) %624)
          to label %4343 unwind label %4356

4343:                                             ; preds = %4342
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %621, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %622, ptr noundef nonnull align 8 dereferenceable(32) %623)
          to label %4344 unwind label %4358

4344:                                             ; preds = %4343
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %623) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %624) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %624) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %623) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %622) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %622) #9
  %4345 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %621)
  br i1 %4345, label %4376, label %4362

4346:                                             ; preds = %4327, %4313
  %.pn2180.pn.pn = phi { ptr, i32 } [ %.pn2180.pn, %4327 ], [ %.pn2177.pn, %4313 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %613) #9
  br label %4347

4347:                                             ; preds = %4302, %4346, %4304, %4300
  %.pn2180.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %4301, %4300 ], [ %4303, %4302 ], [ %.pn2180.pn.pn, %4346 ], [ %4305, %4304 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %611) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %611) #9
  br label %4427

4348:                                             ; preds = %4328
  %4349 = landingpad { ptr, i32 }
          cleanup
  br label %4395

4350:                                             ; preds = %4330
  %4351 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %620) #9
  br label %4395

4352:                                             ; preds = %4331
  %4353 = landingpad { ptr, i32 }
          cleanup
  br label %4395

4354:                                             ; preds = %4336
  %4355 = landingpad { ptr, i32 }
          cleanup
  br label %4361

4356:                                             ; preds = %4342
  %4357 = landingpad { ptr, i32 }
          cleanup
  br label %4360

4358:                                             ; preds = %4343
  %4359 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %623) #9
  br label %4360

4360:                                             ; preds = %4358, %4356
  %.pn2190 = phi { ptr, i32 } [ %4359, %4358 ], [ %4357, %4356 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %624) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %624) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %623) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %622) #9
  br label %4361

4361:                                             ; preds = %4360, %4354
  %.pn2190.pn = phi { ptr, i32 } [ %.pn2190, %4360 ], [ %4355, %4354 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %622) #9
  br label %4394

4362:                                             ; preds = %4344
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %625) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %625)
          to label %4363 unwind label %4368

4363:                                             ; preds = %4362
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %626) #9
  %4364 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %621)
          to label %4365 unwind label %4370

4365:                                             ; preds = %4363
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %626, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 154, ptr noundef %4364)
          to label %4366 unwind label %4370

4366:                                             ; preds = %4365
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %626, ptr noundef nonnull align 8 dereferenceable(8) %625)
          to label %4367 unwind label %4372

4367:                                             ; preds = %4366
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %626) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %626) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %625) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %625) #9
  br label %4376

4368:                                             ; preds = %4362
  %4369 = landingpad { ptr, i32 }
          cleanup
  br label %4375

4370:                                             ; preds = %4365, %4363
  %4371 = landingpad { ptr, i32 }
          cleanup
  br label %4374

4372:                                             ; preds = %4366
  %4373 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %626) #9
  br label %4374

4374:                                             ; preds = %4372, %4370
  %.pn2193 = phi { ptr, i32 } [ %4373, %4372 ], [ %4371, %4370 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %626) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %625) #9
  br label %4375

4375:                                             ; preds = %4374, %4368
  %.pn2193.pn = phi { ptr, i32 } [ %.pn2193, %4374 ], [ %4369, %4368 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %625) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %621) #9
  br label %4394

4376:                                             ; preds = %4344, %4367
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %621) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %621) #9
  call void @_ZdaPv(ptr noundef nonnull %4335) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %619) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %619) #9
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %627) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %627)
  %4377 = getelementptr inbounds i8, ptr %627, i64 16
  invoke void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8) %4377, ptr noundef nonnull @.str.66, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %4378 unwind label %4396

4378:                                             ; preds = %4376
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %628) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %628, ptr noundef nonnull align 8 dereferenceable(128) %627)
          to label %4379 unwind label %4398

4379:                                             ; preds = %4378
  %4380 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %628) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %628) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %628) #9
  %4381 = shl i64 %4380, 32
  %sext2201 = add i64 %4381, 12884901888
  %4382 = ashr exact i64 %sext2201, 32
  %4383 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %4382) #10
          to label %4384 unwind label %4400

4384:                                             ; preds = %4379
  %sext2200 = add i64 %4381, 8589934592
  %4385 = ashr exact i64 %sext2200, 32
  %4386 = getelementptr inbounds i8, ptr %4383, i64 %4385
  store i8 0, ptr %4386, align 1, !tbaa !9
  %sext2202 = add i64 %4381, 4294967296
  %4387 = ashr exact i64 %sext2202, 32
  %4388 = load double, ptr %2, align 8, !tbaa !5
  %4389 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %4383, i64 noundef %4387, ptr noundef nonnull @.str.66, double noundef %4388) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %629) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %630) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %630, ptr noundef nonnull align 8 dereferenceable(128) %627)
          to label %4390 unwind label %4402

4390:                                             ; preds = %4384
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %631) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %632) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %632) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %631, ptr noundef nonnull %4383, ptr noundef nonnull align 1 dereferenceable(1) %632)
          to label %4391 unwind label %4404

4391:                                             ; preds = %4390
  invoke void @_ZN7testing8internal8EqHelper7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSI_RKSA_RKSB_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %629, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %630, ptr noundef nonnull align 8 dereferenceable(32) %631)
          to label %4392 unwind label %4406

4392:                                             ; preds = %4391
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %631) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %632) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %632) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %631) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %630) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %630) #9
  %4393 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %629)
  br i1 %4393, label %4424, label %4410

4394:                                             ; preds = %4375, %4361
  %.pn2193.pn.pn = phi { ptr, i32 } [ %.pn2193.pn, %4375 ], [ %.pn2190.pn, %4361 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %621) #9
  br label %4395

4395:                                             ; preds = %4350, %4394, %4352, %4348
  %.pn2193.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %4349, %4348 ], [ %4351, %4350 ], [ %.pn2193.pn.pn, %4394 ], [ %4353, %4352 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %619) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %619) #9
  br label %4427

4396:                                             ; preds = %4376
  %4397 = landingpad { ptr, i32 }
          cleanup
  br label %4426

4398:                                             ; preds = %4378
  %4399 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %628) #9
  br label %4426

4400:                                             ; preds = %4379
  %4401 = landingpad { ptr, i32 }
          cleanup
  br label %4426

4402:                                             ; preds = %4384
  %4403 = landingpad { ptr, i32 }
          cleanup
  br label %4409

4404:                                             ; preds = %4390
  %4405 = landingpad { ptr, i32 }
          cleanup
  br label %4408

4406:                                             ; preds = %4391
  %4407 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %631) #9
  br label %4408

4408:                                             ; preds = %4406, %4404
  %.pn2203 = phi { ptr, i32 } [ %4407, %4406 ], [ %4405, %4404 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %632) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %632) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %631) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %630) #9
  br label %4409

4409:                                             ; preds = %4408, %4402
  %.pn2203.pn = phi { ptr, i32 } [ %.pn2203, %4408 ], [ %4403, %4402 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %630) #9
  br label %4425

4410:                                             ; preds = %4392
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %633) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %633)
          to label %4411 unwind label %4416

4411:                                             ; preds = %4410
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %634) #9
  %4412 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %629)
          to label %4413 unwind label %4418

4413:                                             ; preds = %4411
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %634, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 155, ptr noundef %4412)
          to label %4414 unwind label %4418

4414:                                             ; preds = %4413
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %634, ptr noundef nonnull align 8 dereferenceable(8) %633)
          to label %4415 unwind label %4420

4415:                                             ; preds = %4414
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %634) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %634) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %633) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %633) #9
  br label %4424

4416:                                             ; preds = %4410
  %4417 = landingpad { ptr, i32 }
          cleanup
  br label %4423

4418:                                             ; preds = %4413, %4411
  %4419 = landingpad { ptr, i32 }
          cleanup
  br label %4422

4420:                                             ; preds = %4414
  %4421 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %634) #9
  br label %4422

4422:                                             ; preds = %4420, %4418
  %.pn2206 = phi { ptr, i32 } [ %4421, %4420 ], [ %4419, %4418 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %634) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %633) #9
  br label %4423

4423:                                             ; preds = %4422, %4416
  %.pn2206.pn = phi { ptr, i32 } [ %.pn2206, %4422 ], [ %4417, %4416 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %633) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %629) #9
  br label %4425

4424:                                             ; preds = %4392, %4415
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %629) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %629) #9
  call void @_ZdaPv(ptr noundef nonnull %4383) #11
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %627) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %627) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #9
  ret void

4425:                                             ; preds = %4423, %4409
  %.pn2206.pn.pn = phi { ptr, i32 } [ %.pn2206.pn, %4423 ], [ %.pn2203.pn, %4409 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %629) #9
  br label %4426

4426:                                             ; preds = %4398, %4425, %4400, %4396
  %.pn2206.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %4397, %4396 ], [ %4399, %4398 ], [ %.pn2206.pn.pn, %4425 ], [ %4401, %4400 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %627) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %627) #9
  br label %4427

4427:                                             ; preds = %4426, %4395, %4347, %4299, %4251, %4203, %4155, %4107, %4059, %4011, %3963, %3915, %3867, %3819, %3771, %3723, %3675, %3627, %3579, %3531, %3483, %3435, %3387, %3339, %3291, %3243, %3195, %3147, %3099, %3051, %3003, %2955, %2907, %2859, %2811, %2763, %2715, %2667, %2619, %2571, %2523, %2475, %2427, %2379, %2331, %2283, %2235, %2187, %2139, %2091, %2043, %1995, %1947, %1899, %1851, %1803, %1755, %1707, %1659, %1611, %1563, %1515, %1467, %1419, %1371, %1323, %1275, %1227, %1179, %1131, %1083, %1035, %987, %939, %891, %843, %795, %747, %699
  %.pn2206.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn2206.pn.pn.pn.pn.pn, %4426 ], [ %.pn2193.pn.pn.pn.pn.pn, %4395 ], [ %.pn2180.pn.pn.pn.pn.pn, %4347 ], [ %.pn2167.pn.pn.pn.pn.pn, %4299 ], [ %.pn2154.pn.pn.pn.pn.pn, %4251 ], [ %.pn2141.pn.pn.pn.pn.pn, %4203 ], [ %.pn2128.pn.pn.pn.pn.pn, %4155 ], [ %.pn2115.pn.pn.pn.pn.pn, %4107 ], [ %.pn2102.pn.pn.pn.pn.pn, %4059 ], [ %.pn2089.pn.pn.pn.pn.pn, %4011 ], [ %.pn2076.pn.pn.pn.pn.pn, %3963 ], [ %.pn2063.pn.pn.pn.pn.pn, %3915 ], [ %.pn2050.pn.pn.pn.pn.pn, %3867 ], [ %.pn2037.pn.pn.pn.pn.pn, %3819 ], [ %.pn2024.pn.pn.pn.pn.pn, %3771 ], [ %.pn2011.pn.pn.pn.pn.pn, %3723 ], [ %.pn1998.pn.pn.pn.pn.pn, %3675 ], [ %.pn1985.pn.pn.pn.pn.pn, %3627 ], [ %.pn1972.pn.pn.pn.pn.pn, %3579 ], [ %.pn1959.pn.pn.pn.pn.pn, %3531 ], [ %.pn1946.pn.pn.pn.pn.pn, %3483 ], [ %.pn1933.pn.pn.pn.pn.pn, %3435 ], [ %.pn1920.pn.pn.pn.pn.pn, %3387 ], [ %.pn1907.pn.pn.pn.pn.pn, %3339 ], [ %.pn1894.pn.pn.pn.pn.pn, %3291 ], [ %.pn1881.pn.pn.pn.pn.pn, %3243 ], [ %.pn1868.pn.pn.pn.pn.pn, %3195 ], [ %.pn1855.pn.pn.pn.pn.pn, %3147 ], [ %.pn1842.pn.pn.pn.pn.pn, %3099 ], [ %.pn1829.pn.pn.pn.pn.pn, %3051 ], [ %.pn1816.pn.pn.pn.pn.pn, %3003 ], [ %.pn1803.pn.pn.pn.pn.pn, %2955 ], [ %.pn1790.pn.pn.pn.pn.pn, %2907 ], [ %.pn1777.pn.pn.pn.pn.pn, %2859 ], [ %.pn1764.pn.pn.pn.pn.pn, %2811 ], [ %.pn1751.pn.pn.pn.pn.pn, %2763 ], [ %.pn1738.pn.pn.pn.pn.pn, %2715 ], [ %.pn1725.pn.pn.pn.pn.pn, %2667 ], [ %.pn1712.pn.pn.pn.pn.pn, %2619 ], [ %.pn1699.pn.pn.pn.pn.pn, %2571 ], [ %.pn1686.pn.pn.pn.pn.pn, %2523 ], [ %.pn1673.pn.pn.pn.pn.pn, %2475 ], [ %.pn1660.pn.pn.pn.pn.pn, %2427 ], [ %.pn1647.pn.pn.pn.pn.pn, %2379 ], [ %.pn1634.pn.pn.pn.pn.pn, %2331 ], [ %.pn1621.pn.pn.pn.pn.pn, %2283 ], [ %.pn1608.pn.pn.pn.pn.pn, %2235 ], [ %.pn1595.pn.pn.pn.pn.pn, %2187 ], [ %.pn1582.pn.pn.pn.pn.pn, %2139 ], [ %.pn1569.pn.pn.pn.pn.pn, %2091 ], [ %.pn1556.pn.pn.pn.pn.pn, %2043 ], [ %.pn1543.pn.pn.pn.pn.pn, %1995 ], [ %.pn1530.pn.pn.pn.pn.pn, %1947 ], [ %.pn1517.pn.pn.pn.pn.pn, %1899 ], [ %.pn1504.pn.pn.pn.pn.pn, %1851 ], [ %.pn1491.pn.pn.pn.pn.pn, %1803 ], [ %.pn1478.pn.pn.pn.pn.pn, %1755 ], [ %.pn1465.pn.pn.pn.pn.pn, %1707 ], [ %.pn1452.pn.pn.pn.pn.pn, %1659 ], [ %.pn1439.pn.pn.pn.pn.pn, %1611 ], [ %.pn1426.pn.pn.pn.pn.pn, %1563 ], [ %.pn1413.pn.pn.pn.pn.pn, %1515 ], [ %.pn1400.pn.pn.pn.pn.pn, %1467 ], [ %.pn1387.pn.pn.pn.pn.pn, %1419 ], [ %.pn1374.pn.pn.pn.pn.pn, %1371 ], [ %.pn1361.pn.pn.pn.pn.pn, %1323 ], [ %.pn1348.pn.pn.pn.pn.pn, %1275 ], [ %.pn1335.pn.pn.pn.pn.pn, %1227 ], [ %.pn1322.pn.pn.pn.pn.pn, %1179 ], [ %.pn1309.pn.pn.pn.pn.pn, %1131 ], [ %.pn1296.pn.pn.pn.pn.pn, %1083 ], [ %.pn1283.pn.pn.pn.pn.pn, %1035 ], [ %.pn1270.pn.pn.pn.pn.pn, %987 ], [ %.pn1257.pn.pn.pn.pn.pn, %939 ], [ %.pn1244.pn.pn.pn.pn.pn, %891 ], [ %.pn1231.pn.pn.pn.pn.pn, %843 ], [ %.pn1218.pn.pn.pn.pn.pn, %795 ], [ %.pn1205.pn.pn.pn.pn.pn, %747 ], [ %.pn1192.pn.pn.pn.pn.pn, %699 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #9
  resume { ptr, i32 } %.pn2206.pn.pn.pn.pn.pn.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4gem58ccprintfIJdEEEvRSoPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #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"="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 #3 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nofree 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress 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 #8 = { nobuiltin 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 #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { builtin 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 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass