; LLVM IR from gigimushroom/DatabaseBackendEngine :: test/hash/extendible_hash_test.ll (ZN5cmudb34ExtendibleHashTest_SampleTest_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.std::allocator.0" = type { i8 }
%"class.testing::AssertionResult" = type { i8, %"class.testing::internal::scoped_ptr" }
%"class.testing::internal::scoped_ptr" = type { ptr }
%"class.testing::Message" = type { %"class.testing::internal::scoped_ptr.3" }
%"class.testing::internal::scoped_ptr.3" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }

@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [17 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5cmudb34ExtendibleHashTest_SampleTest_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 ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator.0", align 1
  %9 = alloca i32, align 4
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator.0", align 1
  %12 = alloca i32, align 4
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator.0", align 1
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator.0", align 1
  %18 = alloca i32, align 4
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator.0", align 1
  %21 = alloca i32, align 4
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator.0", align 1
  %24 = alloca i32, align 4
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator.0", align 1
  %27 = alloca i32, align 4
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.0", align 1
  %30 = alloca i32, align 4
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator.0", align 1
  %33 = alloca %"class.testing::AssertionResult", align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca %"class.testing::Message", align 8
  %37 = alloca %"class.testing::internal::AssertHelper", align 8
  %38 = alloca %"class.testing::AssertionResult", align 8
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca %"class.testing::Message", align 8
  %42 = alloca %"class.testing::internal::AssertHelper", align 8
  %43 = alloca %"class.testing::AssertionResult", align 8
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca %"class.testing::Message", align 8
  %47 = alloca %"class.testing::internal::AssertHelper", align 8
  %48 = alloca %"class.testing::AssertionResult", align 8
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca %"class.testing::Message", align 8
  %52 = alloca %"class.testing::internal::AssertHelper", align 8
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca i32, align 4
  %55 = alloca %"class.testing::AssertionResult", align 8
  %56 = alloca %"class.testing::Message", align 8
  %57 = alloca %"class.testing::internal::AssertHelper", align 8
  %58 = alloca i32, align 4
  %59 = alloca %"class.testing::AssertionResult", align 8
  %60 = alloca %"class.testing::Message", align 8
  %61 = alloca %"class.testing::internal::AssertHelper", align 8
  %62 = alloca i32, align 4
  %63 = alloca %"class.testing::AssertionResult", align 8
  %64 = alloca %"class.testing::Message", align 8
  %65 = alloca %"class.testing::internal::AssertHelper", align 8
  %66 = alloca %"class.testing::AssertionResult", align 8
  %67 = alloca i32, align 4
  %68 = alloca i8, align 1
  %69 = alloca i32, align 4
  %70 = alloca %"class.testing::Message", align 8
  %71 = alloca %"class.testing::internal::AssertHelper", align 8
  %72 = alloca %"class.testing::AssertionResult", align 8
  %73 = alloca i32, align 4
  %74 = alloca i8, align 1
  %75 = alloca i32, align 4
  %76 = alloca %"class.testing::Message", align 8
  %77 = alloca %"class.testing::internal::AssertHelper", align 8
  %78 = alloca %"class.testing::AssertionResult", align 8
  %79 = alloca i32, align 4
  %80 = alloca i8, align 1
  %81 = alloca i32, align 4
  %82 = alloca %"class.testing::Message", align 8
  %83 = alloca %"class.testing::internal::AssertHelper", align 8
  %84 = alloca %"class.testing::AssertionResult", align 8
  %85 = alloca i32, align 4
  %86 = alloca i8, align 1
  %87 = alloca i32, align 4
  %88 = alloca %"class.testing::Message", align 8
  %89 = alloca %"class.testing::internal::AssertHelper", align 8
  %90 = alloca %"class.testing::AssertionResult", align 8
  %91 = alloca i32, align 4
  %92 = alloca i8, align 1
  %93 = alloca i32, align 4
  %94 = alloca %"class.testing::Message", align 8
  %95 = alloca %"class.testing::internal::AssertHelper", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %96 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #8
  %97 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 88) #9
  invoke void @_ZN5cmudb14ExtendibleHashIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC1Em(ptr noundef nonnull align 8 dereferenceable(88) %97, i64 noundef 2)
          to label %98 unwind label %158

98:                                               ; preds = %1
  store ptr %97, ptr %3, align 8, !tbaa !5
  %99 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #8
  store i32 1, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %100 unwind label %162

100:                                              ; preds = %98
  %101 = load ptr, ptr %99, align 8, !tbaa !11
  %102 = getelementptr inbounds ptr, ptr %101, i64 4
  %103 = load ptr, ptr %102, align 8
  invoke void %103(ptr noundef nonnull align 8 dereferenceable(88) %99, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %104 unwind label %166

104:                                              ; preds = %100
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #8
  %105 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #8
  store i32 2, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %106 unwind label %171

106:                                              ; preds = %104
  %107 = load ptr, ptr %105, align 8, !tbaa !11
  %108 = getelementptr inbounds ptr, ptr %107, i64 4
  %109 = load ptr, ptr %108, align 8
  invoke void %109(ptr noundef nonnull align 8 dereferenceable(88) %105, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %110 unwind label %175

110:                                              ; preds = %106
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #8
  %111 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  store i32 3, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %112 unwind label %180

112:                                              ; preds = %110
  %113 = load ptr, ptr %111, align 8, !tbaa !11
  %114 = getelementptr inbounds ptr, ptr %113, i64 4
  %115 = load ptr, ptr %114, align 8
  invoke void %115(ptr noundef nonnull align 8 dereferenceable(88) %111, ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %116 unwind label %184

116:                                              ; preds = %112
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  %117 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  store i32 4, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %118 unwind label %189

118:                                              ; preds = %116
  %119 = load ptr, ptr %117, align 8, !tbaa !11
  %120 = getelementptr inbounds ptr, ptr %119, i64 4
  %121 = load ptr, ptr %120, align 8
  invoke void %121(ptr noundef nonnull align 8 dereferenceable(88) %117, ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %122 unwind label %193

122:                                              ; preds = %118
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  %123 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  store i32 5, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %124 unwind label %198

124:                                              ; preds = %122
  %125 = load ptr, ptr %123, align 8, !tbaa !11
  %126 = getelementptr inbounds ptr, ptr %125, i64 4
  %127 = load ptr, ptr %126, align 8
  invoke void %127(ptr noundef nonnull align 8 dereferenceable(88) %123, ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %128 unwind label %202

128:                                              ; preds = %124
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  %129 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  store i32 6, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #8
  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 @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %130 unwind label %207

130:                                              ; preds = %128
  %131 = load ptr, ptr %129, align 8, !tbaa !11
  %132 = getelementptr inbounds ptr, ptr %131, i64 4
  %133 = load ptr, ptr %132, align 8
  invoke void %133(ptr noundef nonnull align 8 dereferenceable(88) %129, ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %134 unwind label %211

134:                                              ; preds = %130
  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 @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  %135 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  store i32 7, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %136 unwind label %216

136:                                              ; preds = %134
  %137 = load ptr, ptr %135, align 8, !tbaa !11
  %138 = getelementptr inbounds ptr, ptr %137, i64 4
  %139 = load ptr, ptr %138, align 8
  invoke void %139(ptr noundef nonnull align 8 dereferenceable(88) %135, ptr noundef nonnull align 4 dereferenceable(4) %24, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %140 unwind label %220

140:                                              ; preds = %136
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  %141 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  store i32 8, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %142 unwind label %225

142:                                              ; preds = %140
  %143 = load ptr, ptr %141, align 8, !tbaa !11
  %144 = getelementptr inbounds ptr, ptr %143, i64 4
  %145 = load ptr, ptr %144, align 8
  invoke void %145(ptr noundef nonnull align 8 dereferenceable(88) %141, ptr noundef nonnull align 4 dereferenceable(4) %27, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %146 unwind label %229

146:                                              ; preds = %142
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  %147 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  store i32 9, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %148 unwind label %234

148:                                              ; preds = %146
  %149 = load ptr, ptr %147, align 8, !tbaa !11
  %150 = getelementptr inbounds ptr, ptr %149, i64 4
  %151 = load ptr, ptr %150, align 8
  invoke void %151(ptr noundef nonnull align 8 dereferenceable(88) %147, ptr noundef nonnull align 4 dereferenceable(4) %30, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %152 unwind label %238

152:                                              ; preds = %148
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  store i32 2, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  %153 = load ptr, ptr %3, align 8, !tbaa !5
  %154 = call noundef i32 @_ZNK5cmudb14ExtendibleHashIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE13GetLocalDepthEi(ptr noundef nonnull align 8 dereferenceable(88) %153, i32 noundef 0)
  store i32 %154, ptr %35, align 4, !tbaa !9
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %33, ptr noundef @.str.12, ptr noundef @.str.13, ptr noundef nonnull align 4 dereferenceable(4) %34, ptr noundef nonnull align 4 dereferenceable(4) %35)
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  %155 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %156 unwind label %243

156:                                              ; preds = %152
  br i1 %155, label %157, label %247

157:                                              ; preds = %156
  br label %267

158:                                              ; preds = %1
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %4, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %5, align 4
  call void @_ZdlPvm(ptr noundef %97, i64 noundef 88) #10
  br label %715

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

166:                                              ; preds = %100
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %4, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  br label %170

170:                                              ; preds = %166, %162
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #8
  br label %715

171:                                              ; preds = %104
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %4, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %5, align 4
  br label %179

175:                                              ; preds = %106
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %4, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  br label %179

179:                                              ; preds = %175, %171
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #8
  br label %715

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

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

188:                                              ; preds = %184, %180
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  br label %715

189:                                              ; preds = %116
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %4, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %5, align 4
  br label %197

193:                                              ; preds = %118
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %4, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  br label %197

197:                                              ; preds = %193, %189
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  br label %715

198:                                              ; preds = %122
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %4, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %5, align 4
  br label %206

202:                                              ; preds = %124
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %4, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %206

206:                                              ; preds = %202, %198
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  br label %715

207:                                              ; preds = %128
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %4, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %5, align 4
  br label %215

211:                                              ; preds = %130
  %212 = landingpad { ptr, i32 }
          cleanup
  %213 = extractvalue { ptr, i32 } %212, 0
  store ptr %213, ptr %4, align 8
  %214 = extractvalue { ptr, i32 } %212, 1
  store i32 %214, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  br label %215

215:                                              ; preds = %211, %207
  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 @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  br label %715

216:                                              ; preds = %134
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %4, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %5, align 4
  br label %224

220:                                              ; preds = %136
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %4, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %224

224:                                              ; preds = %220, %216
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  br label %715

225:                                              ; preds = %140
  %226 = landingpad { ptr, i32 }
          cleanup
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %4, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %5, align 4
  br label %233

229:                                              ; preds = %142
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %4, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %233

233:                                              ; preds = %229, %225
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  br label %715

234:                                              ; preds = %146
  %235 = landingpad { ptr, i32 }
          cleanup
  %236 = extractvalue { ptr, i32 } %235, 0
  store ptr %236, ptr %4, align 8
  %237 = extractvalue { ptr, i32 } %235, 1
  store i32 %237, ptr %5, align 4
  br label %242

238:                                              ; preds = %148
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %4, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  br label %242

242:                                              ; preds = %238, %234
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  br label %715

243:                                              ; preds = %152
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %4, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %5, align 4
  br label %273

247:                                              ; preds = %156
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %248 unwind label %253

248:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %249 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %250 unwind label %257

250:                                              ; preds = %248
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %37, i32 noundef 1, ptr noundef @.str.14, i32 noundef 28, ptr noundef %249)
          to label %251 unwind label %257

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

252:                                              ; preds = %251
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %267

253:                                              ; preds = %247
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %4, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %5, align 4
  br label %266

257:                                              ; preds = %250, %248
  %258 = landingpad { ptr, i32 }
          cleanup
  %259 = extractvalue { ptr, i32 } %258, 0
  store ptr %259, ptr %4, align 8
  %260 = extractvalue { ptr, i32 } %258, 1
  store i32 %260, ptr %5, align 4
  br label %265

261:                                              ; preds = %251
  %262 = landingpad { ptr, i32 }
          cleanup
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %4, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %5, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  br label %265

265:                                              ; preds = %261, %257
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  br label %266

266:                                              ; preds = %265, %253
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %273

267:                                              ; preds = %252, %157
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #8
  store i32 3, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #8
  %268 = load ptr, ptr %3, align 8, !tbaa !5
  %269 = call noundef i32 @_ZNK5cmudb14ExtendibleHashIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE13GetLocalDepthEi(ptr noundef nonnull align 8 dereferenceable(88) %268, i32 noundef 1)
  store i32 %269, ptr %40, align 4, !tbaa !9
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %38, ptr noundef @.str.15, ptr noundef @.str.16, ptr noundef nonnull align 4 dereferenceable(4) %39, ptr noundef nonnull align 4 dereferenceable(4) %40)
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  %270 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %38)
          to label %271 unwind label %274

271:                                              ; preds = %267
  br i1 %270, label %272, label %278

272:                                              ; preds = %271
  br label %298

273:                                              ; preds = %266, %243
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #8
  br label %715

274:                                              ; preds = %267
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %4, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %5, align 4
  br label %304

278:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %279 unwind label %284

279:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %280 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %38)
          to label %281 unwind label %288

281:                                              ; preds = %279
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %42, i32 noundef 1, ptr noundef @.str.14, i32 noundef 29, ptr noundef %280)
          to label %282 unwind label %288

282:                                              ; preds = %281
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %283 unwind label %292

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

284:                                              ; preds = %278
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %4, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %5, align 4
  br label %297

288:                                              ; preds = %281, %279
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %4, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %5, align 4
  br label %296

292:                                              ; preds = %282
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %4, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %5, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  br label %296

296:                                              ; preds = %292, %288
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  br label %297

297:                                              ; preds = %296, %284
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  br label %304

298:                                              ; preds = %283, %272
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  store i32 2, ptr %44, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  %299 = load ptr, ptr %3, align 8, !tbaa !5
  %300 = call noundef i32 @_ZNK5cmudb14ExtendibleHashIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE13GetLocalDepthEi(ptr noundef nonnull align 8 dereferenceable(88) %299, i32 noundef 2)
  store i32 %300, ptr %45, align 4, !tbaa !9
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %43, ptr noundef @.str.12, ptr noundef @.str.17, ptr noundef nonnull align 4 dereferenceable(4) %44, ptr noundef nonnull align 4 dereferenceable(4) %45)
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  %301 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %43)
          to label %302 unwind label %305

302:                                              ; preds = %298
  br i1 %301, label %303, label %309

303:                                              ; preds = %302
  br label %329

304:                                              ; preds = %297, %274
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #8
  br label %715

305:                                              ; preds = %298
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %4, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %5, align 4
  br label %335

309:                                              ; preds = %302
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %310 unwind label %315

310:                                              ; preds = %309
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %311 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %43)
          to label %312 unwind label %319

312:                                              ; preds = %310
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %47, i32 noundef 1, ptr noundef @.str.14, i32 noundef 30, ptr noundef %311)
          to label %313 unwind label %319

313:                                              ; preds = %312
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %314 unwind label %323

314:                                              ; preds = %313
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %329

315:                                              ; preds = %309
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %4, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %5, align 4
  br label %328

319:                                              ; preds = %312, %310
  %320 = landingpad { ptr, i32 }
          cleanup
  %321 = extractvalue { ptr, i32 } %320, 0
  store ptr %321, ptr %4, align 8
  %322 = extractvalue { ptr, i32 } %320, 1
  store i32 %322, ptr %5, align 4
  br label %327

323:                                              ; preds = %313
  %324 = landingpad { ptr, i32 }
          cleanup
  %325 = extractvalue { ptr, i32 } %324, 0
  store ptr %325, ptr %4, align 8
  %326 = extractvalue { ptr, i32 } %324, 1
  store i32 %326, ptr %5, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  br label %327

327:                                              ; preds = %323, %319
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  br label %328

328:                                              ; preds = %327, %315
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %335

329:                                              ; preds = %314, %303
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #8
  store i32 2, ptr %49, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #8
  %330 = load ptr, ptr %3, align 8, !tbaa !5
  %331 = call noundef i32 @_ZNK5cmudb14ExtendibleHashIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE13GetLocalDepthEi(ptr noundef nonnull align 8 dereferenceable(88) %330, i32 noundef 3)
  store i32 %331, ptr %50, align 4, !tbaa !9
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %48, ptr noundef @.str.12, ptr noundef @.str.18, ptr noundef nonnull align 4 dereferenceable(4) %49, ptr noundef nonnull align 4 dereferenceable(4) %50)
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  %332 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %48)
          to label %333 unwind label %336

333:                                              ; preds = %329
  br i1 %332, label %334, label %340

334:                                              ; preds = %333
  br label %360

335:                                              ; preds = %328, %305
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #8
  br label %715

336:                                              ; preds = %329
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %4, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %5, align 4
  br label %371

340:                                              ; preds = %333
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %341 unwind label %346

341:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  %342 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %48)
          to label %343 unwind label %350

343:                                              ; preds = %341
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %52, i32 noundef 1, ptr noundef @.str.14, i32 noundef 31, ptr noundef %342)
          to label %344 unwind label %350

344:                                              ; preds = %343
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %345 unwind label %354

345:                                              ; preds = %344
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  br label %360

346:                                              ; preds = %340
  %347 = landingpad { ptr, i32 }
          cleanup
  %348 = extractvalue { ptr, i32 } %347, 0
  store ptr %348, ptr %4, align 8
  %349 = extractvalue { ptr, i32 } %347, 1
  store i32 %349, ptr %5, align 4
  br label %359

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

354:                                              ; preds = %344
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %4, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %5, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  br label %358

358:                                              ; preds = %354, %350
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  br label %359

359:                                              ; preds = %358, %346
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  br label %371

360:                                              ; preds = %345, %334
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  %361 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #8
  store i32 9, ptr %54, align 4, !tbaa !9
  %362 = load ptr, ptr %361, align 8, !tbaa !11
  %363 = getelementptr inbounds ptr, ptr %362, i64 2
  %364 = load ptr, ptr %363, align 8
  %365 = invoke noundef zeroext i1 %364(ptr noundef nonnull align 8 dereferenceable(88) %361, ptr noundef nonnull align 4 dereferenceable(4) %54, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %366 unwind label %372

366:                                              ; preds = %360
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #8
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA2_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %55, ptr noundef @.str.19, ptr noundef @.str.20, ptr noundef nonnull align 1 dereferenceable(2) @.str.11, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %367 unwind label %376

367:                                              ; preds = %366
  %368 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %55)
          to label %369 unwind label %380

369:                                              ; preds = %367
  br i1 %368, label %370, label %384

370:                                              ; preds = %369
  br label %404

371:                                              ; preds = %359, %336
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #8
  br label %715

372:                                              ; preds = %360
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %4, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #8
  br label %714

376:                                              ; preds = %366
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %4, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %5, align 4
  br label %416

380:                                              ; preds = %367
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %4, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %5, align 4
  br label %415

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

385:                                              ; preds = %384
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %386 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %55)
          to label %387 unwind label %394

387:                                              ; preds = %385
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %57, i32 noundef 1, ptr noundef @.str.14, i32 noundef 36, ptr noundef %386)
          to label %388 unwind label %394

388:                                              ; preds = %387
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %389 unwind label %398

389:                                              ; preds = %388
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  br label %404

390:                                              ; preds = %384
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %4, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %5, align 4
  br label %403

394:                                              ; preds = %387, %385
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %4, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %5, align 4
  br label %402

398:                                              ; preds = %388
  %399 = landingpad { ptr, i32 }
          cleanup
  %400 = extractvalue { ptr, i32 } %399, 0
  store ptr %400, ptr %4, align 8
  %401 = extractvalue { ptr, i32 } %399, 1
  store i32 %401, ptr %5, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #8
  br label %402

402:                                              ; preds = %398, %394
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #8
  br label %403

403:                                              ; preds = %402, %390
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  br label %415

404:                                              ; preds = %389, %370
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #8
  %405 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #8
  store i32 8, ptr %58, align 4, !tbaa !9
  %406 = load ptr, ptr %405, align 8, !tbaa !11
  %407 = getelementptr inbounds ptr, ptr %406, i64 2
  %408 = load ptr, ptr %407, align 8
  %409 = invoke noundef zeroext i1 %408(ptr noundef nonnull align 8 dereferenceable(88) %405, ptr noundef nonnull align 4 dereferenceable(4) %58, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %410 unwind label %417

410:                                              ; preds = %404
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #8
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA2_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %59, ptr noundef @.str.21, ptr noundef @.str.20, ptr noundef nonnull align 1 dereferenceable(2) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %411 unwind label %421

411:                                              ; preds = %410
  %412 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %59)
          to label %413 unwind label %425

413:                                              ; preds = %411
  br i1 %412, label %414, label %429

414:                                              ; preds = %413
  br label %449

415:                                              ; preds = %403, %380
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #8
  br label %416

416:                                              ; preds = %415, %376
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #8
  br label %714

417:                                              ; preds = %404
  %418 = landingpad { ptr, i32 }
          cleanup
  %419 = extractvalue { ptr, i32 } %418, 0
  store ptr %419, ptr %4, align 8
  %420 = extractvalue { ptr, i32 } %418, 1
  store i32 %420, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #8
  br label %714

421:                                              ; preds = %410
  %422 = landingpad { ptr, i32 }
          cleanup
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %4, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %5, align 4
  br label %461

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

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

430:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #8
  %431 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %59)
          to label %432 unwind label %439

432:                                              ; preds = %430
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %61, i32 noundef 1, ptr noundef @.str.14, i32 noundef 38, ptr noundef %431)
          to label %433 unwind label %439

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

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

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

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

443:                                              ; preds = %433
  %444 = landingpad { ptr, i32 }
          cleanup
  %445 = extractvalue { ptr, i32 } %444, 0
  store ptr %445, ptr %4, align 8
  %446 = extractvalue { ptr, i32 } %444, 1
  store i32 %446, ptr %5, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  br label %447

447:                                              ; preds = %443, %439
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  br label %448

448:                                              ; preds = %447, %435
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  br label %460

449:                                              ; preds = %434, %414
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #8
  %450 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #8
  store i32 2, ptr %62, align 4, !tbaa !9
  %451 = load ptr, ptr %450, align 8, !tbaa !11
  %452 = getelementptr inbounds ptr, ptr %451, i64 2
  %453 = load ptr, ptr %452, align 8
  %454 = invoke noundef zeroext i1 %453(ptr noundef nonnull align 8 dereferenceable(88) %450, ptr noundef nonnull align 4 dereferenceable(4) %62, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %455 unwind label %462

455:                                              ; preds = %449
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #8
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA2_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %63, ptr noundef @.str.22, ptr noundef @.str.20, ptr noundef nonnull align 1 dereferenceable(2) @.str.4, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %456 unwind label %466

456:                                              ; preds = %455
  %457 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
          to label %458 unwind label %470

458:                                              ; preds = %456
  br i1 %457, label %459, label %474

459:                                              ; preds = %458
  br label %494

460:                                              ; preds = %448, %425
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #8
  br label %461

461:                                              ; preds = %460, %421
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #8
  br label %714

462:                                              ; preds = %449
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %4, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #8
  br label %714

466:                                              ; preds = %455
  %467 = landingpad { ptr, i32 }
          cleanup
  %468 = extractvalue { ptr, i32 } %467, 0
  store ptr %468, ptr %4, align 8
  %469 = extractvalue { ptr, i32 } %467, 1
  store i32 %469, ptr %5, align 4
  br label %507

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

474:                                              ; preds = %458
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %475 unwind label %480

475:                                              ; preds = %474
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #8
  %476 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
          to label %477 unwind label %484

477:                                              ; preds = %475
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %65, i32 noundef 1, ptr noundef @.str.14, i32 noundef 40, ptr noundef %476)
          to label %478 unwind label %484

478:                                              ; preds = %477
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %479 unwind label %488

479:                                              ; preds = %478
  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 %494

480:                                              ; preds = %474
  %481 = landingpad { ptr, i32 }
          cleanup
  %482 = extractvalue { ptr, i32 } %481, 0
  store ptr %482, ptr %4, align 8
  %483 = extractvalue { ptr, i32 } %481, 1
  store i32 %483, ptr %5, align 4
  br label %493

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

488:                                              ; preds = %478
  %489 = landingpad { ptr, i32 }
          cleanup
  %490 = extractvalue { ptr, i32 } %489, 0
  store ptr %490, ptr %4, align 8
  %491 = extractvalue { ptr, i32 } %489, 1
  store i32 %491, ptr %5, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #8
  br label %492

492:                                              ; preds = %488, %484
  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 %493

493:                                              ; preds = %492, %480
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  br label %506

494:                                              ; preds = %479, %459
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #8
  store i32 0, ptr %67, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #8
  %495 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #8
  store i32 10, ptr %69, align 4, !tbaa !9
  %496 = load ptr, ptr %495, align 8, !tbaa !11
  %497 = getelementptr inbounds ptr, ptr %496, i64 2
  %498 = load ptr, ptr %497, align 8
  %499 = invoke noundef zeroext i1 %498(ptr noundef nonnull align 8 dereferenceable(88) %495, ptr noundef nonnull align 4 dereferenceable(4) %69, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %500 unwind label %508

500:                                              ; preds = %494
  %501 = zext i1 %499 to i8
  store i8 %501, ptr %68, align 1, !tbaa !13
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIibEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %66, ptr noundef @.str.23, ptr noundef @.str.24, ptr noundef nonnull align 4 dereferenceable(4) %67, ptr noundef nonnull align 1 dereferenceable(1) %68, ptr noundef null)
          to label %502 unwind label %508

502:                                              ; preds = %500
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #8
  %503 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %66)
          to label %504 unwind label %512

504:                                              ; preds = %502
  br i1 %503, label %505, label %516

505:                                              ; preds = %504
  br label %536

506:                                              ; preds = %493, %470
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #8
  br label %507

507:                                              ; preds = %506, %466
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #8
  br label %714

508:                                              ; preds = %500, %494
  %509 = landingpad { ptr, i32 }
          cleanup
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %4, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #8
  br label %549

512:                                              ; preds = %502
  %513 = landingpad { ptr, i32 }
          cleanup
  %514 = extractvalue { ptr, i32 } %513, 0
  store ptr %514, ptr %4, align 8
  %515 = extractvalue { ptr, i32 } %513, 1
  store i32 %515, ptr %5, align 4
  br label %548

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

517:                                              ; preds = %516
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #8
  %518 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %66)
          to label %519 unwind label %526

519:                                              ; preds = %517
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %71, i32 noundef 1, ptr noundef @.str.14, i32 noundef 41, ptr noundef %518)
          to label %520 unwind label %526

520:                                              ; preds = %519
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %521 unwind label %530

521:                                              ; preds = %520
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  br label %536

522:                                              ; preds = %516
  %523 = landingpad { ptr, i32 }
          cleanup
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %4, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %5, align 4
  br label %535

526:                                              ; preds = %519, %517
  %527 = landingpad { ptr, i32 }
          cleanup
  %528 = extractvalue { ptr, i32 } %527, 0
  store ptr %528, ptr %4, align 8
  %529 = extractvalue { ptr, i32 } %527, 1
  store i32 %529, ptr %5, align 4
  br label %534

530:                                              ; preds = %520
  %531 = landingpad { ptr, i32 }
          cleanup
  %532 = extractvalue { ptr, i32 } %531, 0
  store ptr %532, ptr %4, align 8
  %533 = extractvalue { ptr, i32 } %531, 1
  store i32 %533, ptr %5, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #8
  br label %534

534:                                              ; preds = %530, %526
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  br label %535

535:                                              ; preds = %534, %522
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  br label %548

536:                                              ; preds = %521, %505
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #8
  store i32 1, ptr %73, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #8
  %537 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #8
  store i32 8, ptr %75, align 4, !tbaa !9
  %538 = load ptr, ptr %537, align 8, !tbaa !11
  %539 = getelementptr inbounds ptr, ptr %538, i64 3
  %540 = load ptr, ptr %539, align 8
  %541 = invoke noundef zeroext i1 %540(ptr noundef nonnull align 8 dereferenceable(88) %537, ptr noundef nonnull align 4 dereferenceable(4) %75)
          to label %542 unwind label %550

542:                                              ; preds = %536
  %543 = zext i1 %541 to i8
  store i8 %543, ptr %74, align 1, !tbaa !13
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIibEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %72, ptr noundef @.str.25, ptr noundef @.str.26, ptr noundef nonnull align 4 dereferenceable(4) %73, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %544 unwind label %550

544:                                              ; preds = %542
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #8
  %545 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %72)
          to label %546 unwind label %554

546:                                              ; preds = %544
  br i1 %545, label %547, label %558

547:                                              ; preds = %546
  br label %578

548:                                              ; preds = %535, %512
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #8
  br label %549

549:                                              ; preds = %548, %508
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #8
  br label %714

550:                                              ; preds = %542, %536
  %551 = landingpad { ptr, i32 }
          cleanup
  %552 = extractvalue { ptr, i32 } %551, 0
  store ptr %552, ptr %4, align 8
  %553 = extractvalue { ptr, i32 } %551, 1
  store i32 %553, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #8
  br label %591

554:                                              ; preds = %544
  %555 = landingpad { ptr, i32 }
          cleanup
  %556 = extractvalue { ptr, i32 } %555, 0
  store ptr %556, ptr %4, align 8
  %557 = extractvalue { ptr, i32 } %555, 1
  store i32 %557, ptr %5, align 4
  br label %590

558:                                              ; preds = %546
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76)
          to label %559 unwind label %564

559:                                              ; preds = %558
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  %560 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %72)
          to label %561 unwind label %568

561:                                              ; preds = %559
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %77, i32 noundef 1, ptr noundef @.str.14, i32 noundef 44, ptr noundef %560)
          to label %562 unwind label %568

562:                                              ; preds = %561
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %76)
          to label %563 unwind label %572

563:                                              ; preds = %562
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  br label %578

564:                                              ; preds = %558
  %565 = landingpad { ptr, i32 }
          cleanup
  %566 = extractvalue { ptr, i32 } %565, 0
  store ptr %566, ptr %4, align 8
  %567 = extractvalue { ptr, i32 } %565, 1
  store i32 %567, ptr %5, align 4
  br label %577

568:                                              ; preds = %561, %559
  %569 = landingpad { ptr, i32 }
          cleanup
  %570 = extractvalue { ptr, i32 } %569, 0
  store ptr %570, ptr %4, align 8
  %571 = extractvalue { ptr, i32 } %569, 1
  store i32 %571, ptr %5, align 4
  br label %576

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

576:                                              ; preds = %572, %568
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  br label %577

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

578:                                              ; preds = %563, %547
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #8
  store i32 1, ptr %79, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #8
  %579 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #8
  store i32 4, ptr %81, align 4, !tbaa !9
  %580 = load ptr, ptr %579, align 8, !tbaa !11
  %581 = getelementptr inbounds ptr, ptr %580, i64 3
  %582 = load ptr, ptr %581, align 8
  %583 = invoke noundef zeroext i1 %582(ptr noundef nonnull align 8 dereferenceable(88) %579, ptr noundef nonnull align 4 dereferenceable(4) %81)
          to label %584 unwind label %592

584:                                              ; preds = %578
  %585 = zext i1 %583 to i8
  store i8 %585, ptr %80, align 1, !tbaa !13
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIibEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %78, ptr noundef @.str.25, ptr noundef @.str.27, ptr noundef nonnull align 4 dereferenceable(4) %79, ptr noundef nonnull align 1 dereferenceable(1) %80)
          to label %586 unwind label %592

586:                                              ; preds = %584
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #8
  %587 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %78)
          to label %588 unwind label %596

588:                                              ; preds = %586
  br i1 %587, label %589, label %600

589:                                              ; preds = %588
  br label %620

590:                                              ; preds = %577, %554
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #8
  br label %591

591:                                              ; preds = %590, %550
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #8
  br label %714

592:                                              ; preds = %584, %578
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %4, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #8
  br label %633

596:                                              ; preds = %586
  %597 = landingpad { ptr, i32 }
          cleanup
  %598 = extractvalue { ptr, i32 } %597, 0
  store ptr %598, ptr %4, align 8
  %599 = extractvalue { ptr, i32 } %597, 1
  store i32 %599, ptr %5, align 4
  br label %632

600:                                              ; preds = %588
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82)
          to label %601 unwind label %606

601:                                              ; preds = %600
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  %602 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %78)
          to label %603 unwind label %610

603:                                              ; preds = %601
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %83, i32 noundef 1, ptr noundef @.str.14, i32 noundef 45, ptr noundef %602)
          to label %604 unwind label %610

604:                                              ; preds = %603
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef nonnull align 8 dereferenceable(8) %82)
          to label %605 unwind label %614

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

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

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

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

618:                                              ; preds = %614, %610
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  br label %619

619:                                              ; preds = %618, %606
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  br label %632

620:                                              ; preds = %605, %589
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #8
  store i32 1, ptr %85, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #8
  %621 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #8
  store i32 1, ptr %87, align 4, !tbaa !9
  %622 = load ptr, ptr %621, align 8, !tbaa !11
  %623 = getelementptr inbounds ptr, ptr %622, i64 3
  %624 = load ptr, ptr %623, align 8
  %625 = invoke noundef zeroext i1 %624(ptr noundef nonnull align 8 dereferenceable(88) %621, ptr noundef nonnull align 4 dereferenceable(4) %87)
          to label %626 unwind label %634

626:                                              ; preds = %620
  %627 = zext i1 %625 to i8
  store i8 %627, ptr %86, align 1, !tbaa !13
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIibEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %84, ptr noundef @.str.25, ptr noundef @.str.28, ptr noundef nonnull align 4 dereferenceable(4) %85, ptr noundef nonnull align 1 dereferenceable(1) %86)
          to label %628 unwind label %634

628:                                              ; preds = %626
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #8
  %629 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %84)
          to label %630 unwind label %638

630:                                              ; preds = %628
  br i1 %629, label %631, label %642

631:                                              ; preds = %630
  br label %662

632:                                              ; preds = %619, %596
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #8
  br label %633

633:                                              ; preds = %632, %592
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #8
  br label %714

634:                                              ; preds = %626, %620
  %635 = landingpad { ptr, i32 }
          cleanup
  %636 = extractvalue { ptr, i32 } %635, 0
  store ptr %636, ptr %4, align 8
  %637 = extractvalue { ptr, i32 } %635, 1
  store i32 %637, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #8
  br label %675

638:                                              ; preds = %628
  %639 = landingpad { ptr, i32 }
          cleanup
  %640 = extractvalue { ptr, i32 } %639, 0
  store ptr %640, ptr %4, align 8
  %641 = extractvalue { ptr, i32 } %639, 1
  store i32 %641, ptr %5, align 4
  br label %674

642:                                              ; preds = %630
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %643 unwind label %648

643:                                              ; preds = %642
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #8
  %644 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %84)
          to label %645 unwind label %652

645:                                              ; preds = %643
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %89, i32 noundef 1, ptr noundef @.str.14, i32 noundef 46, ptr noundef %644)
          to label %646 unwind label %652

646:                                              ; preds = %645
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %647 unwind label %656

647:                                              ; preds = %646
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  br label %662

648:                                              ; preds = %642
  %649 = landingpad { ptr, i32 }
          cleanup
  %650 = extractvalue { ptr, i32 } %649, 0
  store ptr %650, ptr %4, align 8
  %651 = extractvalue { ptr, i32 } %649, 1
  store i32 %651, ptr %5, align 4
  br label %661

652:                                              ; preds = %645, %643
  %653 = landingpad { ptr, i32 }
          cleanup
  %654 = extractvalue { ptr, i32 } %653, 0
  store ptr %654, ptr %4, align 8
  %655 = extractvalue { ptr, i32 } %653, 1
  store i32 %655, ptr %5, align 4
  br label %660

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

660:                                              ; preds = %656, %652
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #8
  br label %661

661:                                              ; preds = %660, %648
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  br label %674

662:                                              ; preds = %647, %631
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %90) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #8
  store i32 0, ptr %91, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #8
  %663 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #8
  store i32 20, ptr %93, align 4, !tbaa !9
  %664 = load ptr, ptr %663, align 8, !tbaa !11
  %665 = getelementptr inbounds ptr, ptr %664, i64 3
  %666 = load ptr, ptr %665, align 8
  %667 = invoke noundef zeroext i1 %666(ptr noundef nonnull align 8 dereferenceable(88) %663, ptr noundef nonnull align 4 dereferenceable(4) %93)
          to label %668 unwind label %676

668:                                              ; preds = %662
  %669 = zext i1 %667 to i8
  store i8 %669, ptr %92, align 1, !tbaa !13
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIibEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %90, ptr noundef @.str.23, ptr noundef @.str.29, ptr noundef nonnull align 4 dereferenceable(4) %91, ptr noundef nonnull align 1 dereferenceable(1) %92, ptr noundef null)
          to label %670 unwind label %676

670:                                              ; preds = %668
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #8
  %671 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %90)
          to label %672 unwind label %680

672:                                              ; preds = %670
  br i1 %671, label %673, label %684

673:                                              ; preds = %672
  br label %704

674:                                              ; preds = %661, %638
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #8
  br label %675

675:                                              ; preds = %674, %634
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #8
  br label %714

676:                                              ; preds = %668, %662
  %677 = landingpad { ptr, i32 }
          cleanup
  %678 = extractvalue { ptr, i32 } %677, 0
  store ptr %678, ptr %4, align 8
  %679 = extractvalue { ptr, i32 } %677, 1
  store i32 %679, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #8
  br label %713

680:                                              ; preds = %670
  %681 = landingpad { ptr, i32 }
          cleanup
  %682 = extractvalue { ptr, i32 } %681, 0
  store ptr %682, ptr %4, align 8
  %683 = extractvalue { ptr, i32 } %681, 1
  store i32 %683, ptr %5, align 4
  br label %712

684:                                              ; preds = %672
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94)
          to label %685 unwind label %690

685:                                              ; preds = %684
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  %686 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %90)
          to label %687 unwind label %694

687:                                              ; preds = %685
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %95, i32 noundef 1, ptr noundef @.str.14, i32 noundef 47, ptr noundef %686)
          to label %688 unwind label %694

688:                                              ; preds = %687
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %95, ptr noundef nonnull align 8 dereferenceable(8) %94)
          to label %689 unwind label %698

689:                                              ; preds = %688
  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 %704

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

694:                                              ; preds = %687, %685
  %695 = landingpad { ptr, i32 }
          cleanup
  %696 = extractvalue { ptr, i32 } %695, 0
  store ptr %696, ptr %4, align 8
  %697 = extractvalue { ptr, i32 } %695, 1
  store i32 %697, ptr %5, align 4
  br label %702

698:                                              ; preds = %688
  %699 = landingpad { ptr, i32 }
          cleanup
  %700 = extractvalue { ptr, i32 } %699, 0
  store ptr %700, ptr %4, align 8
  %701 = extractvalue { ptr, i32 } %699, 1
  store i32 %701, ptr %5, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %95) #8
  br label %702

702:                                              ; preds = %698, %694
  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 %703

703:                                              ; preds = %702, %690
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  br label %712

704:                                              ; preds = %689, %673
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #8
  %705 = load ptr, ptr %3, align 8, !tbaa !5
  %706 = icmp eq ptr %705, null
  br i1 %706, label %711, label %707

707:                                              ; preds = %704
  %708 = load ptr, ptr %705, align 8, !tbaa !11
  %709 = getelementptr inbounds ptr, ptr %708, i64 1
  %710 = load ptr, ptr %709, align 8
  call void %710(ptr noundef nonnull align 8 dereferenceable(88) %705) #8
  br label %711

711:                                              ; preds = %707, %704
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #8
  ret void

712:                                              ; preds = %703, %680
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #8
  br label %713

713:                                              ; preds = %712, %676
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #8
  br label %714

714:                                              ; preds = %713, %675, %633, %591, %549, %507, %462, %461, %417, %416, %372
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #8
  br label %715

715:                                              ; preds = %714, %371, %335, %304, %273, %242, %233, %224, %215, %206, %197, %188, %179, %170, %158
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #8
  br label %716

716:                                              ; preds = %715
  %717 = load ptr, ptr %4, align 8
  %718 = load i32, ptr %5, align 4
  %719 = insertvalue { ptr, i32 } poison, ptr %717, 0
  %720 = insertvalue { ptr, i32 } %719, i32 %718, 1
  resume { ptr, i32 } %720
}

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

declare void @_ZN5cmudb14ExtendibleHashIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC1Em(ptr noundef nonnull align 8 dereferenceable(88), i64 noundef) unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 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

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

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

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

declare noundef i32 @_ZNK5cmudb14ExtendibleHashIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE13GetLocalDepthEi(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef) #4

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

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

; 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 #4

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

; 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: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5 align 2

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

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

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

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

attributes #0 = { 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 #1 = { 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 #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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind "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 = { 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 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"vtable pointer", !8, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.0" = type { i8 }
%"class.testing::AssertionResult" = type { i8, %"class.testing::internal::scoped_ptr" }
%"class.testing::internal::scoped_ptr" = type { ptr }
%"class.testing::Message" = type { %"class.testing::internal::scoped_ptr.3" }
%"class.testing::internal::scoped_ptr.3" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }

@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [17 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5cmudb34ExtendibleHashTest_SampleTest_Test8TestBodyEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(16) %0) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca i32, align 4
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator.0", align 1
  %5 = alloca i32, align 4
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator.0", align 1
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator.0", align 1
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator.0", align 1
  %14 = alloca i32, align 4
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator.0", align 1
  %17 = alloca i32, align 4
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator.0", align 1
  %20 = alloca i32, align 4
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator.0", align 1
  %23 = alloca i32, align 4
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator.0", align 1
  %26 = alloca i32, align 4
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator.0", align 1
  %29 = alloca %"class.testing::AssertionResult", align 8
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca %"class.testing::Message", align 8
  %33 = alloca %"class.testing::internal::AssertHelper", align 8
  %34 = alloca %"class.testing::AssertionResult", align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca %"class.testing::Message", align 8
  %38 = alloca %"class.testing::internal::AssertHelper", align 8
  %39 = alloca %"class.testing::AssertionResult", align 8
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca %"class.testing::Message", align 8
  %43 = alloca %"class.testing::internal::AssertHelper", align 8
  %44 = alloca %"class.testing::AssertionResult", align 8
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca %"class.testing::Message", align 8
  %48 = alloca %"class.testing::internal::AssertHelper", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca i32, align 4
  %51 = alloca %"class.testing::AssertionResult", align 8
  %52 = alloca %"class.testing::Message", align 8
  %53 = alloca %"class.testing::internal::AssertHelper", align 8
  %54 = alloca i32, align 4
  %55 = alloca %"class.testing::AssertionResult", align 8
  %56 = alloca %"class.testing::Message", align 8
  %57 = alloca %"class.testing::internal::AssertHelper", align 8
  %58 = alloca i32, align 4
  %59 = alloca %"class.testing::AssertionResult", align 8
  %60 = alloca %"class.testing::Message", align 8
  %61 = alloca %"class.testing::internal::AssertHelper", align 8
  %62 = alloca %"class.testing::AssertionResult", align 8
  %63 = alloca i32, align 4
  %64 = alloca i8, align 1
  %65 = alloca i32, align 4
  %66 = alloca %"class.testing::Message", align 8
  %67 = alloca %"class.testing::internal::AssertHelper", align 8
  %68 = alloca %"class.testing::AssertionResult", align 8
  %69 = alloca i32, align 4
  %70 = alloca i8, align 1
  %71 = alloca i32, align 4
  %72 = alloca %"class.testing::Message", align 8
  %73 = alloca %"class.testing::internal::AssertHelper", align 8
  %74 = alloca %"class.testing::AssertionResult", align 8
  %75 = alloca i32, align 4
  %76 = alloca i8, align 1
  %77 = alloca i32, align 4
  %78 = alloca %"class.testing::Message", align 8
  %79 = alloca %"class.testing::internal::AssertHelper", align 8
  %80 = alloca %"class.testing::AssertionResult", align 8
  %81 = alloca i32, align 4
  %82 = alloca i8, align 1
  %83 = alloca i32, align 4
  %84 = alloca %"class.testing::Message", align 8
  %85 = alloca %"class.testing::internal::AssertHelper", align 8
  %86 = alloca %"class.testing::AssertionResult", align 8
  %87 = alloca i32, align 4
  %88 = alloca i8, align 1
  %89 = alloca i32, align 4
  %90 = alloca %"class.testing::Message", align 8
  %91 = alloca %"class.testing::internal::AssertHelper", align 8
  %92 = tail call noalias noundef nonnull dereferenceable(88) ptr @_Znwm(i64 noundef 88) #8
  invoke void @_ZN5cmudb14ExtendibleHashIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC1Em(ptr noundef nonnull align 8 dereferenceable(88) %92, i64 noundef 2)
          to label %93 unwind label %141

93:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #9
  store i32 1, ptr %2, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %94 unwind label %143

94:                                               ; preds = %93
  %95 = load ptr, ptr %92, align 8, !tbaa !9
  %96 = getelementptr inbounds i8, ptr %95, i64 32
  %97 = load ptr, ptr %96, align 8
  invoke void %97(ptr noundef nonnull align 8 dereferenceable(88) %92, ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %98 unwind label %145

98:                                               ; preds = %94
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #9
  store i32 2, ptr %5, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %99 unwind label %148

99:                                               ; preds = %98
  %100 = load ptr, ptr %92, align 8, !tbaa !9
  %101 = getelementptr inbounds i8, ptr %100, i64 32
  %102 = load ptr, ptr %101, align 8
  invoke void %102(ptr noundef nonnull align 8 dereferenceable(88) %92, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %103 unwind label %150

103:                                              ; preds = %99
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #9
  store i32 3, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %104 unwind label %153

104:                                              ; preds = %103
  %105 = load ptr, ptr %92, align 8, !tbaa !9
  %106 = getelementptr inbounds i8, ptr %105, i64 32
  %107 = load ptr, ptr %106, align 8
  invoke void %107(ptr noundef nonnull align 8 dereferenceable(88) %92, ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %108 unwind label %155

108:                                              ; preds = %104
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #9
  store i32 4, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %109 unwind label %158

109:                                              ; preds = %108
  %110 = load ptr, ptr %92, align 8, !tbaa !9
  %111 = getelementptr inbounds i8, ptr %110, i64 32
  %112 = load ptr, ptr %111, align 8
  invoke void %112(ptr noundef nonnull align 8 dereferenceable(88) %92, ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %113 unwind label %160

113:                                              ; preds = %109
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #9
  store i32 5, ptr %14, align 4, !tbaa !5
  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 @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %114 unwind label %163

114:                                              ; preds = %113
  %115 = load ptr, ptr %92, align 8, !tbaa !9
  %116 = getelementptr inbounds i8, ptr %115, i64 32
  %117 = load ptr, ptr %116, align 8
  invoke void %117(ptr noundef nonnull align 8 dereferenceable(88) %92, ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %118 unwind label %165

118:                                              ; preds = %114
  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 @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #9
  store i32 6, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %119 unwind label %168

119:                                              ; preds = %118
  %120 = load ptr, ptr %92, align 8, !tbaa !9
  %121 = getelementptr inbounds i8, ptr %120, i64 32
  %122 = load ptr, ptr %121, align 8
  invoke void %122(ptr noundef nonnull align 8 dereferenceable(88) %92, ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %123 unwind label %170

123:                                              ; preds = %119
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #9
  store i32 7, ptr %20, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %124 unwind label %173

124:                                              ; preds = %123
  %125 = load ptr, ptr %92, align 8, !tbaa !9
  %126 = getelementptr inbounds i8, ptr %125, i64 32
  %127 = load ptr, ptr %126, align 8
  invoke void %127(ptr noundef nonnull align 8 dereferenceable(88) %92, ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %128 unwind label %175

128:                                              ; preds = %124
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #9
  store i32 8, ptr %23, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %129 unwind label %178

129:                                              ; preds = %128
  %130 = load ptr, ptr %92, align 8, !tbaa !9
  %131 = getelementptr inbounds i8, ptr %130, i64 32
  %132 = load ptr, ptr %131, align 8
  invoke void %132(ptr noundef nonnull align 8 dereferenceable(88) %92, ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %133 unwind label %180

133:                                              ; preds = %129
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #9
  store i32 9, ptr %26, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %134 unwind label %183

134:                                              ; preds = %133
  %135 = load ptr, ptr %92, align 8, !tbaa !9
  %136 = getelementptr inbounds i8, ptr %135, i64 32
  %137 = load ptr, ptr %136, align 8
  invoke void %137(ptr noundef nonnull align 8 dereferenceable(88) %92, ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %138 unwind label %185

138:                                              ; preds = %134
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #9
  store i32 2, ptr %30, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #9
  %139 = call noundef i32 @_ZNK5cmudb14ExtendibleHashIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE13GetLocalDepthEi(ptr noundef nonnull align 8 dereferenceable(88) %92, i32 noundef 0)
  store i32 %139, ptr %31, align 4, !tbaa !5
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %29, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.13, ptr noundef nonnull align 4 dereferenceable(4) %30, ptr noundef nonnull align 4 dereferenceable(4) %31)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #9
  %140 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %29)
  br i1 %140, label %202, label %188

141:                                              ; preds = %1
  %142 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %92, i64 noundef 88) #10
  br label %469

143:                                              ; preds = %93
  %144 = landingpad { ptr, i32 }
          cleanup
  br label %147

145:                                              ; preds = %94
  %146 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  br label %147

147:                                              ; preds = %145, %143
  %.pn = phi { ptr, i32 } [ %146, %145 ], [ %144, %143 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #9
  br label %469

148:                                              ; preds = %98
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %152

150:                                              ; preds = %99
  %151 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  br label %152

152:                                              ; preds = %150, %148
  %.pn68 = phi { ptr, i32 } [ %151, %150 ], [ %149, %148 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #9
  br label %469

153:                                              ; preds = %103
  %154 = landingpad { ptr, i32 }
          cleanup
  br label %157

155:                                              ; preds = %104
  %156 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  br label %157

157:                                              ; preds = %155, %153
  %.pn70 = phi { ptr, i32 } [ %156, %155 ], [ %154, %153 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #9
  br label %469

158:                                              ; preds = %108
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %162

160:                                              ; preds = %109
  %161 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  br label %162

162:                                              ; preds = %160, %158
  %.pn72 = phi { ptr, i32 } [ %161, %160 ], [ %159, %158 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #9
  br label %469

163:                                              ; preds = %113
  %164 = landingpad { ptr, i32 }
          cleanup
  br label %167

165:                                              ; preds = %114
  %166 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  br label %167

167:                                              ; preds = %165, %163
  %.pn74 = phi { ptr, i32 } [ %166, %165 ], [ %164, %163 ]
  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 @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #9
  br label %469

168:                                              ; preds = %118
  %169 = landingpad { ptr, i32 }
          cleanup
  br label %172

170:                                              ; preds = %119
  %171 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  br label %172

172:                                              ; preds = %170, %168
  %.pn76 = phi { ptr, i32 } [ %171, %170 ], [ %169, %168 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #9
  br label %469

173:                                              ; preds = %123
  %174 = landingpad { ptr, i32 }
          cleanup
  br label %177

175:                                              ; preds = %124
  %176 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  br label %177

177:                                              ; preds = %175, %173
  %.pn78 = phi { ptr, i32 } [ %176, %175 ], [ %174, %173 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #9
  br label %469

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

180:                                              ; preds = %129
  %181 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  br label %182

182:                                              ; preds = %180, %178
  %.pn80 = phi { ptr, i32 } [ %181, %180 ], [ %179, %178 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #9
  br label %469

183:                                              ; preds = %133
  %184 = landingpad { ptr, i32 }
          cleanup
  br label %187

185:                                              ; preds = %134
  %186 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  br label %187

187:                                              ; preds = %185, %183
  %.pn82 = phi { ptr, i32 } [ %186, %185 ], [ %184, %183 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #9
  br label %469

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

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

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

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

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

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

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

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

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

201:                                              ; preds = %200, %194
  %.pn84.pn = phi { ptr, i32 } [ %.pn84, %200 ], [ %195, %194 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #9
  br label %469

202:                                              ; preds = %138, %193
  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 @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #9
  store i32 3, ptr %35, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #9
  %203 = call noundef i32 @_ZNK5cmudb14ExtendibleHashIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE13GetLocalDepthEi(ptr noundef nonnull align 8 dereferenceable(88) %92, i32 noundef 1)
  store i32 %203, ptr %36, align 4, !tbaa !5
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %34, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.16, ptr noundef nonnull align 4 dereferenceable(4) %35, ptr noundef nonnull align 4 dereferenceable(4) %36)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #9
  %204 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %34)
  br i1 %204, label %219, label %205

205:                                              ; preds = %202
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %206 unwind label %211

206:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #9
  %207 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %34)
          to label %208 unwind label %213

208:                                              ; preds = %206
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %38, i32 noundef 1, ptr noundef nonnull @.str.14, i32 noundef 29, ptr noundef %207)
          to label %209 unwind label %213

209:                                              ; preds = %208
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %210 unwind label %215

210:                                              ; preds = %209
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #9
  br label %219

211:                                              ; preds = %205
  %212 = landingpad { ptr, i32 }
          cleanup
  br label %218

213:                                              ; preds = %208, %206
  %214 = landingpad { ptr, i32 }
          cleanup
  br label %217

215:                                              ; preds = %209
  %216 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  br label %217

217:                                              ; preds = %215, %213
  %.pn87 = phi { ptr, i32 } [ %216, %215 ], [ %214, %213 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  br label %218

218:                                              ; preds = %217, %211
  %.pn87.pn = phi { ptr, i32 } [ %.pn87, %217 ], [ %212, %211 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #9
  br label %469

219:                                              ; preds = %202, %210
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #9
  store i32 2, ptr %40, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #9
  %220 = call noundef i32 @_ZNK5cmudb14ExtendibleHashIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE13GetLocalDepthEi(ptr noundef nonnull align 8 dereferenceable(88) %92, i32 noundef 2)
  store i32 %220, ptr %41, align 4, !tbaa !5
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %39, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.17, ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %41)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #9
  %221 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
  br i1 %221, label %236, label %222

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

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

225:                                              ; preds = %223
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %43, i32 noundef 1, ptr noundef nonnull @.str.14, i32 noundef 30, ptr noundef %224)
          to label %226 unwind label %230

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

227:                                              ; preds = %226
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #9
  br label %236

228:                                              ; preds = %222
  %229 = landingpad { ptr, i32 }
          cleanup
  br label %235

230:                                              ; preds = %225, %223
  %231 = landingpad { ptr, i32 }
          cleanup
  br label %234

232:                                              ; preds = %226
  %233 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #9
  br label %234

234:                                              ; preds = %232, %230
  %.pn90 = phi { ptr, i32 } [ %233, %232 ], [ %231, %230 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  br label %235

235:                                              ; preds = %234, %228
  %.pn90.pn = phi { ptr, i32 } [ %.pn90, %234 ], [ %229, %228 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #9
  br label %469

236:                                              ; preds = %219, %227
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %45) #9
  store i32 2, ptr %45, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %46) #9
  %237 = call noundef i32 @_ZNK5cmudb14ExtendibleHashIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE13GetLocalDepthEi(ptr noundef nonnull align 8 dereferenceable(88) %92, i32 noundef 3)
  store i32 %237, ptr %46, align 4, !tbaa !5
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %44, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.18, ptr noundef nonnull align 4 dereferenceable(4) %45, ptr noundef nonnull align 4 dereferenceable(4) %46)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #9
  %238 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %44)
  br i1 %238, label %253, label %239

239:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %240 unwind label %245

240:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #9
  %241 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %44)
          to label %242 unwind label %247

242:                                              ; preds = %240
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %48, i32 noundef 1, ptr noundef nonnull @.str.14, i32 noundef 31, ptr noundef %241)
          to label %243 unwind label %247

243:                                              ; preds = %242
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %244 unwind label %249

244:                                              ; preds = %243
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #9
  br label %253

245:                                              ; preds = %239
  %246 = landingpad { ptr, i32 }
          cleanup
  br label %252

247:                                              ; preds = %242, %240
  %248 = landingpad { ptr, i32 }
          cleanup
  br label %251

249:                                              ; preds = %243
  %250 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  br label %251

251:                                              ; preds = %249, %247
  %.pn93 = phi { ptr, i32 } [ %250, %249 ], [ %248, %247 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #9
  br label %252

252:                                              ; preds = %251, %245
  %.pn93.pn = phi { ptr, i32 } [ %.pn93, %251 ], [ %246, %245 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #9
  br label %469

253:                                              ; preds = %236, %244
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %49) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %50) #9
  store i32 9, ptr %50, align 4, !tbaa !5
  %254 = load ptr, ptr %92, align 8, !tbaa !9
  %255 = getelementptr inbounds i8, ptr %254, i64 16
  %256 = load ptr, ptr %255, align 8
  %257 = invoke noundef zeroext i1 %256(ptr noundef nonnull align 8 dereferenceable(88) %92, ptr noundef nonnull align 4 dereferenceable(4) %50, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %258 unwind label %261

258:                                              ; preds = %253
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %51) #9
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA2_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %51, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.20, ptr noundef nonnull align 1 dereferenceable(2) @.str.11, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %259 unwind label %263

259:                                              ; preds = %258
  %260 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %51)
  br i1 %260, label %279, label %265

261:                                              ; preds = %253
  %262 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #9
  br label %468

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

265:                                              ; preds = %259
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52)
          to label %266 unwind label %271

266:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #9
  %267 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %51)
          to label %268 unwind label %273

268:                                              ; preds = %266
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %53, i32 noundef 1, ptr noundef nonnull @.str.14, i32 noundef 36, ptr noundef %267)
          to label %269 unwind label %273

269:                                              ; preds = %268
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %52)
          to label %270 unwind label %275

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

271:                                              ; preds = %265
  %272 = landingpad { ptr, i32 }
          cleanup
  br label %278

273:                                              ; preds = %268, %266
  %274 = landingpad { ptr, i32 }
          cleanup
  br label %277

275:                                              ; preds = %269
  %276 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #9
  br label %277

277:                                              ; preds = %275, %273
  %.pn96 = phi { ptr, i32 } [ %276, %275 ], [ %274, %273 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  br label %278

278:                                              ; preds = %277, %271
  %.pn96.pn = phi { ptr, i32 } [ %.pn96, %277 ], [ %272, %271 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #9
  br label %287

279:                                              ; preds = %259, %270
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %54) #9
  store i32 8, ptr %54, align 4, !tbaa !5
  %280 = load ptr, ptr %92, align 8, !tbaa !9
  %281 = getelementptr inbounds i8, ptr %280, i64 16
  %282 = load ptr, ptr %281, align 8
  %283 = invoke noundef zeroext i1 %282(ptr noundef nonnull align 8 dereferenceable(88) %92, ptr noundef nonnull align 4 dereferenceable(4) %54, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %284 unwind label %288

284:                                              ; preds = %279
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %54) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %55) #9
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA2_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %55, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.20, ptr noundef nonnull align 1 dereferenceable(2) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %285 unwind label %290

285:                                              ; preds = %284
  %286 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %55)
  br i1 %286, label %306, label %292

287:                                              ; preds = %278, %263
  %.pn96.pn.pn = phi { ptr, i32 } [ %.pn96.pn, %278 ], [ %264, %263 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #9
  br label %468

288:                                              ; preds = %279
  %289 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %54) #9
  br label %468

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

292:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %293 unwind label %298

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

295:                                              ; preds = %293
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %57, i32 noundef 1, ptr noundef nonnull @.str.14, i32 noundef 38, ptr noundef %294)
          to label %296 unwind label %300

296:                                              ; preds = %295
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %297 unwind label %302

297:                                              ; preds = %296
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #9
  br label %306

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

300:                                              ; preds = %295, %293
  %301 = landingpad { ptr, i32 }
          cleanup
  br label %304

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

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

305:                                              ; preds = %304, %298
  %.pn100.pn = phi { ptr, i32 } [ %.pn100, %304 ], [ %299, %298 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #9
  br label %314

306:                                              ; preds = %285, %297
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %58) #9
  store i32 2, ptr %58, align 4, !tbaa !5
  %307 = load ptr, ptr %92, align 8, !tbaa !9
  %308 = getelementptr inbounds i8, ptr %307, i64 16
  %309 = load ptr, ptr %308, align 8
  %310 = invoke noundef zeroext i1 %309(ptr noundef nonnull align 8 dereferenceable(88) %92, ptr noundef nonnull align 4 dereferenceable(4) %58, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %311 unwind label %315

311:                                              ; preds = %306
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %58) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %59) #9
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA2_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %59, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.20, ptr noundef nonnull align 1 dereferenceable(2) @.str.4, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %312 unwind label %317

312:                                              ; preds = %311
  %313 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %59)
  br i1 %313, label %333, label %319

314:                                              ; preds = %305, %290
  %.pn100.pn.pn = phi { ptr, i32 } [ %.pn100.pn, %305 ], [ %291, %290 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #9
  br label %468

315:                                              ; preds = %306
  %316 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %58) #9
  br label %468

317:                                              ; preds = %311
  %318 = landingpad { ptr, i32 }
          cleanup
  br label %342

319:                                              ; preds = %312
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %320 unwind label %325

320:                                              ; preds = %319
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #9
  %321 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %59)
          to label %322 unwind label %327

322:                                              ; preds = %320
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %61, i32 noundef 1, ptr noundef nonnull @.str.14, i32 noundef 40, ptr noundef %321)
          to label %323 unwind label %327

323:                                              ; preds = %322
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %324 unwind label %329

324:                                              ; preds = %323
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #9
  br label %333

325:                                              ; preds = %319
  %326 = landingpad { ptr, i32 }
          cleanup
  br label %332

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

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

331:                                              ; preds = %329, %327
  %.pn104 = phi { ptr, i32 } [ %330, %329 ], [ %328, %327 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #9
  br label %332

332:                                              ; preds = %331, %325
  %.pn104.pn = phi { ptr, i32 } [ %.pn104, %331 ], [ %326, %325 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #9
  br label %342

333:                                              ; preds = %312, %324
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %59) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %62) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %63) #9
  store i32 0, ptr %63, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %64) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %65) #9
  store i32 10, ptr %65, align 4, !tbaa !5
  %334 = load ptr, ptr %92, align 8, !tbaa !9
  %335 = getelementptr inbounds i8, ptr %334, i64 16
  %336 = load ptr, ptr %335, align 8
  %337 = invoke noundef zeroext i1 %336(ptr noundef nonnull align 8 dereferenceable(88) %92, ptr noundef nonnull align 4 dereferenceable(4) %65, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %338 unwind label %343

338:                                              ; preds = %333
  %339 = zext i1 %337 to i8
  store i8 %339, ptr %64, align 1, !tbaa !11
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIibEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %62, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.24, ptr noundef nonnull align 4 dereferenceable(4) %63, ptr noundef nonnull align 1 dereferenceable(1) %64, ptr noundef null)
          to label %340 unwind label %343

340:                                              ; preds = %338
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %65) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %63) #9
  %341 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %62)
  br i1 %341, label %359, label %345

342:                                              ; preds = %332, %317
  %.pn104.pn.pn = phi { ptr, i32 } [ %.pn104.pn, %332 ], [ %318, %317 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %59) #9
  br label %468

343:                                              ; preds = %338, %333
  %344 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %65) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %63) #9
  br label %368

345:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %66) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %66)
          to label %346 unwind label %351

346:                                              ; preds = %345
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #9
  %347 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %62)
          to label %348 unwind label %353

348:                                              ; preds = %346
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %67, i32 noundef 1, ptr noundef nonnull @.str.14, i32 noundef 41, ptr noundef %347)
          to label %349 unwind label %353

349:                                              ; preds = %348
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %66)
          to label %350 unwind label %355

350:                                              ; preds = %349
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #9
  br label %359

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

353:                                              ; preds = %348, %346
  %354 = landingpad { ptr, i32 }
          cleanup
  br label %357

355:                                              ; preds = %349
  %356 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #9
  br label %357

357:                                              ; preds = %355, %353
  %.pn108 = phi { ptr, i32 } [ %356, %355 ], [ %354, %353 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  br label %358

358:                                              ; preds = %357, %351
  %.pn108.pn = phi { ptr, i32 } [ %.pn108, %357 ], [ %352, %351 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #9
  br label %368

359:                                              ; preds = %340, %350
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %62) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %68) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %69) #9
  store i32 1, ptr %69, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %70) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %71) #9
  store i32 8, ptr %71, align 4, !tbaa !5
  %360 = load ptr, ptr %92, align 8, !tbaa !9
  %361 = getelementptr inbounds i8, ptr %360, i64 24
  %362 = load ptr, ptr %361, align 8
  %363 = invoke noundef zeroext i1 %362(ptr noundef nonnull align 8 dereferenceable(88) %92, ptr noundef nonnull align 4 dereferenceable(4) %71)
          to label %364 unwind label %369

364:                                              ; preds = %359
  %365 = zext i1 %363 to i8
  store i8 %365, ptr %70, align 1, !tbaa !11
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIibEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %68, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26, ptr noundef nonnull align 4 dereferenceable(4) %69, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %366 unwind label %369

366:                                              ; preds = %364
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %71) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %70) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %69) #9
  %367 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %68)
  br i1 %367, label %385, label %371

368:                                              ; preds = %358, %343
  %.pn108.pn.pn = phi { ptr, i32 } [ %.pn108.pn, %358 ], [ %344, %343 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %62) #9
  br label %468

369:                                              ; preds = %364, %359
  %370 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %71) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %70) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %69) #9
  br label %394

371:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %372 unwind label %377

372:                                              ; preds = %371
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #9
  %373 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %68)
          to label %374 unwind label %379

374:                                              ; preds = %372
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %73, i32 noundef 1, ptr noundef nonnull @.str.14, i32 noundef 44, ptr noundef %373)
          to label %375 unwind label %379

375:                                              ; preds = %374
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %376 unwind label %381

376:                                              ; preds = %375
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #9
  br label %385

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

379:                                              ; preds = %374, %372
  %380 = landingpad { ptr, i32 }
          cleanup
  br label %383

381:                                              ; preds = %375
  %382 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #9
  br label %383

383:                                              ; preds = %381, %379
  %.pn112 = phi { ptr, i32 } [ %382, %381 ], [ %380, %379 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #9
  br label %384

384:                                              ; preds = %383, %377
  %.pn112.pn = phi { ptr, i32 } [ %.pn112, %383 ], [ %378, %377 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %68) #9
  br label %394

385:                                              ; preds = %366, %376
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %68) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %68) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %74) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %75) #9
  store i32 1, ptr %75, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %76) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %77) #9
  store i32 4, ptr %77, align 4, !tbaa !5
  %386 = load ptr, ptr %92, align 8, !tbaa !9
  %387 = getelementptr inbounds i8, ptr %386, i64 24
  %388 = load ptr, ptr %387, align 8
  %389 = invoke noundef zeroext i1 %388(ptr noundef nonnull align 8 dereferenceable(88) %92, ptr noundef nonnull align 4 dereferenceable(4) %77)
          to label %390 unwind label %395

390:                                              ; preds = %385
  %391 = zext i1 %389 to i8
  store i8 %391, ptr %76, align 1, !tbaa !11
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIibEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %74, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.27, ptr noundef nonnull align 4 dereferenceable(4) %75, ptr noundef nonnull align 1 dereferenceable(1) %76)
          to label %392 unwind label %395

392:                                              ; preds = %390
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %77) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %75) #9
  %393 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %74)
  br i1 %393, label %411, label %397

394:                                              ; preds = %384, %369
  %.pn112.pn.pn = phi { ptr, i32 } [ %.pn112.pn, %384 ], [ %370, %369 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %68) #9
  br label %468

395:                                              ; preds = %390, %385
  %396 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %77) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %75) #9
  br label %420

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

398:                                              ; preds = %397
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %79) #9
  %399 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %74)
          to label %400 unwind label %405

400:                                              ; preds = %398
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %79, i32 noundef 1, ptr noundef nonnull @.str.14, i32 noundef 45, ptr noundef %399)
          to label %401 unwind label %405

401:                                              ; preds = %400
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %78)
          to label %402 unwind label %407

402:                                              ; preds = %401
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #9
  br label %411

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

405:                                              ; preds = %400, %398
  %406 = landingpad { ptr, i32 }
          cleanup
  br label %409

407:                                              ; preds = %401
  %408 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #9
  br label %409

409:                                              ; preds = %407, %405
  %.pn116 = phi { ptr, i32 } [ %408, %407 ], [ %406, %405 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #9
  br label %410

410:                                              ; preds = %409, %403
  %.pn116.pn = phi { ptr, i32 } [ %.pn116, %409 ], [ %404, %403 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %74) #9
  br label %420

411:                                              ; preds = %392, %402
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %74) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %80) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %81) #9
  store i32 1, ptr %81, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %82) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %83) #9
  store i32 1, ptr %83, align 4, !tbaa !5
  %412 = load ptr, ptr %92, align 8, !tbaa !9
  %413 = getelementptr inbounds i8, ptr %412, i64 24
  %414 = load ptr, ptr %413, align 8
  %415 = invoke noundef zeroext i1 %414(ptr noundef nonnull align 8 dereferenceable(88) %92, ptr noundef nonnull align 4 dereferenceable(4) %83)
          to label %416 unwind label %421

416:                                              ; preds = %411
  %417 = zext i1 %415 to i8
  store i8 %417, ptr %82, align 1, !tbaa !11
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIibEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %80, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.28, ptr noundef nonnull align 4 dereferenceable(4) %81, ptr noundef nonnull align 1 dereferenceable(1) %82)
          to label %418 unwind label %421

418:                                              ; preds = %416
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %83) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %82) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %81) #9
  %419 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %80)
  br i1 %419, label %437, label %423

420:                                              ; preds = %410, %395
  %.pn116.pn.pn = phi { ptr, i32 } [ %.pn116.pn, %410 ], [ %396, %395 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #9
  br label %468

421:                                              ; preds = %416, %411
  %422 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %83) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %82) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %81) #9
  br label %446

423:                                              ; preds = %418
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %84) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84)
          to label %424 unwind label %429

424:                                              ; preds = %423
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %85) #9
  %425 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %80)
          to label %426 unwind label %431

426:                                              ; preds = %424
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %85, i32 noundef 1, ptr noundef nonnull @.str.14, i32 noundef 46, ptr noundef %425)
          to label %427 unwind label %431

427:                                              ; preds = %426
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %84)
          to label %428 unwind label %433

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

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

431:                                              ; preds = %426, %424
  %432 = landingpad { ptr, i32 }
          cleanup
  br label %435

433:                                              ; preds = %427
  %434 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #9
  br label %435

435:                                              ; preds = %433, %431
  %.pn120 = phi { ptr, i32 } [ %434, %433 ], [ %432, %431 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %85) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #9
  br label %436

436:                                              ; preds = %435, %429
  %.pn120.pn = phi { ptr, i32 } [ %.pn120, %435 ], [ %430, %429 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #9
  br label %446

437:                                              ; preds = %418, %428
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %86) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %87) #9
  store i32 0, ptr %87, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %88) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %89) #9
  store i32 20, ptr %89, align 4, !tbaa !5
  %438 = load ptr, ptr %92, align 8, !tbaa !9
  %439 = getelementptr inbounds i8, ptr %438, i64 24
  %440 = load ptr, ptr %439, align 8
  %441 = invoke noundef zeroext i1 %440(ptr noundef nonnull align 8 dereferenceable(88) %92, ptr noundef nonnull align 4 dereferenceable(4) %89)
          to label %442 unwind label %447

442:                                              ; preds = %437
  %443 = zext i1 %441 to i8
  store i8 %443, ptr %88, align 1, !tbaa !11
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIibEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %86, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.29, ptr noundef nonnull align 4 dereferenceable(4) %87, ptr noundef nonnull align 1 dereferenceable(1) %88, ptr noundef null)
          to label %444 unwind label %447

444:                                              ; preds = %442
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %89) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %88) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %87) #9
  %445 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %86)
  br i1 %445, label %463, label %449

446:                                              ; preds = %436, %421
  %.pn120.pn.pn = phi { ptr, i32 } [ %.pn120.pn, %436 ], [ %422, %421 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #9
  br label %468

447:                                              ; preds = %442, %437
  %448 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %89) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %88) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %87) #9
  br label %467

449:                                              ; preds = %444
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %90) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %90)
          to label %450 unwind label %455

450:                                              ; preds = %449
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %91) #9
  %451 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %86)
          to label %452 unwind label %457

452:                                              ; preds = %450
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %91, i32 noundef 1, ptr noundef nonnull @.str.14, i32 noundef 47, ptr noundef %451)
          to label %453 unwind label %457

453:                                              ; preds = %452
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(8) %90)
          to label %454 unwind label %459

454:                                              ; preds = %453
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #9
  br label %463

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

457:                                              ; preds = %452, %450
  %458 = landingpad { ptr, i32 }
          cleanup
  br label %461

459:                                              ; preds = %453
  %460 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #9
  br label %461

461:                                              ; preds = %459, %457
  %.pn124 = phi { ptr, i32 } [ %460, %459 ], [ %458, %457 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #9
  br label %462

462:                                              ; preds = %461, %455
  %.pn124.pn = phi { ptr, i32 } [ %.pn124, %461 ], [ %456, %455 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #9
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #9
  br label %467

463:                                              ; preds = %444, %454
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86) #9
  %464 = load ptr, ptr %92, align 8, !tbaa !9
  %465 = getelementptr inbounds i8, ptr %464, i64 8
  %466 = load ptr, ptr %465, align 8
  call void %466(ptr noundef nonnull align 8 dereferenceable(88) %92) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #9
  ret void

467:                                              ; preds = %462, %447
  %.pn124.pn.pn = phi { ptr, i32 } [ %.pn124.pn, %462 ], [ %448, %447 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86) #9
  br label %468

468:                                              ; preds = %467, %446, %420, %394, %368, %342, %315, %314, %288, %287, %261
  %.pn124.pn.pn.pn = phi { ptr, i32 } [ %.pn124.pn.pn, %467 ], [ %.pn120.pn.pn, %446 ], [ %.pn116.pn.pn, %420 ], [ %.pn112.pn.pn, %394 ], [ %.pn108.pn.pn, %368 ], [ %.pn104.pn.pn, %342 ], [ %316, %315 ], [ %.pn100.pn.pn, %314 ], [ %289, %288 ], [ %.pn96.pn.pn, %287 ], [ %262, %261 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #9
  br label %469

469:                                              ; preds = %468, %252, %235, %218, %201, %187, %182, %177, %172, %167, %162, %157, %152, %147, %141
  %.pn124.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn124.pn.pn.pn, %468 ], [ %.pn93.pn, %252 ], [ %.pn90.pn, %235 ], [ %.pn87.pn, %218 ], [ %.pn84.pn, %201 ], [ %.pn82, %187 ], [ %.pn80, %182 ], [ %.pn78, %177 ], [ %.pn76, %172 ], [ %.pn74, %167 ], [ %.pn72, %162 ], [ %.pn70, %157 ], [ %.pn68, %152 ], [ %.pn, %147 ], [ %142, %141 ]
  resume { ptr, i32 } %.pn124.pn.pn.pn.pn
}

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

declare void @_ZN5cmudb14ExtendibleHashIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC1Em(ptr noundef nonnull align 8 dereferenceable(88), i64 noundef) unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 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

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

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

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

declare noundef i32 @_ZNK5cmudb14ExtendibleHashIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE13GetLocalDepthEi(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef) local_unnamed_addr #4

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

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

; 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 #4

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

; 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: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5 align 2

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

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

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

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

attributes #0 = { 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 #1 = { 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 #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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind "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 = { builtin allocsize(0) }
attributes #9 = { nounwind }
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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"vtable pointer", !8, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass