; LLVM IR from gem5/gem5 :: util/m5/src/call_type/addr.test.ll (ZN21AddrCallType_Sum_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"

%struct.__jmp_buf_tag = type { [8 x i64], i32, %struct.__sigset_t }
%struct.__sigset_t = type { [16 x i64] }
%struct.siginfo_t = type { i32, i32, i32, i32, %union.anon.33 }
%union.anon.33 = type { %struct.anon.36, [80 x i8] }
%struct.anon.36 = type { i32, i32, i32, i64, i64 }
%class.TempFile = type { i64, i32, %"class.std::__cxx11::basic_string" }
%"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::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.testing::AssertionResult" = type { i8, %"class.std::unique_ptr.5" }
%"class.std::unique_ptr.5" = type { %"struct.std::__uniq_ptr_data.6" }
%"struct.std::__uniq_ptr_data.6" = type { %"class.std::__uniq_ptr_impl.7" }
%"class.std::__uniq_ptr_impl.7" = type { %"class.std::tuple.8" }
%"class.std::tuple.8" = type { %"struct.std::_Tuple_impl.9" }
%"struct.std::_Tuple_impl.9" = type { %"struct.std::_Head_base.12" }
%"struct.std::_Head_base.12" = type { ptr }
%class.Args = type { %"class.std::vector", i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.std::allocator" = type { i8 }
%"class.testing::Message" = type { %"class.std::unique_ptr.13" }
%"class.std::unique_ptr.13" = type { %"struct.std::__uniq_ptr_data.14" }
%"struct.std::__uniq_ptr_data.14" = type { %"class.std::__uniq_ptr_impl.15" }
%"class.std::__uniq_ptr_impl.15" = type { %"class.std::tuple.16" }
%"class.std::tuple.16" = type { %"struct.std::_Tuple_impl.17" }
%"struct.std::_Tuple_impl.17" = type { %"struct.std::_Head_base.20" }
%"struct.std::_Head_base.20" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }
%struct.sigaction = type { %union.anon.44, %struct.__sigset_t, i32, ptr }
%union.anon.44 = type { ptr }
%struct.DispatchTable = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }

@.str.4 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [10 x i8], align 1
@m5op_addr = external global i64, align 8
@interceptEnv = external dso_local global [1 x %struct.__jmp_buf_tag], align 16
@interceptSiginfo = external dso_local global %struct.siginfo_t, align 8
@mmapDummyFile = external dso_local global %class.TempFile, align 8
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@m5_mem = external global ptr, align 8
@.str.60 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [13 x i8], align 1
@_ZL12MmapPhysAddr = external hidden constant i64, align 8
@.str.76 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [17 x i8], align 1
@m5_mmap_dev = external global ptr, align 8
@.str.80 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [5 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

declare noundef ptr @_ZN8CallType6detectER4Args(ptr noundef nonnull align 8 dereferenceable(32)) #3

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z15sigsegv_handleriP9siginfo_tPv(i32 noundef, ptr noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11verify_mmapv() #2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #6

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN21AddrCallType_Sum_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 i8, align 1
  %4 = alloca %class.Args, align 8
  %5 = alloca %"class.std::initializer_list", align 8
  %6 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %7 = alloca ptr, align 8
  %8 = alloca %"class.std::allocator", align 1
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i1, align 1
  %12 = alloca ptr, align 8
  %13 = alloca %"class.testing::AssertionResult", align 8
  %14 = alloca ptr, align 8
  %15 = alloca %"class.testing::Message", align 8
  %16 = alloca %"class.testing::internal::AssertHelper", align 8
  %17 = alloca %"class.testing::AssertionResult", align 8
  %18 = alloca %"class.testing::Message", align 8
  %19 = alloca %"class.testing::internal::AssertHelper", align 8
  %20 = alloca ptr, align 8
  %21 = alloca %"class.testing::AssertionResult", align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca %"class.testing::Message", align 8
  %25 = alloca %"class.testing::internal::AssertHelper", align 8
  %26 = alloca i32, align 4
  %27 = alloca %struct.sigaction, align 8
  %28 = alloca %struct.sigaction, align 8
  %29 = alloca %"class.testing::Message", align 8
  %30 = alloca %"class.testing::internal::AssertHelper", align 8
  %31 = alloca ptr, align 8
  %32 = alloca %"class.testing::AssertionResult", align 8
  %33 = alloca i32, align 4
  %34 = alloca %"class.testing::Message", align 8
  %35 = alloca %"class.testing::internal::AssertHelper", align 8
  %36 = alloca %"class.testing::AssertionResult", align 8
  %37 = alloca i32, align 4
  %38 = alloca %"class.testing::Message", align 8
  %39 = alloca %"class.testing::internal::AssertHelper", align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca %"class.testing::AssertionResult", align 8
  %43 = alloca i64, align 8
  %44 = alloca %"class.testing::Message", align 8
  %45 = alloca %"class.testing::internal::AssertHelper", align 8
  %46 = alloca %"class.testing::AssertionResult", align 8
  %47 = alloca %"class.testing::Message", align 8
  %48 = alloca %"class.testing::internal::AssertHelper", align 8
  %49 = alloca i64, align 8
  %50 = alloca i32, align 4
  %51 = alloca %"class.testing::AssertionResult", align 8
  %52 = alloca i32, align 4
  %53 = alloca %"class.testing::Message", align 8
  %54 = alloca %"class.testing::internal::AssertHelper", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %55 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %3) #9
  %56 = call ptr @getenv(ptr noundef @.str.76) #9
  %57 = icmp ne ptr %56, null
  %58 = zext i1 %57 to i8
  store i8 %58, ptr %3, align 1, !tbaa !9
  %59 = load i8, ptr %3, align 1, !tbaa !9, !range !11, !noundef !12
  %60 = trunc i8 %59 to i1
  br i1 %60, label %61, label %64

61:                                               ; preds = %1
  %62 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.77)
  %63 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %67

64:                                               ; preds = %1
  %65 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.78)
  %66 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %67

67:                                               ; preds = %64, %61
  call void @llvm.lifetime.start.p0(i64 32, ptr %4) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %6) #9
  store i1 true, ptr %11, align 1
  store ptr %6, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef @.str.79, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %68 unwind label %89

68:                                               ; preds = %67
  store i1 false, ptr %11, align 1
  %69 = getelementptr inbounds %"class.std::initializer_list", ptr %5, i32 0, i32 0
  store ptr %6, ptr %69, align 8, !tbaa !13
  %70 = getelementptr inbounds %"class.std::initializer_list", ptr %5, i32 0, i32 1
  store i64 1, ptr %70, align 8, !tbaa !16
  %71 = getelementptr inbounds { ptr, i64 }, ptr %5, i32 0, i32 0
  %72 = load ptr, ptr %71, align 8
  %73 = getelementptr inbounds { ptr, i64 }, ptr %5, i32 0, i32 1
  %74 = load i64, ptr %73, align 8
  invoke void @_ZN4ArgsC2ESt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr %72, i64 %74)
          to label %75 unwind label %93

75:                                               ; preds = %68
  %76 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %6, i32 0, i32 0
  %77 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %76, i64 1
  br label %78

78:                                               ; preds = %78, %75
  %79 = phi ptr [ %77, %75 ], [ %80, %78 ]
  %80 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %79, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #9
  %81 = icmp eq ptr %80, %76
  br i1 %81, label %82, label %78

82:                                               ; preds = %78
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #9
  %83 = load i8, ptr %3, align 1, !tbaa !9, !range !11, !noundef !12
  %84 = trunc i8 %83 to i1
  br i1 %84, label %119, label %85

85:                                               ; preds = %82
  %86 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK8TempFile4pathB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(48) @mmapDummyFile)
          to label %87 unwind label %115

87:                                               ; preds = %85
  %88 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %86) #9
  store ptr %88, ptr @m5_mmap_dev, align 8, !tbaa !5
  br label %119

89:                                               ; preds = %67
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %9, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %10, align 4
  br label %104

93:                                               ; preds = %68
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %9, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %10, align 4
  %97 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %6, i32 0, i32 0
  %98 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %97, i64 1
  br label %99

99:                                               ; preds = %99, %93
  %100 = phi ptr [ %98, %93 ], [ %101, %99 ]
  %101 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %100, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #9
  %102 = icmp eq ptr %101, %97
  br i1 %102, label %103, label %99

103:                                              ; preds = %99
  br label %104

104:                                              ; preds = %103, %89
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #9
  %105 = load i1, ptr %11, align 1
  br i1 %105, label %106, label %114

106:                                              ; preds = %104
  %107 = load ptr, ptr %7, align 8
  %108 = icmp eq ptr %6, %107
  br i1 %108, label %113, label %109

109:                                              ; preds = %109, %106
  %110 = phi ptr [ %107, %106 ], [ %111, %109 ]
  %111 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %110, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #9
  %112 = icmp eq ptr %111, %6
  br i1 %112, label %113, label %109

113:                                              ; preds = %109, %106
  br label %114

114:                                              ; preds = %113, %104
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #9
  br label %499

115:                                              ; preds = %85
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %9, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %10, align 4
  br label %498

119:                                              ; preds = %87, %82
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  %120 = invoke noundef ptr @_ZN8CallType6detectER4Args(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %121 unwind label %126

121:                                              ; preds = %119
  store ptr %120, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #9
  store ptr null, ptr %14, align 8, !tbaa !17
  invoke void @_ZN7testing8internal11CmpHelperNEIP8CallTypeDnEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %13, ptr noundef @.str.80, ptr noundef @.str.18, ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %122 unwind label %130

122:                                              ; preds = %121
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  %123 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %124 unwind label %134

124:                                              ; preds = %122
  br i1 %123, label %125, label %138

125:                                              ; preds = %124
  br label %158

126:                                              ; preds = %193, %119
  %127 = landingpad { ptr, i32 }
          cleanup
  %128 = extractvalue { ptr, i32 } %127, 0
  store ptr %128, ptr %9, align 8
  %129 = extractvalue { ptr, i32 } %127, 1
  store i32 %129, ptr %10, align 4
  br label %497

130:                                              ; preds = %121
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %9, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  br label %164

134:                                              ; preds = %122
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %9, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %10, align 4
  br label %163

138:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %139 unwind label %144

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

141:                                              ; preds = %139
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %16, i32 noundef 1, ptr noundef @.str.4, i32 noundef 407, ptr noundef %140)
          to label %142 unwind label %148

142:                                              ; preds = %141
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %143 unwind label %152

143:                                              ; preds = %142
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  br label %158

144:                                              ; preds = %138
  %145 = landingpad { ptr, i32 }
          cleanup
  %146 = extractvalue { ptr, i32 } %145, 0
  store ptr %146, ptr %9, align 8
  %147 = extractvalue { ptr, i32 } %145, 1
  store i32 %147, ptr %10, align 4
  br label %157

148:                                              ; preds = %141, %139
  %149 = landingpad { ptr, i32 }
          cleanup
  %150 = extractvalue { ptr, i32 } %149, 0
  store ptr %150, ptr %9, align 8
  %151 = extractvalue { ptr, i32 } %149, 1
  store i32 %151, ptr %10, align 4
  br label %156

152:                                              ; preds = %142
  %153 = landingpad { ptr, i32 }
          cleanup
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %9, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  br label %156

156:                                              ; preds = %152, %148
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #9
  br label %157

157:                                              ; preds = %156, %144
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  br label %163

158:                                              ; preds = %143, %125
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #9
  invoke void @_ZN7testing8internal8EqHelper7CompareImmTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %17, ptr noundef @.str.19, ptr noundef @.str.72, ptr noundef nonnull align 8 dereferenceable(8) @m5op_addr, ptr noundef nonnull align 8 dereferenceable(8) @_ZL12MmapPhysAddr)
          to label %159 unwind label %165

159:                                              ; preds = %158
  %160 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
          to label %161 unwind label %169

161:                                              ; preds = %159
  br i1 %160, label %162, label %173

162:                                              ; preds = %161
  br label %193

163:                                              ; preds = %157, %134
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #9
  br label %164

164:                                              ; preds = %163, %130
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #9
  br label %497

165:                                              ; preds = %158
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %9, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %10, align 4
  br label %214

169:                                              ; preds = %159
  %170 = landingpad { ptr, i32 }
          cleanup
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %9, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %10, align 4
  br label %213

173:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %174 unwind label %179

174:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #9
  %175 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
          to label %176 unwind label %183

176:                                              ; preds = %174
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %19, i32 noundef 1, ptr noundef @.str.4, i32 noundef 408, ptr noundef %175)
          to label %177 unwind label %183

177:                                              ; preds = %176
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %178 unwind label %187

178:                                              ; preds = %177
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  br label %193

179:                                              ; preds = %173
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %9, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %10, align 4
  br label %192

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

187:                                              ; preds = %177
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %9, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  br label %191

191:                                              ; preds = %187, %183
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  br label %192

192:                                              ; preds = %191, %179
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  br label %213

193:                                              ; preds = %178, %162
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #9
  invoke void @_Z11verify_mmapv()
          to label %194 unwind label %126

194:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  %195 = load ptr, ptr %12, align 8, !tbaa !5
  %196 = load ptr, ptr %195, align 8, !tbaa !19
  %197 = getelementptr inbounds ptr, ptr %196, i64 5
  %198 = load ptr, ptr %197, align 8
  %199 = invoke noundef nonnull align 8 dereferenceable(208) ptr %198(ptr noundef nonnull align 8 dereferenceable(40) %195)
          to label %200 unwind label %215

200:                                              ; preds = %194
  store ptr %199, ptr %20, align 8, !tbaa !5
  %201 = load i8, ptr %3, align 1, !tbaa !9, !range !11, !noundef !12
  %202 = trunc i8 %201 to i1
  br i1 %202, label %203, label %255

203:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #9
  %204 = load ptr, ptr %20, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.DispatchTable, ptr %204, i32 0, i32 9
  %206 = load ptr, ptr %205, align 8, !tbaa !21
  %207 = invoke noundef i32 %206(i32 noundef 2, i32 noundef 2, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0)
          to label %208 unwind label %219

208:                                              ; preds = %203
  store i32 %207, ptr %22, align 4, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  store i32 4, ptr %23, align 4, !tbaa !23
  invoke void @_ZN7testing8internal8EqHelper7CompareIjiTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %21, ptr noundef @.str.81, ptr noundef @.str.82, ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %209 unwind label %223

209:                                              ; preds = %208
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  %210 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %211 unwind label %228

211:                                              ; preds = %209
  br i1 %210, label %212, label %232

212:                                              ; preds = %211
  br label %252

213:                                              ; preds = %192, %169
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #9
  br label %214

214:                                              ; preds = %213, %165
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #9
  br label %497

215:                                              ; preds = %194
  %216 = landingpad { ptr, i32 }
          cleanup
  %217 = extractvalue { ptr, i32 } %216, 0
  store ptr %217, ptr %9, align 8
  %218 = extractvalue { ptr, i32 } %216, 1
  store i32 %218, ptr %10, align 4
  br label %496

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

223:                                              ; preds = %208
  %224 = landingpad { ptr, i32 }
          cleanup
  %225 = extractvalue { ptr, i32 } %224, 0
  store ptr %225, ptr %9, align 8
  %226 = extractvalue { ptr, i32 } %224, 1
  store i32 %226, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %227

227:                                              ; preds = %223, %219
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  br label %254

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

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

233:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  %234 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %235 unwind label %242

235:                                              ; preds = %233
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %25, i32 noundef 1, ptr noundef @.str.4, i32 noundef 417, ptr noundef %234)
          to label %236 unwind label %242

236:                                              ; preds = %235
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %237 unwind label %246

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

238:                                              ; preds = %232
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %9, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %10, align 4
  br label %251

242:                                              ; preds = %235, %233
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %9, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %10, align 4
  br label %250

246:                                              ; preds = %236
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %9, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #9
  br label %250

250:                                              ; preds = %246, %242
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  br label %251

251:                                              ; preds = %250, %238
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  br label %253

252:                                              ; preds = %237, %212
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #9
  store i32 1, ptr %26, align 4
  br label %488

253:                                              ; preds = %251, %228
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #9
  br label %254

254:                                              ; preds = %253, %227
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #9
  br label %496

255:                                              ; preds = %200
  %256 = load ptr, ptr @m5_mem, align 8, !tbaa !5
  %257 = call i32 @mprotect(ptr noundef %256, i64 noundef 65536, i32 noundef 0) #9
  call void @llvm.lifetime.start.p0(i64 152, ptr %27) #9
  call void @llvm.memset.p0.i64(ptr align 8 %27, i8 0, i64 152, i1 false)
  %258 = getelementptr inbounds %struct.sigaction, ptr %27, i32 0, i32 0
  store ptr @_Z15sigsegv_handleriP9siginfo_tPv, ptr %258, align 8, !tbaa !25
  %259 = getelementptr inbounds %struct.sigaction, ptr %27, i32 0, i32 2
  store i32 -2147483644, ptr %259, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 152, ptr %28) #9
  %260 = call i32 @sigaction(i32 noundef 11, ptr noundef %27, ptr noundef %28) #9
  %261 = call i32 @__sigsetjmp(ptr noundef @interceptEnv, i32 noundef 1) #10
  %262 = icmp ne i32 %261, 0
  br i1 %262, label %298, label %263

263:                                              ; preds = %255
  %264 = load ptr, ptr %20, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.DispatchTable, ptr %264, i32 0, i32 9
  %266 = load ptr, ptr %265, align 8, !tbaa !21
  %267 = invoke noundef i32 %266(i32 noundef 2, i32 noundef 2, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0)
          to label %268 unwind label %275

268:                                              ; preds = %263
  %269 = call i32 @sigaction(i32 noundef 11, ptr noundef %28, ptr noundef null) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %270 unwind label %279

270:                                              ; preds = %268
  %271 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA41_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 1 dereferenceable(41) @.str.83)
          to label %272 unwind label %283

272:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %30, i32 noundef 1, ptr noundef @.str.4, i32 noundef 439, ptr noundef @.str.60)
          to label %273 unwind label %287

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

274:                                              ; preds = %273
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  store i32 1, ptr %26, align 4
  br label %487

275:                                              ; preds = %263
  %276 = landingpad { ptr, i32 }
          cleanup
  %277 = extractvalue { ptr, i32 } %276, 0
  store ptr %277, ptr %9, align 8
  %278 = extractvalue { ptr, i32 } %276, 1
  store i32 %278, ptr %10, align 4
  br label %495

279:                                              ; preds = %268
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %9, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %10, align 4
  br label %297

283:                                              ; preds = %270
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %9, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %10, align 4
  br label %296

287:                                              ; preds = %272
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %9, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %10, align 4
  br label %295

291:                                              ; preds = %273
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %9, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  br label %295

295:                                              ; preds = %291, %287
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  br label %296

296:                                              ; preds = %295, %283
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  br label %297

297:                                              ; preds = %296, %279
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  br label %495

298:                                              ; preds = %255
  %299 = load ptr, ptr @m5_mem, align 8, !tbaa !5
  %300 = call i32 @mprotect(ptr noundef %299, i64 noundef 65536, i32 noundef 3) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  store ptr @interceptSiginfo, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #9
  store i32 11, ptr %33, align 4, !tbaa !23
  invoke void @_ZN7testing8internal8EqHelper7CompareIiiTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %32, ptr noundef @.str.84, ptr noundef @.str.85, ptr noundef nonnull align 4 dereferenceable(4) @interceptSiginfo, ptr noundef nonnull align 4 dereferenceable(4) %33)
          to label %301 unwind label %305

301:                                              ; preds = %298
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #9
  %302 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %32)
          to label %303 unwind label %309

303:                                              ; preds = %301
  br i1 %302, label %304, label %313

304:                                              ; preds = %303
  br label %333

305:                                              ; preds = %298
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %9, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #9
  br label %339

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

313:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %314 unwind label %319

314:                                              ; preds = %313
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #9
  %315 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %32)
          to label %316 unwind label %323

316:                                              ; preds = %314
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %35, i32 noundef 1, ptr noundef @.str.4, i32 noundef 449, ptr noundef %315)
          to label %317 unwind label %323

317:                                              ; preds = %316
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %318 unwind label %327

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

319:                                              ; preds = %313
  %320 = landingpad { ptr, i32 }
          cleanup
  %321 = extractvalue { ptr, i32 } %320, 0
  store ptr %321, ptr %9, align 8
  %322 = extractvalue { ptr, i32 } %320, 1
  store i32 %322, ptr %10, align 4
  br label %332

323:                                              ; preds = %316, %314
  %324 = landingpad { ptr, i32 }
          cleanup
  %325 = extractvalue { ptr, i32 } %324, 0
  store ptr %325, ptr %9, align 8
  %326 = extractvalue { ptr, i32 } %324, 1
  store i32 %326, ptr %10, align 4
  br label %331

327:                                              ; preds = %317
  %328 = landingpad { ptr, i32 }
          cleanup
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %9, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #9
  br label %331

331:                                              ; preds = %327, %323
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  br label %332

332:                                              ; preds = %331, %319
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  br label %338

333:                                              ; preds = %318, %304
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #9
  store i32 2, ptr %37, align 4, !tbaa !25
  invoke void @"_ZN7testing8internal8EqHelper7CompareIi3$_0TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSD_RKS5_RKS6_"(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %36, ptr noundef @.str.86, ptr noundef @.str.87, ptr noundef nonnull align 4 dereferenceable(4) getelementptr inbounds (%struct.siginfo_t, ptr @interceptSiginfo, i32 0, i32 2), ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %334 unwind label %340

334:                                              ; preds = %333
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  %335 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %336 unwind label %344

336:                                              ; preds = %334
  br i1 %335, label %337, label %348

337:                                              ; preds = %336
  br label %368

338:                                              ; preds = %332, %309
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #9
  br label %339

339:                                              ; preds = %338, %305
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #9
  br label %494

340:                                              ; preds = %333
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %9, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  br label %380

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

348:                                              ; preds = %336
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %349 unwind label %354

349:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  %350 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %351 unwind label %358

351:                                              ; preds = %349
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %39, i32 noundef 1, ptr noundef @.str.4, i32 noundef 450, ptr noundef %350)
          to label %352 unwind label %358

352:                                              ; preds = %351
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %353 unwind label %362

353:                                              ; preds = %352
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  br label %368

354:                                              ; preds = %348
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %9, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %10, align 4
  br label %367

358:                                              ; preds = %351, %349
  %359 = landingpad { ptr, i32 }
          cleanup
  %360 = extractvalue { ptr, i32 } %359, 0
  store ptr %360, ptr %9, align 8
  %361 = extractvalue { ptr, i32 } %359, 1
  store i32 %361, ptr %10, align 4
  br label %366

362:                                              ; preds = %352
  %363 = landingpad { ptr, i32 }
          cleanup
  %364 = extractvalue { ptr, i32 } %363, 0
  store ptr %364, ptr %9, align 8
  %365 = extractvalue { ptr, i32 } %363, 1
  store i32 %365, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #9
  br label %366

366:                                              ; preds = %362, %358
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  br label %367

367:                                              ; preds = %366, %354
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  br label %379

368:                                              ; preds = %353, %337
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #9
  %369 = load ptr, ptr getelementptr inbounds (%struct.siginfo_t, ptr @interceptSiginfo, i32 0, i32 4), align 8, !tbaa !25
  %370 = ptrtoint ptr %369 to i64
  store i64 %370, ptr %40, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #9
  %371 = load ptr, ptr @m5_mem, align 8, !tbaa !5
  %372 = ptrtoint ptr %371 to i64
  store i64 %372, ptr %41, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %373 = load i64, ptr %41, align 8, !tbaa !29
  %374 = add i64 %373, 65536
  store i64 %374, ptr %43, align 8, !tbaa !29
  invoke void @_ZN7testing8internal11CmpHelperLTImmEENS_15AssertionResultEPKcS4_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %42, ptr noundef @.str.88, ptr noundef @.str.89, ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %375 unwind label %381

375:                                              ; preds = %368
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  %376 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %42)
          to label %377 unwind label %385

377:                                              ; preds = %375
  br i1 %376, label %378, label %389

378:                                              ; preds = %377
  br label %409

379:                                              ; preds = %367, %344
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #9
  br label %380

380:                                              ; preds = %379, %340
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #9
  br label %494

381:                                              ; preds = %368
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %9, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  br label %415

385:                                              ; preds = %375
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %9, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %10, align 4
  br label %414

389:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %390 unwind label %395

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

392:                                              ; preds = %390
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %45, i32 noundef 1, ptr noundef @.str.4, i32 noundef 456, ptr noundef %391)
          to label %393 unwind label %399

393:                                              ; preds = %392
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %394 unwind label %403

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

395:                                              ; preds = %389
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %9, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %10, align 4
  br label %408

399:                                              ; preds = %392, %390
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %9, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %10, align 4
  br label %407

403:                                              ; preds = %393
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %9, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  br label %407

407:                                              ; preds = %403, %399
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #9
  br label %408

408:                                              ; preds = %407, %395
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  br label %414

409:                                              ; preds = %394, %378
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #9
  invoke void @_ZN7testing8internal11CmpHelperGEImmEENS_15AssertionResultEPKcS4_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %46, ptr noundef @.str.88, ptr noundef @.str.90, ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %410 unwind label %416

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

412:                                              ; preds = %410
  br i1 %411, label %413, label %424

413:                                              ; preds = %412
  br label %444

414:                                              ; preds = %408, %385
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #9
  br label %415

415:                                              ; preds = %414, %381
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #9
  br label %493

416:                                              ; preds = %409
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %9, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %10, align 4
  br label %457

420:                                              ; preds = %410
  %421 = landingpad { ptr, i32 }
          cleanup
  %422 = extractvalue { ptr, i32 } %421, 0
  store ptr %422, ptr %9, align 8
  %423 = extractvalue { ptr, i32 } %421, 1
  store i32 %423, ptr %10, align 4
  br label %456

424:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %425 unwind label %430

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

427:                                              ; preds = %425
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %48, i32 noundef 1, ptr noundef @.str.4, i32 noundef 457, ptr noundef %426)
          to label %428 unwind label %434

428:                                              ; preds = %427
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %429 unwind label %438

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

430:                                              ; preds = %424
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %9, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %10, align 4
  br label %443

434:                                              ; preds = %427, %425
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %9, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %10, align 4
  br label %442

438:                                              ; preds = %428
  %439 = landingpad { ptr, i32 }
          cleanup
  %440 = extractvalue { ptr, i32 } %439, 0
  store ptr %440, ptr %9, align 8
  %441 = extractvalue { ptr, i32 } %439, 1
  store i32 %441, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  br label %442

442:                                              ; preds = %438, %434
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #9
  br label %443

443:                                              ; preds = %442, %430
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  br label %456

444:                                              ; preds = %429, %413
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #9
  %445 = load i64, ptr %40, align 8, !tbaa !29
  %446 = load i64, ptr %41, align 8, !tbaa !29
  %447 = sub i64 %445, %446
  store i64 %447, ptr %49, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #9
  %448 = load i64, ptr %49, align 8, !tbaa !29
  %449 = and i64 %448, 65280
  %450 = lshr i64 %449, 8
  %451 = trunc i64 %450 to i32
  store i32 %451, ptr %50, align 4, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #9
  store i32 35, ptr %52, align 4, !tbaa !23
  invoke void @_ZN7testing8internal8EqHelper7CompareIiiTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %51, ptr noundef @.str.91, ptr noundef @.str.92, ptr noundef nonnull align 4 dereferenceable(4) %50, ptr noundef nonnull align 4 dereferenceable(4) %52)
          to label %452 unwind label %458

452:                                              ; preds = %444
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  %453 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %51)
          to label %454 unwind label %462

454:                                              ; preds = %452
  br i1 %453, label %455, label %466

455:                                              ; preds = %454
  br label %486

456:                                              ; preds = %443, %420
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #9
  br label %457

457:                                              ; preds = %456, %416
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #9
  br label %493

458:                                              ; preds = %444
  %459 = landingpad { ptr, i32 }
          cleanup
  %460 = extractvalue { ptr, i32 } %459, 0
  store ptr %460, ptr %9, align 8
  %461 = extractvalue { ptr, i32 } %459, 1
  store i32 %461, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  br label %492

462:                                              ; preds = %452
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %9, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %10, align 4
  br label %491

466:                                              ; preds = %454
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #9
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53)
          to label %467 unwind label %472

467:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #9
  %468 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %51)
          to label %469 unwind label %476

469:                                              ; preds = %467
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %54, i32 noundef 1, ptr noundef @.str.4, i32 noundef 462, ptr noundef %468)
          to label %470 unwind label %476

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

471:                                              ; preds = %470
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  br label %486

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

476:                                              ; preds = %469, %467
  %477 = landingpad { ptr, i32 }
          cleanup
  %478 = extractvalue { ptr, i32 } %477, 0
  store ptr %478, ptr %9, align 8
  %479 = extractvalue { ptr, i32 } %477, 1
  store i32 %479, ptr %10, align 4
  br label %484

480:                                              ; preds = %470
  %481 = landingpad { ptr, i32 }
          cleanup
  %482 = extractvalue { ptr, i32 } %481, 0
  store ptr %482, ptr %9, align 8
  %483 = extractvalue { ptr, i32 } %481, 1
  store i32 %483, ptr %10, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #9
  br label %484

484:                                              ; preds = %480, %476
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #9
  br label %485

485:                                              ; preds = %484, %472
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  br label %491

486:                                              ; preds = %471, %455
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  store i32 0, ptr %26, align 4
  br label %487

487:                                              ; preds = %486, %274
  call void @llvm.lifetime.end.p0(i64 152, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 152, ptr %27) #9
  br label %488

488:                                              ; preds = %487, %252
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @_ZN4ArgsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %3) #9
  %489 = load i32, ptr %26, align 4
  switch i32 %489, label %505 [
    i32 0, label %490
    i32 1, label %490
  ]

490:                                              ; preds = %488, %488
  ret void

491:                                              ; preds = %485, %462
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #9
  br label %492

492:                                              ; preds = %491, %458
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  br label %493

493:                                              ; preds = %492, %457, %415
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  br label %494

494:                                              ; preds = %493, %380, %339
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  br label %495

495:                                              ; preds = %494, %297, %275
  call void @llvm.lifetime.end.p0(i64 152, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 152, ptr %27) #9
  br label %496

496:                                              ; preds = %495, %254, %215
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  br label %497

497:                                              ; preds = %496, %214, %164, %126
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  br label %498

498:                                              ; preds = %497, %115
  call void @_ZN4ArgsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #9
  br label %499

499:                                              ; preds = %498, %114
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %3) #9
  br label %500

500:                                              ; preds = %499
  %501 = load ptr, ptr %9, align 8
  %502 = load i32, ptr %10, align 4
  %503 = insertvalue { ptr, i32 } poison, ptr %501, 0
  %504 = insertvalue { ptr, i32 } %503, i32 %502, 1
  resume { ptr, i32 } %504

505:                                              ; preds = %488
  unreachable
}

; Function Attrs: nounwind
declare ptr @getenv(ptr noundef) #4

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #7

; Function Attrs: nounwind
declare i32 @sigaction(i32 noundef, ptr noundef, ptr noundef) #4

; Function Attrs: nounwind returns_twice
declare i32 @__sigsetjmp(ptr noundef, i32 noundef) #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA41_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(41)) #6 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN7testing8internal8EqHelper7CompareIi3$_0TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSD_RKS5_RKS6_"(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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { nounwind returns_twice "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }
attributes #10 = { nounwind returns_twice }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{i8 0, i8 2}
!12 = !{}
!13 = !{!14, !6, i64 0}
!14 = !{!"_ZTSSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE", !6, i64 0, !15, i64 8}
!15 = !{!"long", !7, i64 0}
!16 = !{!14, !15, i64 8}
!17 = !{!18, !18, i64 0}
!18 = !{!"std::nullptr_t", !7, i64 0}
!19 = !{!20, !20, i64 0}
!20 = !{!"vtable pointer", !8, i64 0}
!21 = !{!22, !6, i64 72}
!22 = !{!"_ZTS13DispatchTable", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200}
!23 = !{!24, !24, i64 0}
!24 = !{!"int", !7, i64 0}
!25 = !{!7, !7, i64 0}
!26 = !{!27, !24, i64 136}
!27 = !{!"_ZTS9sigaction", !7, i64 0, !28, i64 8, !24, i64 136, !6, i64 144}
!28 = !{!"_ZTS10__sigset_t", !7, i64 0}
!29 = !{!15, !15, 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"

%struct.__jmp_buf_tag = type { [8 x i64], i32, %struct.__sigset_t }
%struct.__sigset_t = type { [16 x i64] }
%struct.siginfo_t = type { i32, i32, i32, i32, %union.anon.33 }
%union.anon.33 = type { %struct.anon.36, [80 x i8] }
%struct.anon.36 = type { i32, i32, i32, i64, i64 }
%class.TempFile = type { i64, i32, %"class.std::__cxx11::basic_string" }
%"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::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.testing::AssertionResult" = type { i8, %"class.std::unique_ptr.5" }
%"class.std::unique_ptr.5" = type { %"struct.std::__uniq_ptr_data.6" }
%"struct.std::__uniq_ptr_data.6" = type { %"class.std::__uniq_ptr_impl.7" }
%"class.std::__uniq_ptr_impl.7" = type { %"class.std::tuple.8" }
%"class.std::tuple.8" = type { %"struct.std::_Tuple_impl.9" }
%"struct.std::_Tuple_impl.9" = type { %"struct.std::_Head_base.12" }
%"struct.std::_Head_base.12" = type { ptr }
%class.Args = type { %"class.std::vector", i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%"class.testing::Message" = type { %"class.std::unique_ptr.13" }
%"class.std::unique_ptr.13" = type { %"struct.std::__uniq_ptr_data.14" }
%"struct.std::__uniq_ptr_data.14" = type { %"class.std::__uniq_ptr_impl.15" }
%"class.std::__uniq_ptr_impl.15" = type { %"class.std::tuple.16" }
%"class.std::tuple.16" = type { %"struct.std::_Tuple_impl.17" }
%"struct.std::_Tuple_impl.17" = type { %"struct.std::_Head_base.20" }
%"struct.std::_Head_base.20" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }
%struct.sigaction = type { %union.anon.44, %struct.__sigset_t, i32, ptr }
%union.anon.44 = type { ptr }

@.str.4 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [10 x i8], align 1
@m5op_addr = external global i64, align 8
@interceptEnv = external dso_local global [1 x %struct.__jmp_buf_tag], align 16
@interceptSiginfo = external dso_local global %struct.siginfo_t, align 8
@mmapDummyFile = external dso_local global %class.TempFile, align 8
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@m5_mem = external local_unnamed_addr global ptr, align 8
@.str.60 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [13 x i8], align 1
@_ZL12MmapPhysAddr = external hidden constant i64, align 8
@.str.76 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [17 x i8], align 1
@m5_mmap_dev = external local_unnamed_addr global ptr, align 8
@.str.80 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [5 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

declare noundef ptr @_ZN8CallType6detectER4Args(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z15sigsegv_handleriP9siginfo_tPv(i32 noundef, ptr noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11verify_mmapv() local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK8TempFile4pathB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN21AddrCallType_Sum_Test8TestBodyEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(16) %0) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %class.Args, align 8
  %3 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %4 = alloca %"class.std::allocator", align 1
  %5 = alloca ptr, align 8
  %6 = alloca %"class.testing::AssertionResult", align 8
  %7 = alloca ptr, align 8
  %8 = alloca %"class.testing::Message", align 8
  %9 = alloca %"class.testing::internal::AssertHelper", align 8
  %10 = alloca %"class.testing::AssertionResult", align 8
  %11 = alloca %"class.testing::Message", align 8
  %12 = alloca %"class.testing::internal::AssertHelper", align 8
  %13 = alloca %"class.testing::AssertionResult", align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %"class.testing::Message", align 8
  %17 = alloca %"class.testing::internal::AssertHelper", align 8
  %18 = alloca %struct.sigaction, align 8
  %19 = alloca %struct.sigaction, align 8
  %20 = alloca %"class.testing::Message", align 8
  %21 = alloca %"class.testing::internal::AssertHelper", align 8
  %22 = alloca %"class.testing::AssertionResult", align 8
  %23 = alloca i32, align 4
  %24 = alloca %"class.testing::Message", align 8
  %25 = alloca %"class.testing::internal::AssertHelper", align 8
  %26 = alloca %"class.testing::AssertionResult", align 8
  %27 = alloca i32, align 4
  %28 = alloca %"class.testing::Message", align 8
  %29 = alloca %"class.testing::internal::AssertHelper", align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca %"class.testing::AssertionResult", align 8
  %33 = alloca i64, align 8
  %34 = alloca %"class.testing::Message", align 8
  %35 = alloca %"class.testing::internal::AssertHelper", align 8
  %36 = alloca %"class.testing::AssertionResult", align 8
  %37 = alloca %"class.testing::Message", align 8
  %38 = alloca %"class.testing::internal::AssertHelper", align 8
  %39 = alloca i32, align 4
  %40 = alloca %"class.testing::AssertionResult", align 8
  %41 = alloca i32, align 4
  %42 = alloca %"class.testing::Message", align 8
  %43 = alloca %"class.testing::internal::AssertHelper", align 8
  %44 = call ptr @getenv(ptr noundef nonnull @.str.76) #10
  %.not = icmp eq ptr %44, null
  %.str.78..str.77 = select i1 %.not, ptr @.str.78, ptr @.str.77
  %45 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull %.str.78..str.77)
  %46 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.79, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %47 unwind label %52

47:                                               ; preds = %1
  invoke void @_ZN4ArgsC2ESt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr nonnull %3, i64 1)
          to label %48 unwind label %.loopexit.loopexit

48:                                               ; preds = %47
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #10
  br i1 %.not, label %49, label %55

49:                                               ; preds = %48
  %50 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK8TempFile4pathB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(48) @mmapDummyFile)
  %51 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %50) #10
  store ptr %51, ptr @m5_mmap_dev, align 8, !tbaa !5
  br label %55

52:                                               ; preds = %1
  %53 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

.loopexit.loopexit:                               ; preds = %47
  %54 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #10
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %52
  %.pn = phi { ptr, i32 } [ %53, %52 ], [ %54, %.loopexit.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #10
  br label %287

55:                                               ; preds = %49, %48
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #10
  %56 = invoke noundef ptr @_ZN8CallType6detectER4Args(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %57 unwind label %60

57:                                               ; preds = %55
  store ptr %56, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #10
  store ptr null, ptr %7, align 8, !tbaa !9
  invoke void @_ZN7testing8internal11CmpHelperNEIP8CallTypeDnEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %6, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.18, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %58 unwind label %62

58:                                               ; preds = %57
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  %59 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
  br i1 %59, label %78, label %64

60:                                               ; preds = %98, %55
  %61 = landingpad { ptr, i32 }
          cleanup
  br label %286

62:                                               ; preds = %57
  %63 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  br label %81

64:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %65 unwind label %70

65:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #10
  %66 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
          to label %67 unwind label %72

67:                                               ; preds = %65
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 407, ptr noundef %66)
          to label %68 unwind label %72

68:                                               ; preds = %67
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %69 unwind label %74

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

70:                                               ; preds = %64
  %71 = landingpad { ptr, i32 }
          cleanup
  br label %77

72:                                               ; preds = %67, %65
  %73 = landingpad { ptr, i32 }
          cleanup
  br label %76

74:                                               ; preds = %68
  %75 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #10
  br label %76

76:                                               ; preds = %74, %72
  %.pn49 = phi { ptr, i32 } [ %75, %74 ], [ %73, %72 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  br label %77

77:                                               ; preds = %76, %70
  %.pn49.pn = phi { ptr, i32 } [ %.pn49, %76 ], [ %71, %70 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #10
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #10
  br label %81

78:                                               ; preds = %58, %69
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #10
  invoke void @_ZN7testing8internal8EqHelper7CompareImmTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %10, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.72, ptr noundef nonnull align 8 dereferenceable(8) @m5op_addr, ptr noundef nonnull align 8 dereferenceable(8) @_ZL12MmapPhysAddr)
          to label %79 unwind label %82

79:                                               ; preds = %78
  %80 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
  br i1 %80, label %98, label %84

81:                                               ; preds = %77, %62
  %.pn49.pn.pn = phi { ptr, i32 } [ %.pn49.pn, %77 ], [ %63, %62 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #10
  br label %286

82:                                               ; preds = %78
  %83 = landingpad { ptr, i32 }
          cleanup
  br label %113

84:                                               ; preds = %79
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %85 unwind label %90

85:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #10
  %86 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %87 unwind label %92

87:                                               ; preds = %85
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %12, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 408, ptr noundef %86)
          to label %88 unwind label %92

88:                                               ; preds = %87
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %89 unwind label %94

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

90:                                               ; preds = %84
  %91 = landingpad { ptr, i32 }
          cleanup
  br label %97

92:                                               ; preds = %87, %85
  %93 = landingpad { ptr, i32 }
          cleanup
  br label %96

94:                                               ; preds = %88
  %95 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #10
  br label %96

96:                                               ; preds = %94, %92
  %.pn53 = phi { ptr, i32 } [ %95, %94 ], [ %93, %92 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  br label %97

97:                                               ; preds = %96, %90
  %.pn53.pn = phi { ptr, i32 } [ %.pn53, %96 ], [ %91, %90 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #10
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #10
  br label %113

98:                                               ; preds = %79, %89
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #10
  invoke void @_Z11verify_mmapv()
          to label %99 unwind label %60

99:                                               ; preds = %98
  %100 = load ptr, ptr %5, align 8, !tbaa !5
  %101 = load ptr, ptr %100, align 8, !tbaa !11
  %102 = getelementptr inbounds i8, ptr %101, i64 40
  %103 = load ptr, ptr %102, align 8
  %104 = invoke noundef nonnull align 8 dereferenceable(208) ptr %103(ptr noundef nonnull align 8 dereferenceable(40) %100)
          to label %105 unwind label %114

105:                                              ; preds = %99
  br i1 %.not, label %137, label %106

106:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #10
  %107 = getelementptr inbounds i8, ptr %104, i64 72
  %108 = load ptr, ptr %107, align 8, !tbaa !13
  %109 = invoke noundef i32 %108(i32 noundef 2, i32 noundef 2, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0)
          to label %110 unwind label %116

110:                                              ; preds = %106
  store i32 %109, ptr %14, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #10
  store i32 4, ptr %15, align 4, !tbaa !15
  invoke void @_ZN7testing8internal8EqHelper7CompareIjiTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %13, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.82, ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %111 unwind label %118

111:                                              ; preds = %110
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #10
  %112 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
  br i1 %112, label %135, label %121

113:                                              ; preds = %97, %82
  %.pn53.pn.pn = phi { ptr, i32 } [ %.pn53.pn, %97 ], [ %83, %82 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #10
  br label %286

114:                                              ; preds = %99
  %115 = landingpad { ptr, i32 }
          cleanup
  br label %286

116:                                              ; preds = %106
  %117 = landingpad { ptr, i32 }
          cleanup
  br label %120

118:                                              ; preds = %110
  %119 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #10
  br label %120

120:                                              ; preds = %118, %116
  %.pn85 = phi { ptr, i32 } [ %119, %118 ], [ %117, %116 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #10
  br label %136

121:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %122 unwind label %127

122:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #10
  %123 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %124 unwind label %129

124:                                              ; preds = %122
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %17, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 417, ptr noundef %123)
          to label %125 unwind label %129

125:                                              ; preds = %124
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %126 unwind label %131

126:                                              ; preds = %125
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  br label %135

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

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

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

133:                                              ; preds = %131, %129
  %.pn87 = phi { ptr, i32 } [ %132, %131 ], [ %130, %129 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  br label %134

134:                                              ; preds = %133, %127
  %.pn87.pn = phi { ptr, i32 } [ %.pn87, %133 ], [ %128, %127 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #10
  br label %136

135:                                              ; preds = %111, %126
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #10
  br label %282

136:                                              ; preds = %134, %120
  %.pn87.pn.pn = phi { ptr, i32 } [ %.pn87.pn, %134 ], [ %.pn85, %120 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #10
  br label %286

137:                                              ; preds = %105
  %138 = load ptr, ptr @m5_mem, align 8, !tbaa !5
  %139 = call i32 @mprotect(ptr noundef %138, i64 noundef 65536, i32 noundef 0) #10
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %18) #10
  %140 = getelementptr inbounds i8, ptr %18, i64 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %140, i8 0, i64 144, i1 false)
  store ptr @_Z15sigsegv_handleriP9siginfo_tPv, ptr %18, align 8, !tbaa !17
  %141 = getelementptr inbounds i8, ptr %18, i64 136
  store i32 -2147483644, ptr %141, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %19) #10
  %142 = call i32 @sigaction(i32 noundef 11, ptr noundef nonnull %18, ptr noundef nonnull %19) #10
  %143 = call i32 @__sigsetjmp(ptr noundef nonnull @interceptEnv, i32 noundef 1) #11
  %.not57 = icmp eq i32 %143, 0
  br i1 %.not57, label %144, label %168

144:                                              ; preds = %137
  %145 = getelementptr inbounds i8, ptr %104, i64 72
  %146 = load ptr, ptr %145, align 8, !tbaa !13
  %147 = invoke noundef i32 %146(i32 noundef 2, i32 noundef 2, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0)
          to label %148 unwind label %155

148:                                              ; preds = %144
  %149 = call i32 @sigaction(i32 noundef 11, ptr noundef nonnull %19, ptr noundef null) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %150 unwind label %157

150:                                              ; preds = %148
  %151 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA41_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 1 dereferenceable(41) @.str.83)
          to label %152 unwind label %159

152:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %21, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 439, ptr noundef nonnull @.str.60)
          to label %153 unwind label %161

153:                                              ; preds = %152
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %151)
          to label %154 unwind label %163

154:                                              ; preds = %153
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  br label %281

155:                                              ; preds = %144
  %156 = landingpad { ptr, i32 }
          cleanup
  br label %285

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

159:                                              ; preds = %150
  %160 = landingpad { ptr, i32 }
          cleanup
  br label %166

161:                                              ; preds = %152
  %162 = landingpad { ptr, i32 }
          cleanup
  br label %165

163:                                              ; preds = %153
  %164 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #10
  br label %165

165:                                              ; preds = %163, %161
  %.pn58 = phi { ptr, i32 } [ %164, %163 ], [ %162, %161 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  br label %166

166:                                              ; preds = %165, %159
  %.pn58.pn = phi { ptr, i32 } [ %.pn58, %165 ], [ %160, %159 ]
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  br label %167

167:                                              ; preds = %166, %157
  %.pn58.pn.pn = phi { ptr, i32 } [ %.pn58.pn, %166 ], [ %158, %157 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  br label %285

168:                                              ; preds = %137
  %169 = load ptr, ptr @m5_mem, align 8, !tbaa !5
  %170 = call i32 @mprotect(ptr noundef %169, i64 noundef 65536, i32 noundef 3) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #10
  store i32 11, ptr %23, align 4, !tbaa !15
  invoke void @_ZN7testing8internal8EqHelper7CompareIiiTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %22, ptr noundef nonnull @.str.84, ptr noundef nonnull @.str.85, ptr noundef nonnull align 4 dereferenceable(4) @interceptSiginfo, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %171 unwind label %173

171:                                              ; preds = %168
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #10
  %172 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %22)
  br i1 %172, label %189, label %175

173:                                              ; preds = %168
  %174 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #10
  br label %192

175:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %176 unwind label %181

176:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #10
  %177 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %178 unwind label %183

178:                                              ; preds = %176
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %25, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 449, ptr noundef %177)
          to label %179 unwind label %183

179:                                              ; preds = %178
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %180 unwind label %185

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

181:                                              ; preds = %175
  %182 = landingpad { ptr, i32 }
          cleanup
  br label %188

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

185:                                              ; preds = %179
  %186 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #10
  br label %187

187:                                              ; preds = %185, %183
  %.pn62 = phi { ptr, i32 } [ %186, %185 ], [ %184, %183 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  br label %188

188:                                              ; preds = %187, %181
  %.pn62.pn = phi { ptr, i32 } [ %.pn62, %187 ], [ %182, %181 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #10
  br label %192

189:                                              ; preds = %171, %180
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #10
  store i32 2, ptr %27, align 4, !tbaa !17
  invoke void @"_ZN7testing8internal8EqHelper7CompareIi3$_0TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSD_RKS5_RKS6_"(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %26, ptr noundef nonnull @.str.86, ptr noundef nonnull @.str.87, ptr noundef nonnull align 4 dereferenceable(4) getelementptr inbounds (i8, ptr @interceptSiginfo, i64 8), ptr noundef nonnull align 4 dereferenceable(4) %27)
          to label %190 unwind label %193

190:                                              ; preds = %189
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #10
  %191 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %26)
  br i1 %191, label %209, label %195

192:                                              ; preds = %188, %173
  %.pn62.pn.pn = phi { ptr, i32 } [ %.pn62.pn, %188 ], [ %174, %173 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #10
  br label %285

193:                                              ; preds = %189
  %194 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #10
  br label %217

195:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %196 unwind label %201

196:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #10
  %197 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %26)
          to label %198 unwind label %203

198:                                              ; preds = %196
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %29, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 450, ptr noundef %197)
          to label %199 unwind label %203

199:                                              ; preds = %198
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %200 unwind label %205

200:                                              ; preds = %199
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #10
  br label %209

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

203:                                              ; preds = %198, %196
  %204 = landingpad { ptr, i32 }
          cleanup
  br label %207

205:                                              ; preds = %199
  %206 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  br label %207

207:                                              ; preds = %205, %203
  %.pn66 = phi { ptr, i32 } [ %206, %205 ], [ %204, %203 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #10
  br label %208

208:                                              ; preds = %207, %201
  %.pn66.pn = phi { ptr, i32 } [ %.pn66, %207 ], [ %202, %201 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #10
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #10
  br label %217

209:                                              ; preds = %190, %200
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #10
  %210 = load ptr, ptr getelementptr inbounds (i8, ptr @interceptSiginfo, i64 16), align 8, !tbaa !17
  %211 = ptrtoint ptr %210 to i64
  store i64 %211, ptr %30, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #10
  %212 = load ptr, ptr @m5_mem, align 8, !tbaa !5
  %213 = ptrtoint ptr %212 to i64
  store i64 %213, ptr %31, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #10
  %214 = add i64 %213, 65536
  store i64 %214, ptr %33, align 8, !tbaa !21
  invoke void @_ZN7testing8internal11CmpHelperLTImmEENS_15AssertionResultEPKcS4_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %32, ptr noundef nonnull @.str.88, ptr noundef nonnull @.str.89, ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %215 unwind label %218

215:                                              ; preds = %209
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #10
  %216 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %32)
  br i1 %216, label %234, label %220

217:                                              ; preds = %208, %193
  %.pn66.pn.pn = phi { ptr, i32 } [ %.pn66.pn, %208 ], [ %194, %193 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #10
  br label %285

218:                                              ; preds = %209
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #10
  br label %237

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

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

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

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

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

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

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

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

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

233:                                              ; preds = %232, %226
  %.pn70.pn = phi { ptr, i32 } [ %.pn70, %232 ], [ %227, %226 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #10
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #10
  br label %237

234:                                              ; preds = %215, %225
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #10
  invoke void @_ZN7testing8internal11CmpHelperGEImmEENS_15AssertionResultEPKcS4_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %36, ptr noundef nonnull @.str.88, ptr noundef nonnull @.str.90, ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %235 unwind label %238

235:                                              ; preds = %234
  %236 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %36)
  br i1 %236, label %254, label %240

237:                                              ; preds = %233, %218
  %.pn70.pn.pn = phi { ptr, i32 } [ %.pn70.pn, %233 ], [ %219, %218 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #10
  br label %284

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

240:                                              ; preds = %235
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %241 unwind label %246

241:                                              ; preds = %240
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #10
  %242 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %243 unwind label %248

243:                                              ; preds = %241
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %38, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 457, ptr noundef %242)
          to label %244 unwind label %248

244:                                              ; preds = %243
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %245 unwind label %250

245:                                              ; preds = %244
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #10
  br label %254

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

248:                                              ; preds = %243, %241
  %249 = landingpad { ptr, i32 }
          cleanup
  br label %252

250:                                              ; preds = %244
  %251 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #10
  br label %252

252:                                              ; preds = %250, %248
  %.pn74 = phi { ptr, i32 } [ %251, %250 ], [ %249, %248 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #10
  br label %253

253:                                              ; preds = %252, %246
  %.pn74.pn = phi { ptr, i32 } [ %.pn74, %252 ], [ %247, %246 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #10
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #10
  br label %263

254:                                              ; preds = %235, %245
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #10
  %255 = load i64, ptr %30, align 8, !tbaa !21
  %256 = load i64, ptr %31, align 8, !tbaa !21
  %257 = sub i64 %255, %256
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #10
  %258 = trunc i64 %257 to i32
  %259 = lshr i32 %258, 8
  %260 = and i32 %259, 255
  store i32 %260, ptr %39, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #10
  store i32 35, ptr %41, align 4, !tbaa !15
  invoke void @_ZN7testing8internal8EqHelper7CompareIiiTnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSC_RKS4_RKS5_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %40, ptr noundef nonnull @.str.91, ptr noundef nonnull @.str.92, ptr noundef nonnull align 4 dereferenceable(4) %39, ptr noundef nonnull align 4 dereferenceable(4) %41)
          to label %261 unwind label %264

261:                                              ; preds = %254
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #10
  %262 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %40)
  br i1 %262, label %280, label %266

263:                                              ; preds = %253, %238
  %.pn74.pn.pn = phi { ptr, i32 } [ %.pn74.pn, %253 ], [ %239, %238 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #10
  br label %284

264:                                              ; preds = %254
  %265 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #10
  br label %283

266:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %267 unwind label %272

267:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #10
  %268 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %40)
          to label %269 unwind label %274

269:                                              ; preds = %267
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %43, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 462, ptr noundef %268)
          to label %270 unwind label %274

270:                                              ; preds = %269
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %271 unwind label %276

271:                                              ; preds = %270
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #10
  br label %280

272:                                              ; preds = %266
  %273 = landingpad { ptr, i32 }
          cleanup
  br label %279

274:                                              ; preds = %269, %267
  %275 = landingpad { ptr, i32 }
          cleanup
  br label %278

276:                                              ; preds = %270
  %277 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #10
  br label %278

278:                                              ; preds = %276, %274
  %.pn78 = phi { ptr, i32 } [ %277, %276 ], [ %275, %274 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #10
  br label %279

279:                                              ; preds = %278, %272
  %.pn78.pn = phi { ptr, i32 } [ %.pn78, %278 ], [ %273, %272 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #10
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #10
  br label %283

280:                                              ; preds = %261, %271
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #10
  br label %281

281:                                              ; preds = %280, %154
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %18) #10
  br label %282

282:                                              ; preds = %281, %135
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  call void @_ZN4ArgsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #10
  ret void

283:                                              ; preds = %279, %264
  %.pn78.pn.pn = phi { ptr, i32 } [ %.pn78.pn, %279 ], [ %265, %264 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #10
  br label %284

284:                                              ; preds = %283, %263, %237
  %.pn78.pn.pn.pn = phi { ptr, i32 } [ %.pn78.pn.pn, %283 ], [ %.pn74.pn.pn, %263 ], [ %.pn70.pn.pn, %237 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #10
  br label %285

285:                                              ; preds = %192, %217, %284, %167, %155
  %.pn78.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn58.pn.pn, %167 ], [ %156, %155 ], [ %.pn78.pn.pn.pn, %284 ], [ %.pn66.pn.pn, %217 ], [ %.pn62.pn.pn, %192 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %18) #10
  br label %286

286:                                              ; preds = %114, %136, %285, %113, %81, %60
  %.pn87.pn.pn.pn.pn = phi { ptr, i32 } [ %61, %60 ], [ %.pn53.pn.pn, %113 ], [ %.pn49.pn.pn, %81 ], [ %.pn87.pn.pn, %136 ], [ %.pn78.pn.pn.pn.pn.pn, %285 ], [ %115, %114 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  call void @_ZN4ArgsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #10
  br label %287

287:                                              ; preds = %286, %.loopexit
  %.pn87.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn87.pn.pn.pn.pn, %286 ], [ %.pn, %.loopexit ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #10
  resume { ptr, i32 } %.pn87.pn.pn.pn.pn.pn
}

; Function Attrs: nofree nounwind memory(read)
declare noundef ptr @getenv(ptr nocapture noundef) local_unnamed_addr #7

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8

; Function Attrs: nounwind
declare i32 @sigaction(i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind returns_twice
declare i32 @__sigsetjmp(ptr noundef, i32 noundef) local_unnamed_addr #9

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA41_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(41)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN7testing8internal8EqHelper7CompareIi3$_0TnPNSt9enable_ifIXoontsr3std11is_integralIT_EE5valuentsr3std10is_pointerIT0_EE5valueEvE4typeELPv0EEENS_15AssertionResultEPKcSD_RKS5_RKS6_"(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

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

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

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

!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 = !{!"std::nullptr_t", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"vtable pointer", !8, i64 0}
!13 = !{!14, !6, i64 72}
!14 = !{!"_ZTS13DispatchTable", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200}
!15 = !{!16, !16, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = !{!7, !7, i64 0}
!18 = !{!19, !16, i64 136}
!19 = !{!"_ZTS9sigaction", !7, i64 0, !20, i64 8, !16, i64 136, !6, i64 144}
!20 = !{!"_ZTS10__sigset_t", !7, i64 0}
!21 = !{!22, !22, i64 0}
!22 = !{!"long", !7, i64 0}


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,LoopSimplifyPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass