; LLVM IR from EricZinda/InductorHtn :: src/Tests/Prolog (HtnGoalResolverTests)

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

%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.21" = type { %"class.std::__shared_ptr.22" }
%"class.std::__shared_ptr.22" = type { ptr, %"class.std::__shared_count" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.88" = type { i8 }
%"class.UnitTest::TestDetails" = type <{ ptr, ptr, ptr, i32, i8, i8, [2 x i8] }>
%"class.std::vector.95" = type { %"struct.std::_Vector_base.96" }
%"struct.std::_Vector_base.96" = 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.100" = type { ptr, i64 }
%"class.std::allocator.97" = type { i8 }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<std::shared_ptr<HtnTerm>, std::allocator<std::shared_ptr<HtnTerm>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<HtnTerm>, std::allocator<std::shared_ptr<HtnTerm>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<HtnTerm>, std::allocator<std::shared_ptr<HtnTerm>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<HtnTerm>, std::allocator<std::shared_ptr<HtnTerm>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::initializer_list.94" = type { ptr, i64 }
%"class.std::allocator.2" = type { i8 }

@.str.90 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.165 = external hidden unnamed_addr constant [74 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: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

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

declare noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72)) #2

declare i32 @__gxx_personality_v0(...)

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

declare void @_ZN14HtnTermFactoryC1Ev(ptr noundef nonnull align 8 dereferenceable(33088)) unnamed_addr #2

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv() #2

declare void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(30), ptr noundef) #2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv() #2

declare void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(30), i32 noundef) unnamed_addr #2

declare ptr @__cxa_begin_catch(ptr)

declare void @__cxa_end_catch()

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #6

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

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

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

declare void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(33088), ptr noundef nonnull align 8 dereferenceable(32)) #2

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

declare void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(33088), ptr noundef nonnull align 8 dereferenceable(32)) #2

declare void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(33088), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24), ptr, i64, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN25SuiteHtnGoalResolverTests43TestHtnGoalResolverArithmeticFunctionsTests7RunImplEv(ptr noundef nonnull align 8 dereferenceable(49) %0) unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.std::shared_ptr.21", align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca %"class.std::shared_ptr", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator.88", align 1
  %9 = alloca %"class.std::shared_ptr", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator.88", align 1
  %12 = alloca %"class.std::shared_ptr", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator.88", align 1
  %15 = alloca %"class.UnitTest::TestDetails", align 8
  %16 = alloca %"class.UnitTest::TestDetails", align 8
  %17 = alloca %"class.std::shared_ptr", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator.88", align 1
  %20 = alloca %"class.UnitTest::TestDetails", align 8
  %21 = alloca %"class.UnitTest::TestDetails", align 8
  %22 = alloca %"class.std::shared_ptr", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator.88", align 1
  %25 = alloca %"class.UnitTest::TestDetails", align 8
  %26 = alloca %"class.UnitTest::TestDetails", align 8
  %27 = alloca %"class.std::shared_ptr", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.88", align 1
  %30 = alloca %"class.UnitTest::TestDetails", align 8
  %31 = alloca %"class.UnitTest::TestDetails", align 8
  %32 = alloca %"class.std::shared_ptr", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator.88", align 1
  %35 = alloca %"class.UnitTest::TestDetails", align 8
  %36 = alloca %"class.UnitTest::TestDetails", align 8
  %37 = alloca %"class.std::shared_ptr", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.88", align 1
  %40 = alloca %"class.UnitTest::TestDetails", align 8
  %41 = alloca %"class.UnitTest::TestDetails", align 8
  %42 = alloca %"class.std::shared_ptr", align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator.88", align 1
  %45 = alloca %"class.UnitTest::TestDetails", align 8
  %46 = alloca %"class.UnitTest::TestDetails", align 8
  %47 = alloca %"class.std::shared_ptr", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::allocator.88", align 1
  %50 = alloca %"class.UnitTest::TestDetails", align 8
  %51 = alloca %"class.UnitTest::TestDetails", align 8
  %52 = alloca %"class.std::shared_ptr", align 8
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::allocator.88", align 1
  %55 = alloca %"class.std::vector.95", align 8
  %56 = alloca %"class.std::initializer_list.100", align 8
  %57 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %58 = alloca ptr, align 8
  %59 = alloca %"class.std::allocator.88", align 1
  %60 = alloca i1, align 1
  %61 = alloca %"class.std::allocator.97", align 1
  %62 = alloca %"class.UnitTest::TestDetails", align 8
  %63 = alloca %"class.UnitTest::TestDetails", align 8
  %64 = alloca %"class.std::shared_ptr", align 8
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::allocator.88", align 1
  %67 = alloca %"class.std::vector.0", align 8
  %68 = alloca %"class.std::initializer_list.94", align 8
  %69 = alloca [2 x %"class.std::shared_ptr"], align 8
  %70 = alloca ptr, align 8
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca %"class.std::allocator.88", align 1
  %73 = alloca %"class.std::__cxx11::basic_string", align 8
  %74 = alloca %"class.std::allocator.88", align 1
  %75 = alloca i1, align 1
  %76 = alloca %"class.std::allocator.2", align 1
  %77 = alloca %"class.std::shared_ptr", align 8
  %78 = alloca %"class.UnitTest::TestDetails", align 8
  %79 = alloca %"class.UnitTest::TestDetails", align 8
  %80 = alloca %"class.std::shared_ptr", align 8
  %81 = alloca %"class.std::__cxx11::basic_string", align 8
  %82 = alloca %"class.std::allocator.88", align 1
  %83 = alloca %"class.std::vector.0", align 8
  %84 = alloca %"class.std::initializer_list.94", align 8
  %85 = alloca [2 x %"class.std::shared_ptr"], align 8
  %86 = alloca ptr, align 8
  %87 = alloca %"class.std::__cxx11::basic_string", align 8
  %88 = alloca %"class.std::allocator.88", align 1
  %89 = alloca %"class.std::__cxx11::basic_string", align 8
  %90 = alloca %"class.std::allocator.88", align 1
  %91 = alloca i1, align 1
  %92 = alloca %"class.std::allocator.2", align 1
  %93 = alloca %"class.std::shared_ptr", align 8
  %94 = alloca %"class.UnitTest::TestDetails", align 8
  %95 = alloca %"class.UnitTest::TestDetails", align 8
  %96 = alloca %"class.std::shared_ptr", align 8
  %97 = alloca %"class.std::__cxx11::basic_string", align 8
  %98 = alloca %"class.std::allocator.88", align 1
  %99 = alloca %"class.std::vector.0", align 8
  %100 = alloca %"class.std::initializer_list.94", align 8
  %101 = alloca [2 x %"class.std::shared_ptr"], align 8
  %102 = alloca ptr, align 8
  %103 = alloca %"class.std::__cxx11::basic_string", align 8
  %104 = alloca %"class.std::allocator.88", align 1
  %105 = alloca %"class.std::__cxx11::basic_string", align 8
  %106 = alloca %"class.std::allocator.88", align 1
  %107 = alloca i1, align 1
  %108 = alloca %"class.std::allocator.2", align 1
  %109 = alloca %"class.std::shared_ptr", align 8
  %110 = alloca %"class.UnitTest::TestDetails", align 8
  %111 = alloca %"class.UnitTest::TestDetails", align 8
  %112 = alloca %"class.std::shared_ptr", align 8
  %113 = alloca %"class.std::__cxx11::basic_string", align 8
  %114 = alloca %"class.std::allocator.88", align 1
  %115 = alloca %"class.std::vector.0", align 8
  %116 = alloca %"class.std::initializer_list.94", align 8
  %117 = alloca [2 x %"class.std::shared_ptr"], align 8
  %118 = alloca ptr, align 8
  %119 = alloca %"class.std::__cxx11::basic_string", align 8
  %120 = alloca %"class.std::allocator.88", align 1
  %121 = alloca %"class.std::__cxx11::basic_string", align 8
  %122 = alloca %"class.std::allocator.88", align 1
  %123 = alloca i1, align 1
  %124 = alloca %"class.std::allocator.2", align 1
  %125 = alloca %"class.std::shared_ptr", align 8
  %126 = alloca %"class.UnitTest::TestDetails", align 8
  %127 = alloca %"class.UnitTest::TestDetails", align 8
  %128 = alloca %"class.std::shared_ptr", align 8
  %129 = alloca %"class.std::shared_ptr", align 8
  %130 = alloca %"class.std::__cxx11::basic_string", align 8
  %131 = alloca %"class.std::allocator.88", align 1
  %132 = alloca %"class.std::vector.95", align 8
  %133 = alloca %"class.std::initializer_list.100", align 8
  %134 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %135 = alloca ptr, align 8
  %136 = alloca %"class.std::allocator.88", align 1
  %137 = alloca i1, align 1
  %138 = alloca %"class.std::allocator.97", align 1
  %139 = alloca %"class.std::shared_ptr", align 8
  %140 = alloca %"class.std::shared_ptr", align 8
  %141 = alloca %"class.std::__cxx11::basic_string", align 8
  %142 = alloca %"class.std::allocator.88", align 1
  %143 = alloca %"class.UnitTest::TestDetails", align 8
  %144 = alloca %"class.UnitTest::TestDetails", align 8
  %145 = alloca %"class.std::shared_ptr", align 8
  %146 = alloca %"class.std::__cxx11::basic_string", align 8
  %147 = alloca %"class.std::allocator.88", align 1
  %148 = alloca %"class.std::vector.95", align 8
  %149 = alloca %"class.std::initializer_list.100", align 8
  %150 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %151 = alloca ptr, align 8
  %152 = alloca %"class.std::allocator.88", align 1
  %153 = alloca i1, align 1
  %154 = alloca %"class.std::allocator.97", align 1
  %155 = alloca %"class.std::shared_ptr", align 8
  %156 = alloca %"class.std::shared_ptr", align 8
  %157 = alloca %"class.std::__cxx11::basic_string", align 8
  %158 = alloca %"class.std::allocator.88", align 1
  %159 = alloca %"class.UnitTest::TestDetails", align 8
  %160 = alloca %"class.UnitTest::TestDetails", align 8
  %161 = alloca %"class.std::shared_ptr", align 8
  %162 = alloca %"class.std::__cxx11::basic_string", align 8
  %163 = alloca %"class.std::allocator.88", align 1
  %164 = alloca %"class.std::vector.95", align 8
  %165 = alloca %"class.std::initializer_list.100", align 8
  %166 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %167 = alloca ptr, align 8
  %168 = alloca %"class.std::allocator.88", align 1
  %169 = alloca i1, align 1
  %170 = alloca %"class.std::allocator.97", align 1
  %171 = alloca %"class.std::shared_ptr", align 8
  %172 = alloca %"class.std::shared_ptr", align 8
  %173 = alloca %"class.std::__cxx11::basic_string", align 8
  %174 = alloca %"class.std::allocator.88", align 1
  %175 = alloca %"class.UnitTest::TestDetails", align 8
  %176 = alloca %"class.UnitTest::TestDetails", align 8
  %177 = alloca %"class.std::shared_ptr", align 8
  %178 = alloca %"class.std::__cxx11::basic_string", align 8
  %179 = alloca %"class.std::allocator.88", align 1
  %180 = alloca %"class.std::vector.95", align 8
  %181 = alloca %"class.std::initializer_list.100", align 8
  %182 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %183 = alloca ptr, align 8
  %184 = alloca %"class.std::allocator.88", align 1
  %185 = alloca i1, align 1
  %186 = alloca %"class.std::allocator.97", align 1
  %187 = alloca %"class.std::shared_ptr", align 8
  %188 = alloca %"class.std::shared_ptr", align 8
  %189 = alloca %"class.std::__cxx11::basic_string", align 8
  %190 = alloca %"class.std::allocator.88", align 1
  %191 = alloca %"class.UnitTest::TestDetails", align 8
  %192 = alloca %"class.UnitTest::TestDetails", align 8
  %193 = alloca %"class.std::shared_ptr", align 8
  %194 = alloca %"class.std::__cxx11::basic_string", align 8
  %195 = alloca %"class.std::allocator.88", align 1
  %196 = alloca %"class.std::vector.95", align 8
  %197 = alloca %"class.std::initializer_list.100", align 8
  %198 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %199 = alloca ptr, align 8
  %200 = alloca %"class.std::allocator.88", align 1
  %201 = alloca i1, align 1
  %202 = alloca %"class.std::allocator.97", align 1
  %203 = alloca %"class.std::shared_ptr", align 8
  %204 = alloca %"class.std::shared_ptr", align 8
  %205 = alloca %"class.std::__cxx11::basic_string", align 8
  %206 = alloca %"class.std::allocator.88", align 1
  %207 = alloca %"class.UnitTest::TestDetails", align 8
  %208 = alloca %"class.UnitTest::TestDetails", align 8
  %209 = alloca %"class.std::shared_ptr", align 8
  %210 = alloca %"class.std::__cxx11::basic_string", align 8
  %211 = alloca %"class.std::allocator.88", align 1
  %212 = alloca %"class.std::vector.95", align 8
  %213 = alloca %"class.std::initializer_list.100", align 8
  %214 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %215 = alloca ptr, align 8
  %216 = alloca %"class.std::allocator.88", align 1
  %217 = alloca i1, align 1
  %218 = alloca %"class.std::allocator.97", align 1
  %219 = alloca %"class.std::shared_ptr", align 8
  %220 = alloca %"class.std::shared_ptr", align 8
  %221 = alloca %"class.std::__cxx11::basic_string", align 8
  %222 = alloca %"class.std::allocator.88", align 1
  %223 = alloca %"class.UnitTest::TestDetails", align 8
  %224 = alloca %"class.UnitTest::TestDetails", align 8
  %225 = alloca %"class.std::shared_ptr", align 8
  %226 = alloca %"class.std::__cxx11::basic_string", align 8
  %227 = alloca %"class.std::allocator.88", align 1
  %228 = alloca %"class.std::vector.0", align 8
  %229 = alloca %"class.std::initializer_list.94", align 8
  %230 = alloca [2 x %"class.std::shared_ptr"], align 8
  %231 = alloca ptr, align 8
  %232 = alloca %"class.std::__cxx11::basic_string", align 8
  %233 = alloca %"class.std::allocator.88", align 1
  %234 = alloca %"class.std::__cxx11::basic_string", align 8
  %235 = alloca %"class.std::allocator.88", align 1
  %236 = alloca i1, align 1
  %237 = alloca %"class.std::allocator.2", align 1
  %238 = alloca %"class.std::shared_ptr", align 8
  %239 = alloca %"class.std::shared_ptr", align 8
  %240 = alloca %"class.std::__cxx11::basic_string", align 8
  %241 = alloca %"class.std::allocator.88", align 1
  %242 = alloca %"class.UnitTest::TestDetails", align 8
  %243 = alloca %"class.UnitTest::TestDetails", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %244 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %3) #7
  %245 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 33088) #8
  invoke void @_ZN14HtnTermFactoryC1Ev(ptr noundef nonnull align 8 dereferenceable(33088) %245)
          to label %246 unwind label %273

246:                                              ; preds = %1
  call void @_ZNSt10shared_ptrI14HtnTermFactoryEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef %245)
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #7
  %247 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %7) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef @.str.111, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %248 unwind label %277

248:                                              ; preds = %246
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %6, ptr noundef nonnull align 8 dereferenceable(33088) %247, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %249 unwind label %281

249:                                              ; preds = %248
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #7
  %250 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef @.str.103, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %251 unwind label %286

251:                                              ; preds = %249
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %9, ptr noundef nonnull align 8 dereferenceable(33088) %250, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %252 unwind label %290

252:                                              ; preds = %251
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #7
  br label %253

253:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #7
  %254 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %255 unwind label %295

255:                                              ; preds = %253
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %12, ptr noundef nonnull align 8 dereferenceable(33088) %254, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %256 unwind label %299

256:                                              ; preds = %255
  %257 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  %258 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %257)
          to label %259 unwind label %303

259:                                              ; preds = %256
  %260 = icmp eq i32 %258, 3
  %261 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %260)
          to label %262 unwind label %303

262:                                              ; preds = %259
  %263 = xor i1 %261, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #7
  br i1 %263, label %264, label %352

264:                                              ; preds = %262
  %265 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %266 unwind label %309

266:                                              ; preds = %264
  %267 = load ptr, ptr %265, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #7
  %268 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %269 unwind label %313

269:                                              ; preds = %266
  %270 = load ptr, ptr %268, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %15, ptr noundef nonnull align 8 dereferenceable(30) %270, i32 noundef 456)
          to label %271 unwind label %313

271:                                              ; preds = %269
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %267, ptr noundef nonnull align 8 dereferenceable(30) %15, ptr noundef @.str.112)
          to label %272 unwind label %313

272:                                              ; preds = %271
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  br label %352

273:                                              ; preds = %1
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %4, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %5, align 4
  call void @_ZdlPvm(ptr noundef %245, i64 noundef 33088) #9
  br label %2440

277:                                              ; preds = %246
  %278 = landingpad { ptr, i32 }
          cleanup
  %279 = extractvalue { ptr, i32 } %278, 0
  store ptr %279, ptr %4, align 8
  %280 = extractvalue { ptr, i32 } %278, 1
  store i32 %280, ptr %5, align 4
  br label %285

281:                                              ; preds = %248
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %4, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  br label %285

285:                                              ; preds = %281, %277
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #7
  br label %2439

286:                                              ; preds = %249
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %4, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %5, align 4
  br label %294

290:                                              ; preds = %251
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %4, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %294

294:                                              ; preds = %290, %286
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #7
  br label %2438

295:                                              ; preds = %253
  %296 = landingpad { ptr, i32 }
          catch ptr null
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %4, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %5, align 4
  br label %308

299:                                              ; preds = %255
  %300 = landingpad { ptr, i32 }
          catch ptr null
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %4, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %5, align 4
  br label %307

303:                                              ; preds = %259, %256
  %304 = landingpad { ptr, i32 }
          catch ptr null
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %4, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  br label %307

307:                                              ; preds = %303, %299
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %308

308:                                              ; preds = %307, %295
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #7
  br label %317

309:                                              ; preds = %264
  %310 = landingpad { ptr, i32 }
          catch ptr null
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %4, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %5, align 4
  br label %317

313:                                              ; preds = %271, %269, %266
  %314 = landingpad { ptr, i32 }
          catch ptr null
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %4, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  br label %317

317:                                              ; preds = %313, %309, %308
  %318 = load ptr, ptr %4, align 8
  %319 = call ptr @__cxa_begin_catch(ptr %318) #7
  %320 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %321 unwind label %353

321:                                              ; preds = %317
  %322 = load ptr, ptr %320, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #7
  %323 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %324 unwind label %357

324:                                              ; preds = %321
  %325 = load ptr, ptr %323, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %16, ptr noundef nonnull align 8 dereferenceable(30) %325, i32 noundef 456)
          to label %326 unwind label %357

326:                                              ; preds = %324
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %322, ptr noundef nonnull align 8 dereferenceable(30) %16, ptr noundef @.str.113)
          to label %327 unwind label %357

327:                                              ; preds = %326
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  invoke void @__cxa_end_catch()
          to label %328 unwind label %361

328:                                              ; preds = %327
  br label %329

329:                                              ; preds = %352, %328
  br label %330

330:                                              ; preds = %329
  br label %331

331:                                              ; preds = %330
  br label %332

332:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #7
  %333 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %334 unwind label %367

334:                                              ; preds = %332
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %17, ptr noundef nonnull align 8 dereferenceable(33088) %333, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %335 unwind label %371

335:                                              ; preds = %334
  %336 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  %337 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %336)
          to label %338 unwind label %375

338:                                              ; preds = %335
  %339 = icmp eq i32 %337, 2
  %340 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %339)
          to label %341 unwind label %375

341:                                              ; preds = %338
  %342 = xor i1 %340, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #7
  br i1 %342, label %343, label %424

343:                                              ; preds = %341
  %344 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %345 unwind label %381

345:                                              ; preds = %343
  %346 = load ptr, ptr %344, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #7
  %347 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %348 unwind label %385

348:                                              ; preds = %345
  %349 = load ptr, ptr %347, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %20, ptr noundef nonnull align 8 dereferenceable(30) %349, i32 noundef 457)
          to label %350 unwind label %385

350:                                              ; preds = %348
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %346, ptr noundef nonnull align 8 dereferenceable(30) %20, ptr noundef @.str.115)
          to label %351 unwind label %385

351:                                              ; preds = %350
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #7
  br label %424

352:                                              ; preds = %272, %262
  br label %329

353:                                              ; preds = %317
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %4, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %5, align 4
  br label %365

357:                                              ; preds = %326, %324, %321
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %4, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  br label %365

361:                                              ; preds = %917, %807, %739, %671, %603, %535, %467, %399, %327
  %362 = landingpad { ptr, i32 }
          cleanup
  %363 = extractvalue { ptr, i32 } %362, 0
  store ptr %363, ptr %4, align 8
  %364 = extractvalue { ptr, i32 } %362, 1
  store i32 %364, ptr %5, align 4
  br label %2437

365:                                              ; preds = %357, %353
  invoke void @__cxa_end_catch()
          to label %366 unwind label %2446

366:                                              ; preds = %365
  br label %2437

367:                                              ; preds = %332
  %368 = landingpad { ptr, i32 }
          catch ptr null
  %369 = extractvalue { ptr, i32 } %368, 0
  store ptr %369, ptr %4, align 8
  %370 = extractvalue { ptr, i32 } %368, 1
  store i32 %370, ptr %5, align 4
  br label %380

371:                                              ; preds = %334
  %372 = landingpad { ptr, i32 }
          catch ptr null
  %373 = extractvalue { ptr, i32 } %372, 0
  store ptr %373, ptr %4, align 8
  %374 = extractvalue { ptr, i32 } %372, 1
  store i32 %374, ptr %5, align 4
  br label %379

375:                                              ; preds = %338, %335
  %376 = landingpad { ptr, i32 }
          catch ptr null
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %4, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  br label %379

379:                                              ; preds = %375, %371
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  br label %380

380:                                              ; preds = %379, %367
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #7
  br label %389

381:                                              ; preds = %343
  %382 = landingpad { ptr, i32 }
          catch ptr null
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %4, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %5, align 4
  br label %389

385:                                              ; preds = %350, %348, %345
  %386 = landingpad { ptr, i32 }
          catch ptr null
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %4, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #7
  br label %389

389:                                              ; preds = %385, %381, %380
  %390 = load ptr, ptr %4, align 8
  %391 = call ptr @__cxa_begin_catch(ptr %390) #7
  %392 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %393 unwind label %425

393:                                              ; preds = %389
  %394 = load ptr, ptr %392, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #7
  %395 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %396 unwind label %429

396:                                              ; preds = %393
  %397 = load ptr, ptr %395, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %21, ptr noundef nonnull align 8 dereferenceable(30) %397, i32 noundef 457)
          to label %398 unwind label %429

398:                                              ; preds = %396
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %394, ptr noundef nonnull align 8 dereferenceable(30) %21, ptr noundef @.str.116)
          to label %399 unwind label %429

399:                                              ; preds = %398
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #7
  invoke void @__cxa_end_catch()
          to label %400 unwind label %361

400:                                              ; preds = %399
  br label %401

401:                                              ; preds = %424, %400
  br label %402

402:                                              ; preds = %401
  br label %403

403:                                              ; preds = %402
  br label %404

404:                                              ; preds = %403
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #7
  %405 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef @.str.117, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %406 unwind label %435

406:                                              ; preds = %404
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %22, ptr noundef nonnull align 8 dereferenceable(33088) %405, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %407 unwind label %439

407:                                              ; preds = %406
  %408 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %22) #7
  %409 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %408)
          to label %410 unwind label %443

410:                                              ; preds = %407
  %411 = icmp eq i32 %409, 1
  %412 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %411)
          to label %413 unwind label %443

413:                                              ; preds = %410
  %414 = xor i1 %412, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  br i1 %414, label %415, label %492

415:                                              ; preds = %413
  %416 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %417 unwind label %449

417:                                              ; preds = %415
  %418 = load ptr, ptr %416, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #7
  %419 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %420 unwind label %453

420:                                              ; preds = %417
  %421 = load ptr, ptr %419, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %25, ptr noundef nonnull align 8 dereferenceable(30) %421, i32 noundef 458)
          to label %422 unwind label %453

422:                                              ; preds = %420
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %418, ptr noundef nonnull align 8 dereferenceable(30) %25, ptr noundef @.str.118)
          to label %423 unwind label %453

423:                                              ; preds = %422
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  br label %492

424:                                              ; preds = %351, %341
  br label %401

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

429:                                              ; preds = %398, %396, %393
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %4, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #7
  br label %433

433:                                              ; preds = %429, %425
  invoke void @__cxa_end_catch()
          to label %434 unwind label %2446

434:                                              ; preds = %433
  br label %2437

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

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

443:                                              ; preds = %410, %407
  %444 = landingpad { ptr, i32 }
          catch ptr null
  %445 = extractvalue { ptr, i32 } %444, 0
  store ptr %445, ptr %4, align 8
  %446 = extractvalue { ptr, i32 } %444, 1
  store i32 %446, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  br label %447

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

448:                                              ; preds = %447, %435
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  br label %457

449:                                              ; preds = %415
  %450 = landingpad { ptr, i32 }
          catch ptr null
  %451 = extractvalue { ptr, i32 } %450, 0
  store ptr %451, ptr %4, align 8
  %452 = extractvalue { ptr, i32 } %450, 1
  store i32 %452, ptr %5, align 4
  br label %457

453:                                              ; preds = %422, %420, %417
  %454 = landingpad { ptr, i32 }
          catch ptr null
  %455 = extractvalue { ptr, i32 } %454, 0
  store ptr %455, ptr %4, align 8
  %456 = extractvalue { ptr, i32 } %454, 1
  store i32 %456, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  br label %457

457:                                              ; preds = %453, %449, %448
  %458 = load ptr, ptr %4, align 8
  %459 = call ptr @__cxa_begin_catch(ptr %458) #7
  %460 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %461 unwind label %493

461:                                              ; preds = %457
  %462 = load ptr, ptr %460, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #7
  %463 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %464 unwind label %497

464:                                              ; preds = %461
  %465 = load ptr, ptr %463, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %26, ptr noundef nonnull align 8 dereferenceable(30) %465, i32 noundef 458)
          to label %466 unwind label %497

466:                                              ; preds = %464
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %462, ptr noundef nonnull align 8 dereferenceable(30) %26, ptr noundef @.str.119)
          to label %467 unwind label %497

467:                                              ; preds = %466
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #7
  invoke void @__cxa_end_catch()
          to label %468 unwind label %361

468:                                              ; preds = %467
  br label %469

469:                                              ; preds = %492, %468
  br label %470

470:                                              ; preds = %469
  br label %471

471:                                              ; preds = %470
  br label %472

472:                                              ; preds = %471
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #7
  %473 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef @.str.120, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %474 unwind label %503

474:                                              ; preds = %472
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %27, ptr noundef nonnull align 8 dereferenceable(33088) %473, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %475 unwind label %507

475:                                              ; preds = %474
  %476 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  %477 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %476)
          to label %478 unwind label %511

478:                                              ; preds = %475
  %479 = icmp eq i32 %477, 1
  %480 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %479)
          to label %481 unwind label %511

481:                                              ; preds = %478
  %482 = xor i1 %480, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #7
  br i1 %482, label %483, label %560

483:                                              ; preds = %481
  %484 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %485 unwind label %517

485:                                              ; preds = %483
  %486 = load ptr, ptr %484, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #7
  %487 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %488 unwind label %521

488:                                              ; preds = %485
  %489 = load ptr, ptr %487, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %30, ptr noundef nonnull align 8 dereferenceable(30) %489, i32 noundef 459)
          to label %490 unwind label %521

490:                                              ; preds = %488
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %486, ptr noundef nonnull align 8 dereferenceable(30) %30, ptr noundef @.str.121)
          to label %491 unwind label %521

491:                                              ; preds = %490
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  br label %560

492:                                              ; preds = %423, %413
  br label %469

493:                                              ; preds = %457
  %494 = landingpad { ptr, i32 }
          cleanup
  %495 = extractvalue { ptr, i32 } %494, 0
  store ptr %495, ptr %4, align 8
  %496 = extractvalue { ptr, i32 } %494, 1
  store i32 %496, ptr %5, align 4
  br label %501

497:                                              ; preds = %466, %464, %461
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %4, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #7
  br label %501

501:                                              ; preds = %497, %493
  invoke void @__cxa_end_catch()
          to label %502 unwind label %2446

502:                                              ; preds = %501
  br label %2437

503:                                              ; preds = %472
  %504 = landingpad { ptr, i32 }
          catch ptr null
  %505 = extractvalue { ptr, i32 } %504, 0
  store ptr %505, ptr %4, align 8
  %506 = extractvalue { ptr, i32 } %504, 1
  store i32 %506, ptr %5, align 4
  br label %516

507:                                              ; preds = %474
  %508 = landingpad { ptr, i32 }
          catch ptr null
  %509 = extractvalue { ptr, i32 } %508, 0
  store ptr %509, ptr %4, align 8
  %510 = extractvalue { ptr, i32 } %508, 1
  store i32 %510, ptr %5, align 4
  br label %515

511:                                              ; preds = %478, %475
  %512 = landingpad { ptr, i32 }
          catch ptr null
  %513 = extractvalue { ptr, i32 } %512, 0
  store ptr %513, ptr %4, align 8
  %514 = extractvalue { ptr, i32 } %512, 1
  store i32 %514, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #7
  br label %515

515:                                              ; preds = %511, %507
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %516

516:                                              ; preds = %515, %503
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #7
  br label %525

517:                                              ; preds = %483
  %518 = landingpad { ptr, i32 }
          catch ptr null
  %519 = extractvalue { ptr, i32 } %518, 0
  store ptr %519, ptr %4, align 8
  %520 = extractvalue { ptr, i32 } %518, 1
  store i32 %520, ptr %5, align 4
  br label %525

521:                                              ; preds = %490, %488, %485
  %522 = landingpad { ptr, i32 }
          catch ptr null
  %523 = extractvalue { ptr, i32 } %522, 0
  store ptr %523, ptr %4, align 8
  %524 = extractvalue { ptr, i32 } %522, 1
  store i32 %524, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  br label %525

525:                                              ; preds = %521, %517, %516
  %526 = load ptr, ptr %4, align 8
  %527 = call ptr @__cxa_begin_catch(ptr %526) #7
  %528 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %529 unwind label %561

529:                                              ; preds = %525
  %530 = load ptr, ptr %528, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #7
  %531 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %532 unwind label %565

532:                                              ; preds = %529
  %533 = load ptr, ptr %531, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %31, ptr noundef nonnull align 8 dereferenceable(30) %533, i32 noundef 459)
          to label %534 unwind label %565

534:                                              ; preds = %532
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %530, ptr noundef nonnull align 8 dereferenceable(30) %31, ptr noundef @.str.122)
          to label %535 unwind label %565

535:                                              ; preds = %534
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  invoke void @__cxa_end_catch()
          to label %536 unwind label %361

536:                                              ; preds = %535
  br label %537

537:                                              ; preds = %560, %536
  br label %538

538:                                              ; preds = %537
  br label %539

539:                                              ; preds = %538
  br label %540

540:                                              ; preds = %539
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #7
  %541 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.123, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %542 unwind label %571

542:                                              ; preds = %540
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %32, ptr noundef nonnull align 8 dereferenceable(33088) %541, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %543 unwind label %575

543:                                              ; preds = %542
  %544 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  %545 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %544)
          to label %546 unwind label %579

546:                                              ; preds = %543
  %547 = icmp eq i32 %545, 1
  %548 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %547)
          to label %549 unwind label %579

549:                                              ; preds = %546
  %550 = xor i1 %548, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #7
  br i1 %550, label %551, label %628

551:                                              ; preds = %549
  %552 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %553 unwind label %585

553:                                              ; preds = %551
  %554 = load ptr, ptr %552, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #7
  %555 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %556 unwind label %589

556:                                              ; preds = %553
  %557 = load ptr, ptr %555, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %35, ptr noundef nonnull align 8 dereferenceable(30) %557, i32 noundef 460)
          to label %558 unwind label %589

558:                                              ; preds = %556
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %554, ptr noundef nonnull align 8 dereferenceable(30) %35, ptr noundef @.str.124)
          to label %559 unwind label %589

559:                                              ; preds = %558
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #7
  br label %628

560:                                              ; preds = %491, %481
  br label %537

561:                                              ; preds = %525
  %562 = landingpad { ptr, i32 }
          cleanup
  %563 = extractvalue { ptr, i32 } %562, 0
  store ptr %563, ptr %4, align 8
  %564 = extractvalue { ptr, i32 } %562, 1
  store i32 %564, ptr %5, align 4
  br label %569

565:                                              ; preds = %534, %532, %529
  %566 = landingpad { ptr, i32 }
          cleanup
  %567 = extractvalue { ptr, i32 } %566, 0
  store ptr %567, ptr %4, align 8
  %568 = extractvalue { ptr, i32 } %566, 1
  store i32 %568, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  br label %569

569:                                              ; preds = %565, %561
  invoke void @__cxa_end_catch()
          to label %570 unwind label %2446

570:                                              ; preds = %569
  br label %2437

571:                                              ; preds = %540
  %572 = landingpad { ptr, i32 }
          catch ptr null
  %573 = extractvalue { ptr, i32 } %572, 0
  store ptr %573, ptr %4, align 8
  %574 = extractvalue { ptr, i32 } %572, 1
  store i32 %574, ptr %5, align 4
  br label %584

575:                                              ; preds = %542
  %576 = landingpad { ptr, i32 }
          catch ptr null
  %577 = extractvalue { ptr, i32 } %576, 0
  store ptr %577, ptr %4, align 8
  %578 = extractvalue { ptr, i32 } %576, 1
  store i32 %578, ptr %5, align 4
  br label %583

579:                                              ; preds = %546, %543
  %580 = landingpad { ptr, i32 }
          catch ptr null
  %581 = extractvalue { ptr, i32 } %580, 0
  store ptr %581, ptr %4, align 8
  %582 = extractvalue { ptr, i32 } %580, 1
  store i32 %582, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #7
  br label %583

583:                                              ; preds = %579, %575
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  br label %584

584:                                              ; preds = %583, %571
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #7
  br label %593

585:                                              ; preds = %551
  %586 = landingpad { ptr, i32 }
          catch ptr null
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %4, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %5, align 4
  br label %593

589:                                              ; preds = %558, %556, %553
  %590 = landingpad { ptr, i32 }
          catch ptr null
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %4, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #7
  br label %593

593:                                              ; preds = %589, %585, %584
  %594 = load ptr, ptr %4, align 8
  %595 = call ptr @__cxa_begin_catch(ptr %594) #7
  %596 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %597 unwind label %629

597:                                              ; preds = %593
  %598 = load ptr, ptr %596, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #7
  %599 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %600 unwind label %633

600:                                              ; preds = %597
  %601 = load ptr, ptr %599, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %36, ptr noundef nonnull align 8 dereferenceable(30) %601, i32 noundef 460)
          to label %602 unwind label %633

602:                                              ; preds = %600
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %598, ptr noundef nonnull align 8 dereferenceable(30) %36, ptr noundef @.str.125)
          to label %603 unwind label %633

603:                                              ; preds = %602
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #7
  invoke void @__cxa_end_catch()
          to label %604 unwind label %361

604:                                              ; preds = %603
  br label %605

605:                                              ; preds = %628, %604
  br label %606

606:                                              ; preds = %605
  br label %607

607:                                              ; preds = %606
  br label %608

608:                                              ; preds = %607
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #7
  %609 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @.str.126, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %610 unwind label %639

610:                                              ; preds = %608
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %37, ptr noundef nonnull align 8 dereferenceable(33088) %609, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %611 unwind label %643

611:                                              ; preds = %610
  %612 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  %613 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %612)
          to label %614 unwind label %647

614:                                              ; preds = %611
  %615 = icmp eq i32 %613, 3
  %616 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %615)
          to label %617 unwind label %647

617:                                              ; preds = %614
  %618 = xor i1 %616, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #7
  br i1 %618, label %619, label %696

619:                                              ; preds = %617
  %620 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %621 unwind label %653

621:                                              ; preds = %619
  %622 = load ptr, ptr %620, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #7
  %623 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %624 unwind label %657

624:                                              ; preds = %621
  %625 = load ptr, ptr %623, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %40, ptr noundef nonnull align 8 dereferenceable(30) %625, i32 noundef 461)
          to label %626 unwind label %657

626:                                              ; preds = %624
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %622, ptr noundef nonnull align 8 dereferenceable(30) %40, ptr noundef @.str.127)
          to label %627 unwind label %657

627:                                              ; preds = %626
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #7
  br label %696

628:                                              ; preds = %559, %549
  br label %605

629:                                              ; preds = %593
  %630 = landingpad { ptr, i32 }
          cleanup
  %631 = extractvalue { ptr, i32 } %630, 0
  store ptr %631, ptr %4, align 8
  %632 = extractvalue { ptr, i32 } %630, 1
  store i32 %632, ptr %5, align 4
  br label %637

633:                                              ; preds = %602, %600, %597
  %634 = landingpad { ptr, i32 }
          cleanup
  %635 = extractvalue { ptr, i32 } %634, 0
  store ptr %635, ptr %4, align 8
  %636 = extractvalue { ptr, i32 } %634, 1
  store i32 %636, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #7
  br label %637

637:                                              ; preds = %633, %629
  invoke void @__cxa_end_catch()
          to label %638 unwind label %2446

638:                                              ; preds = %637
  br label %2437

639:                                              ; preds = %608
  %640 = landingpad { ptr, i32 }
          catch ptr null
  %641 = extractvalue { ptr, i32 } %640, 0
  store ptr %641, ptr %4, align 8
  %642 = extractvalue { ptr, i32 } %640, 1
  store i32 %642, ptr %5, align 4
  br label %652

643:                                              ; preds = %610
  %644 = landingpad { ptr, i32 }
          catch ptr null
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %4, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %5, align 4
  br label %651

647:                                              ; preds = %614, %611
  %648 = landingpad { ptr, i32 }
          catch ptr null
  %649 = extractvalue { ptr, i32 } %648, 0
  store ptr %649, ptr %4, align 8
  %650 = extractvalue { ptr, i32 } %648, 1
  store i32 %650, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #7
  br label %651

651:                                              ; preds = %647, %643
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %652

652:                                              ; preds = %651, %639
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #7
  br label %661

653:                                              ; preds = %619
  %654 = landingpad { ptr, i32 }
          catch ptr null
  %655 = extractvalue { ptr, i32 } %654, 0
  store ptr %655, ptr %4, align 8
  %656 = extractvalue { ptr, i32 } %654, 1
  store i32 %656, ptr %5, align 4
  br label %661

657:                                              ; preds = %626, %624, %621
  %658 = landingpad { ptr, i32 }
          catch ptr null
  %659 = extractvalue { ptr, i32 } %658, 0
  store ptr %659, ptr %4, align 8
  %660 = extractvalue { ptr, i32 } %658, 1
  store i32 %660, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #7
  br label %661

661:                                              ; preds = %657, %653, %652
  %662 = load ptr, ptr %4, align 8
  %663 = call ptr @__cxa_begin_catch(ptr %662) #7
  %664 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %665 unwind label %697

665:                                              ; preds = %661
  %666 = load ptr, ptr %664, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #7
  %667 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %668 unwind label %701

668:                                              ; preds = %665
  %669 = load ptr, ptr %667, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %41, ptr noundef nonnull align 8 dereferenceable(30) %669, i32 noundef 461)
          to label %670 unwind label %701

670:                                              ; preds = %668
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %666, ptr noundef nonnull align 8 dereferenceable(30) %41, ptr noundef @.str.128)
          to label %671 unwind label %701

671:                                              ; preds = %670
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #7
  invoke void @__cxa_end_catch()
          to label %672 unwind label %361

672:                                              ; preds = %671
  br label %673

673:                                              ; preds = %696, %672
  br label %674

674:                                              ; preds = %673
  br label %675

675:                                              ; preds = %674
  br label %676

676:                                              ; preds = %675
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #7
  %677 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef @.str.129, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %678 unwind label %707

678:                                              ; preds = %676
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %42, ptr noundef nonnull align 8 dereferenceable(33088) %677, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %679 unwind label %711

679:                                              ; preds = %678
  %680 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  %681 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %680)
          to label %682 unwind label %715

682:                                              ; preds = %679
  %683 = icmp eq i32 %681, 3
  %684 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %683)
          to label %685 unwind label %715

685:                                              ; preds = %682
  %686 = xor i1 %684, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #7
  br i1 %686, label %687, label %764

687:                                              ; preds = %685
  %688 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %689 unwind label %721

689:                                              ; preds = %687
  %690 = load ptr, ptr %688, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #7
  %691 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %692 unwind label %725

692:                                              ; preds = %689
  %693 = load ptr, ptr %691, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %45, ptr noundef nonnull align 8 dereferenceable(30) %693, i32 noundef 462)
          to label %694 unwind label %725

694:                                              ; preds = %692
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %690, ptr noundef nonnull align 8 dereferenceable(30) %45, ptr noundef @.str.130)
          to label %695 unwind label %725

695:                                              ; preds = %694
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #7
  br label %764

696:                                              ; preds = %627, %617
  br label %673

697:                                              ; preds = %661
  %698 = landingpad { ptr, i32 }
          cleanup
  %699 = extractvalue { ptr, i32 } %698, 0
  store ptr %699, ptr %4, align 8
  %700 = extractvalue { ptr, i32 } %698, 1
  store i32 %700, ptr %5, align 4
  br label %705

701:                                              ; preds = %670, %668, %665
  %702 = landingpad { ptr, i32 }
          cleanup
  %703 = extractvalue { ptr, i32 } %702, 0
  store ptr %703, ptr %4, align 8
  %704 = extractvalue { ptr, i32 } %702, 1
  store i32 %704, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #7
  br label %705

705:                                              ; preds = %701, %697
  invoke void @__cxa_end_catch()
          to label %706 unwind label %2446

706:                                              ; preds = %705
  br label %2437

707:                                              ; preds = %676
  %708 = landingpad { ptr, i32 }
          catch ptr null
  %709 = extractvalue { ptr, i32 } %708, 0
  store ptr %709, ptr %4, align 8
  %710 = extractvalue { ptr, i32 } %708, 1
  store i32 %710, ptr %5, align 4
  br label %720

711:                                              ; preds = %678
  %712 = landingpad { ptr, i32 }
          catch ptr null
  %713 = extractvalue { ptr, i32 } %712, 0
  store ptr %713, ptr %4, align 8
  %714 = extractvalue { ptr, i32 } %712, 1
  store i32 %714, ptr %5, align 4
  br label %719

715:                                              ; preds = %682, %679
  %716 = landingpad { ptr, i32 }
          catch ptr null
  %717 = extractvalue { ptr, i32 } %716, 0
  store ptr %717, ptr %4, align 8
  %718 = extractvalue { ptr, i32 } %716, 1
  store i32 %718, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #7
  br label %719

719:                                              ; preds = %715, %711
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  br label %720

720:                                              ; preds = %719, %707
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #7
  br label %729

721:                                              ; preds = %687
  %722 = landingpad { ptr, i32 }
          catch ptr null
  %723 = extractvalue { ptr, i32 } %722, 0
  store ptr %723, ptr %4, align 8
  %724 = extractvalue { ptr, i32 } %722, 1
  store i32 %724, ptr %5, align 4
  br label %729

725:                                              ; preds = %694, %692, %689
  %726 = landingpad { ptr, i32 }
          catch ptr null
  %727 = extractvalue { ptr, i32 } %726, 0
  store ptr %727, ptr %4, align 8
  %728 = extractvalue { ptr, i32 } %726, 1
  store i32 %728, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #7
  br label %729

729:                                              ; preds = %725, %721, %720
  %730 = load ptr, ptr %4, align 8
  %731 = call ptr @__cxa_begin_catch(ptr %730) #7
  %732 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %733 unwind label %765

733:                                              ; preds = %729
  %734 = load ptr, ptr %732, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #7
  %735 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %736 unwind label %769

736:                                              ; preds = %733
  %737 = load ptr, ptr %735, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %46, ptr noundef nonnull align 8 dereferenceable(30) %737, i32 noundef 462)
          to label %738 unwind label %769

738:                                              ; preds = %736
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %734, ptr noundef nonnull align 8 dereferenceable(30) %46, ptr noundef @.str.131)
          to label %739 unwind label %769

739:                                              ; preds = %738
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #7
  invoke void @__cxa_end_catch()
          to label %740 unwind label %361

740:                                              ; preds = %739
  br label %741

741:                                              ; preds = %764, %740
  br label %742

742:                                              ; preds = %741
  br label %743

743:                                              ; preds = %742
  br label %744

744:                                              ; preds = %743
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #7
  %745 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %746 unwind label %775

746:                                              ; preds = %744
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %47, ptr noundef nonnull align 8 dereferenceable(33088) %745, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %747 unwind label %779

747:                                              ; preds = %746
  %748 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  %749 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %748)
          to label %750 unwind label %783

750:                                              ; preds = %747
  %751 = icmp eq i32 %749, 0
  %752 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %751)
          to label %753 unwind label %783

753:                                              ; preds = %750
  %754 = xor i1 %752, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #7
  br i1 %754, label %755, label %847

755:                                              ; preds = %753
  %756 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %757 unwind label %789

757:                                              ; preds = %755
  %758 = load ptr, ptr %756, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #7
  %759 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %760 unwind label %793

760:                                              ; preds = %757
  %761 = load ptr, ptr %759, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %50, ptr noundef nonnull align 8 dereferenceable(30) %761, i32 noundef 463)
          to label %762 unwind label %793

762:                                              ; preds = %760
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %758, ptr noundef nonnull align 8 dereferenceable(30) %50, ptr noundef @.str.132)
          to label %763 unwind label %793

763:                                              ; preds = %762
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  br label %847

764:                                              ; preds = %695, %685
  br label %741

765:                                              ; preds = %729
  %766 = landingpad { ptr, i32 }
          cleanup
  %767 = extractvalue { ptr, i32 } %766, 0
  store ptr %767, ptr %4, align 8
  %768 = extractvalue { ptr, i32 } %766, 1
  store i32 %768, ptr %5, align 4
  br label %773

769:                                              ; preds = %738, %736, %733
  %770 = landingpad { ptr, i32 }
          cleanup
  %771 = extractvalue { ptr, i32 } %770, 0
  store ptr %771, ptr %4, align 8
  %772 = extractvalue { ptr, i32 } %770, 1
  store i32 %772, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #7
  br label %773

773:                                              ; preds = %769, %765
  invoke void @__cxa_end_catch()
          to label %774 unwind label %2446

774:                                              ; preds = %773
  br label %2437

775:                                              ; preds = %744
  %776 = landingpad { ptr, i32 }
          catch ptr null
  %777 = extractvalue { ptr, i32 } %776, 0
  store ptr %777, ptr %4, align 8
  %778 = extractvalue { ptr, i32 } %776, 1
  store i32 %778, ptr %5, align 4
  br label %788

779:                                              ; preds = %746
  %780 = landingpad { ptr, i32 }
          catch ptr null
  %781 = extractvalue { ptr, i32 } %780, 0
  store ptr %781, ptr %4, align 8
  %782 = extractvalue { ptr, i32 } %780, 1
  store i32 %782, ptr %5, align 4
  br label %787

783:                                              ; preds = %750, %747
  %784 = landingpad { ptr, i32 }
          catch ptr null
  %785 = extractvalue { ptr, i32 } %784, 0
  store ptr %785, ptr %4, align 8
  %786 = extractvalue { ptr, i32 } %784, 1
  store i32 %786, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #7
  br label %787

787:                                              ; preds = %783, %779
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  br label %788

788:                                              ; preds = %787, %775
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #7
  br label %797

789:                                              ; preds = %755
  %790 = landingpad { ptr, i32 }
          catch ptr null
  %791 = extractvalue { ptr, i32 } %790, 0
  store ptr %791, ptr %4, align 8
  %792 = extractvalue { ptr, i32 } %790, 1
  store i32 %792, ptr %5, align 4
  br label %797

793:                                              ; preds = %762, %760, %757
  %794 = landingpad { ptr, i32 }
          catch ptr null
  %795 = extractvalue { ptr, i32 } %794, 0
  store ptr %795, ptr %4, align 8
  %796 = extractvalue { ptr, i32 } %794, 1
  store i32 %796, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  br label %797

797:                                              ; preds = %793, %789, %788
  %798 = load ptr, ptr %4, align 8
  %799 = call ptr @__cxa_begin_catch(ptr %798) #7
  %800 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %801 unwind label %848

801:                                              ; preds = %797
  %802 = load ptr, ptr %800, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #7
  %803 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %804 unwind label %852

804:                                              ; preds = %801
  %805 = load ptr, ptr %803, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %51, ptr noundef nonnull align 8 dereferenceable(30) %805, i32 noundef 463)
          to label %806 unwind label %852

806:                                              ; preds = %804
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %802, ptr noundef nonnull align 8 dereferenceable(30) %51, ptr noundef @.str.133)
          to label %807 unwind label %852

807:                                              ; preds = %806
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #7
  invoke void @__cxa_end_catch()
          to label %808 unwind label %361

808:                                              ; preds = %807
  br label %809

809:                                              ; preds = %847, %808
  br label %810

810:                                              ; preds = %809
  br label %811

811:                                              ; preds = %810
  br label %812

812:                                              ; preds = %811
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #7
  %813 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %814 unwind label %858

814:                                              ; preds = %812
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #7
  store i1 true, ptr %60, align 1
  store ptr %57, ptr %58, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef @.str.107, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %815 unwind label %862

815:                                              ; preds = %814
  store i1 false, ptr %60, align 1
  %816 = getelementptr inbounds %"class.std::initializer_list.100", ptr %56, i32 0, i32 0
  store ptr %57, ptr %816, align 8, !tbaa !9
  %817 = getelementptr inbounds %"class.std::initializer_list.100", ptr %56, i32 0, i32 1
  store i64 1, ptr %817, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #7
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #7
  %818 = getelementptr inbounds { ptr, i64 }, ptr %56, i32 0, i32 0
  %819 = load ptr, ptr %818, align 8
  %820 = getelementptr inbounds { ptr, i64 }, ptr %56, i32 0, i32 1
  %821 = load i64, ptr %820, align 8
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %55, ptr %819, i64 %821, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %822 unwind label %866

822:                                              ; preds = %815
  invoke void @_ZN14HtnTermFactory21CreateConstantFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS5_SaIS5_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %52, ptr noundef nonnull align 8 dereferenceable(33088) %813, ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef %55)
          to label %823 unwind label %870

823:                                              ; preds = %822
  %824 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %52) #7
  %825 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %824)
          to label %826 unwind label %874

826:                                              ; preds = %823
  %827 = icmp eq i32 %825, 4
  %828 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %827)
          to label %829 unwind label %874

829:                                              ; preds = %826
  %830 = xor i1 %828, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #7
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %55) #7
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #7
  %831 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %57, i32 0, i32 0
  %832 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %831, i64 1
  br label %833

833:                                              ; preds = %833, %829
  %834 = phi ptr [ %832, %829 ], [ %835, %833 ]
  %835 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %834, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %835) #7
  %836 = icmp eq ptr %835, %831
  br i1 %836, label %837, label %833

837:                                              ; preds = %833
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #7
  br i1 %830, label %838, label %966

838:                                              ; preds = %837
  %839 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %840 unwind label %899

840:                                              ; preds = %838
  %841 = load ptr, ptr %839, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %62) #7
  %842 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %843 unwind label %903

843:                                              ; preds = %840
  %844 = load ptr, ptr %842, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %62, ptr noundef nonnull align 8 dereferenceable(30) %844, i32 noundef 464)
          to label %845 unwind label %903

845:                                              ; preds = %843
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %841, ptr noundef nonnull align 8 dereferenceable(30) %62, ptr noundef @.str.134)
          to label %846 unwind label %903

846:                                              ; preds = %845
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #7
  br label %966

847:                                              ; preds = %763, %753
  br label %809

848:                                              ; preds = %797
  %849 = landingpad { ptr, i32 }
          cleanup
  %850 = extractvalue { ptr, i32 } %849, 0
  store ptr %850, ptr %4, align 8
  %851 = extractvalue { ptr, i32 } %849, 1
  store i32 %851, ptr %5, align 4
  br label %856

852:                                              ; preds = %806, %804, %801
  %853 = landingpad { ptr, i32 }
          cleanup
  %854 = extractvalue { ptr, i32 } %853, 0
  store ptr %854, ptr %4, align 8
  %855 = extractvalue { ptr, i32 } %853, 1
  store i32 %855, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #7
  br label %856

856:                                              ; preds = %852, %848
  invoke void @__cxa_end_catch()
          to label %857 unwind label %2446

857:                                              ; preds = %856
  br label %2437

858:                                              ; preds = %812
  %859 = landingpad { ptr, i32 }
          catch ptr null
  %860 = extractvalue { ptr, i32 } %859, 0
  store ptr %860, ptr %4, align 8
  %861 = extractvalue { ptr, i32 } %859, 1
  store i32 %861, ptr %5, align 4
  br label %898

862:                                              ; preds = %814
  %863 = landingpad { ptr, i32 }
          catch ptr null
  %864 = extractvalue { ptr, i32 } %863, 0
  store ptr %864, ptr %4, align 8
  %865 = extractvalue { ptr, i32 } %863, 1
  store i32 %865, ptr %5, align 4
  br label %887

866:                                              ; preds = %815
  %867 = landingpad { ptr, i32 }
          catch ptr null
  %868 = extractvalue { ptr, i32 } %867, 0
  store ptr %868, ptr %4, align 8
  %869 = extractvalue { ptr, i32 } %867, 1
  store i32 %869, ptr %5, align 4
  br label %879

870:                                              ; preds = %822
  %871 = landingpad { ptr, i32 }
          catch ptr null
  %872 = extractvalue { ptr, i32 } %871, 0
  store ptr %872, ptr %4, align 8
  %873 = extractvalue { ptr, i32 } %871, 1
  store i32 %873, ptr %5, align 4
  br label %878

874:                                              ; preds = %826, %823
  %875 = landingpad { ptr, i32 }
          catch ptr null
  %876 = extractvalue { ptr, i32 } %875, 0
  store ptr %876, ptr %4, align 8
  %877 = extractvalue { ptr, i32 } %875, 1
  store i32 %877, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #7
  br label %878

878:                                              ; preds = %874, %870
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %55) #7
  br label %879

879:                                              ; preds = %878, %866
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #7
  %880 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %57, i32 0, i32 0
  %881 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %880, i64 1
  br label %882

882:                                              ; preds = %882, %879
  %883 = phi ptr [ %881, %879 ], [ %884, %882 ]
  %884 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %883, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %884) #7
  %885 = icmp eq ptr %884, %880
  br i1 %885, label %886, label %882

886:                                              ; preds = %882
  br label %887

887:                                              ; preds = %886, %862
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #7
  %888 = load i1, ptr %60, align 1
  br i1 %888, label %889, label %897

889:                                              ; preds = %887
  %890 = load ptr, ptr %58, align 8
  %891 = icmp eq ptr %57, %890
  br i1 %891, label %896, label %892

892:                                              ; preds = %892, %889
  %893 = phi ptr [ %890, %889 ], [ %894, %892 ]
  %894 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %893, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %894) #7
  %895 = icmp eq ptr %894, %57
  br i1 %895, label %896, label %892

896:                                              ; preds = %892, %889
  br label %897

897:                                              ; preds = %896, %887
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  br label %898

898:                                              ; preds = %897, %858
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #7
  br label %907

899:                                              ; preds = %838
  %900 = landingpad { ptr, i32 }
          catch ptr null
  %901 = extractvalue { ptr, i32 } %900, 0
  store ptr %901, ptr %4, align 8
  %902 = extractvalue { ptr, i32 } %900, 1
  store i32 %902, ptr %5, align 4
  br label %907

903:                                              ; preds = %845, %843, %840
  %904 = landingpad { ptr, i32 }
          catch ptr null
  %905 = extractvalue { ptr, i32 } %904, 0
  store ptr %905, ptr %4, align 8
  %906 = extractvalue { ptr, i32 } %904, 1
  store i32 %906, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #7
  br label %907

907:                                              ; preds = %903, %899, %898
  %908 = load ptr, ptr %4, align 8
  %909 = call ptr @__cxa_begin_catch(ptr %908) #7
  %910 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %911 unwind label %967

911:                                              ; preds = %907
  %912 = load ptr, ptr %910, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #7
  %913 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %914 unwind label %971

914:                                              ; preds = %911
  %915 = load ptr, ptr %913, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %63, ptr noundef nonnull align 8 dereferenceable(30) %915, i32 noundef 464)
          to label %916 unwind label %971

916:                                              ; preds = %914
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %912, ptr noundef nonnull align 8 dereferenceable(30) %63, ptr noundef @.str.135)
          to label %917 unwind label %971

917:                                              ; preds = %916
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #7
  invoke void @__cxa_end_catch()
          to label %918 unwind label %361

918:                                              ; preds = %917
  br label %919

919:                                              ; preds = %966, %918
  br label %920

920:                                              ; preds = %919
  br label %921

921:                                              ; preds = %920
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #7
  %922 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef @.str.136, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %923 unwind label %977

923:                                              ; preds = %921
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #7
  store i1 true, ptr %75, align 1
  store ptr %69, ptr %70, align 8
  %924 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %71) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %72)
          to label %925 unwind label %981

925:                                              ; preds = %923
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %69, ptr noundef nonnull align 8 dereferenceable(33088) %924, ptr noundef nonnull align 8 dereferenceable(32) %71)
          to label %926 unwind label %985

926:                                              ; preds = %925
  %927 = getelementptr inbounds %"class.std::shared_ptr", ptr %69, i64 1
  store ptr %927, ptr %70, align 8
  %928 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %73) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef @.str.137, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %929 unwind label %989

929:                                              ; preds = %926
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %927, ptr noundef nonnull align 8 dereferenceable(33088) %928, ptr noundef nonnull align 8 dereferenceable(32) %73)
          to label %930 unwind label %993

930:                                              ; preds = %929
  store i1 false, ptr %75, align 1
  %931 = getelementptr inbounds %"class.std::initializer_list.94", ptr %68, i32 0, i32 0
  store ptr %69, ptr %931, align 8, !tbaa !13
  %932 = getelementptr inbounds %"class.std::initializer_list.94", ptr %68, i32 0, i32 1
  store i64 2, ptr %932, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #7
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #7
  %933 = getelementptr inbounds { ptr, i64 }, ptr %68, i32 0, i32 0
  %934 = load ptr, ptr %933, align 8
  %935 = getelementptr inbounds { ptr, i64 }, ptr %68, i32 0, i32 1
  %936 = load i64, ptr %935, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %67, ptr %934, i64 %936, ptr noundef nonnull align 1 dereferenceable(1) %76)
          to label %937 unwind label %997

937:                                              ; preds = %930
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %64, ptr noundef nonnull align 8 dereferenceable(33088) %922, ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef %67)
          to label %938 unwind label %1001

938:                                              ; preds = %937
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #7
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #7
  %939 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %69, i32 0, i32 0
  %940 = getelementptr inbounds %"class.std::shared_ptr", ptr %939, i64 2
  br label %941

941:                                              ; preds = %941, %938
  %942 = phi ptr [ %940, %938 ], [ %943, %941 ]
  %943 = getelementptr inbounds %"class.std::shared_ptr", ptr %942, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %943) #7
  %944 = icmp eq ptr %943, %939
  br i1 %944, label %945, label %941

945:                                              ; preds = %941
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #7
  br label %946

946:                                              ; preds = %945
  call void @llvm.lifetime.start.p0(i64 16, ptr %77) #7
  %947 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  %948 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %77, ptr noundef nonnull align 8 dereferenceable(72) %947, ptr noundef %948)
          to label %949 unwind label %1028

949:                                              ; preds = %946
  %950 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %77) #7
  %951 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  %952 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %950, ptr noundef nonnull align 8 dereferenceable(72) %951)
          to label %953 unwind label %1032

953:                                              ; preds = %949
  %954 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %952)
          to label %955 unwind label %1032

955:                                              ; preds = %953
  %956 = xor i1 %954, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #7
  br i1 %956, label %957, label %1105

957:                                              ; preds = %955
  %958 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %959 unwind label %1037

959:                                              ; preds = %957
  %960 = load ptr, ptr %958, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %78) #7
  %961 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %962 unwind label %1041

962:                                              ; preds = %959
  %963 = load ptr, ptr %961, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %78, ptr noundef nonnull align 8 dereferenceable(30) %963, i32 noundef 471)
          to label %964 unwind label %1041

964:                                              ; preds = %962
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %960, ptr noundef nonnull align 8 dereferenceable(30) %78, ptr noundef @.str.138)
          to label %965 unwind label %1041

965:                                              ; preds = %964
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #7
  br label %1105

966:                                              ; preds = %846, %837
  br label %919

967:                                              ; preds = %907
  %968 = landingpad { ptr, i32 }
          cleanup
  %969 = extractvalue { ptr, i32 } %968, 0
  store ptr %969, ptr %4, align 8
  %970 = extractvalue { ptr, i32 } %968, 1
  store i32 %970, ptr %5, align 4
  br label %975

971:                                              ; preds = %916, %914, %911
  %972 = landingpad { ptr, i32 }
          cleanup
  %973 = extractvalue { ptr, i32 } %972, 0
  store ptr %973, ptr %4, align 8
  %974 = extractvalue { ptr, i32 } %972, 1
  store i32 %974, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #7
  br label %975

975:                                              ; preds = %971, %967
  invoke void @__cxa_end_catch()
          to label %976 unwind label %2446

976:                                              ; preds = %975
  br label %2437

977:                                              ; preds = %921
  %978 = landingpad { ptr, i32 }
          cleanup
  %979 = extractvalue { ptr, i32 } %978, 0
  store ptr %979, ptr %4, align 8
  %980 = extractvalue { ptr, i32 } %978, 1
  store i32 %980, ptr %5, align 4
  br label %1027

981:                                              ; preds = %923
  %982 = landingpad { ptr, i32 }
          cleanup
  %983 = extractvalue { ptr, i32 } %982, 0
  store ptr %983, ptr %4, align 8
  %984 = extractvalue { ptr, i32 } %982, 1
  store i32 %984, ptr %5, align 4
  br label %1016

985:                                              ; preds = %925
  %986 = landingpad { ptr, i32 }
          cleanup
  %987 = extractvalue { ptr, i32 } %986, 0
  store ptr %987, ptr %4, align 8
  %988 = extractvalue { ptr, i32 } %986, 1
  store i32 %988, ptr %5, align 4
  br label %1015

989:                                              ; preds = %926
  %990 = landingpad { ptr, i32 }
          cleanup
  %991 = extractvalue { ptr, i32 } %990, 0
  store ptr %991, ptr %4, align 8
  %992 = extractvalue { ptr, i32 } %990, 1
  store i32 %992, ptr %5, align 4
  br label %1014

993:                                              ; preds = %929
  %994 = landingpad { ptr, i32 }
          cleanup
  %995 = extractvalue { ptr, i32 } %994, 0
  store ptr %995, ptr %4, align 8
  %996 = extractvalue { ptr, i32 } %994, 1
  store i32 %996, ptr %5, align 4
  br label %1013

997:                                              ; preds = %930
  %998 = landingpad { ptr, i32 }
          cleanup
  %999 = extractvalue { ptr, i32 } %998, 0
  store ptr %999, ptr %4, align 8
  %1000 = extractvalue { ptr, i32 } %998, 1
  store i32 %1000, ptr %5, align 4
  br label %1005

1001:                                             ; preds = %937
  %1002 = landingpad { ptr, i32 }
          cleanup
  %1003 = extractvalue { ptr, i32 } %1002, 0
  store ptr %1003, ptr %4, align 8
  %1004 = extractvalue { ptr, i32 } %1002, 1
  store i32 %1004, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #7
  br label %1005

1005:                                             ; preds = %1001, %997
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #7
  %1006 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %69, i32 0, i32 0
  %1007 = getelementptr inbounds %"class.std::shared_ptr", ptr %1006, i64 2
  br label %1008

1008:                                             ; preds = %1008, %1005
  %1009 = phi ptr [ %1007, %1005 ], [ %1010, %1008 ]
  %1010 = getelementptr inbounds %"class.std::shared_ptr", ptr %1009, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1010) #7
  %1011 = icmp eq ptr %1010, %1006
  br i1 %1011, label %1012, label %1008

1012:                                             ; preds = %1008
  br label %1013

1013:                                             ; preds = %1012, %993
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #7
  br label %1014

1014:                                             ; preds = %1013, %989
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #7
  br label %1015

1015:                                             ; preds = %1014, %985
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #7
  br label %1016

1016:                                             ; preds = %1015, %981
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #7
  %1017 = load i1, ptr %75, align 1
  br i1 %1017, label %1018, label %1026

1018:                                             ; preds = %1016
  %1019 = load ptr, ptr %70, align 8
  %1020 = icmp eq ptr %69, %1019
  br i1 %1020, label %1025, label %1021

1021:                                             ; preds = %1021, %1018
  %1022 = phi ptr [ %1019, %1018 ], [ %1023, %1021 ]
  %1023 = getelementptr inbounds %"class.std::shared_ptr", ptr %1022, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1023) #7
  %1024 = icmp eq ptr %1023, %69
  br i1 %1024, label %1025, label %1021

1025:                                             ; preds = %1021, %1018
  br label %1026

1026:                                             ; preds = %1025, %1016
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #7
  br label %1027

1027:                                             ; preds = %1026, %977
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #7
  br label %2436

1028:                                             ; preds = %946
  %1029 = landingpad { ptr, i32 }
          catch ptr null
  %1030 = extractvalue { ptr, i32 } %1029, 0
  store ptr %1030, ptr %4, align 8
  %1031 = extractvalue { ptr, i32 } %1029, 1
  store i32 %1031, ptr %5, align 4
  br label %1036

1032:                                             ; preds = %953, %949
  %1033 = landingpad { ptr, i32 }
          catch ptr null
  %1034 = extractvalue { ptr, i32 } %1033, 0
  store ptr %1034, ptr %4, align 8
  %1035 = extractvalue { ptr, i32 } %1033, 1
  store i32 %1035, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #7
  br label %1036

1036:                                             ; preds = %1032, %1028
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #7
  br label %1045

1037:                                             ; preds = %957
  %1038 = landingpad { ptr, i32 }
          catch ptr null
  %1039 = extractvalue { ptr, i32 } %1038, 0
  store ptr %1039, ptr %4, align 8
  %1040 = extractvalue { ptr, i32 } %1038, 1
  store i32 %1040, ptr %5, align 4
  br label %1045

1041:                                             ; preds = %964, %962, %959
  %1042 = landingpad { ptr, i32 }
          catch ptr null
  %1043 = extractvalue { ptr, i32 } %1042, 0
  store ptr %1043, ptr %4, align 8
  %1044 = extractvalue { ptr, i32 } %1042, 1
  store i32 %1044, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #7
  br label %1045

1045:                                             ; preds = %1041, %1037, %1036
  %1046 = load ptr, ptr %4, align 8
  %1047 = call ptr @__cxa_begin_catch(ptr %1046) #7
  %1048 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1049 unwind label %1106

1049:                                             ; preds = %1045
  %1050 = load ptr, ptr %1048, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %79) #7
  %1051 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1052 unwind label %1110

1052:                                             ; preds = %1049
  %1053 = load ptr, ptr %1051, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %79, ptr noundef nonnull align 8 dereferenceable(30) %1053, i32 noundef 471)
          to label %1054 unwind label %1110

1054:                                             ; preds = %1052
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1050, ptr noundef nonnull align 8 dereferenceable(30) %79, ptr noundef @.str.139)
          to label %1055 unwind label %1110

1055:                                             ; preds = %1054
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #7
  invoke void @__cxa_end_catch()
          to label %1056 unwind label %1114

1056:                                             ; preds = %1055
  br label %1057

1057:                                             ; preds = %1105, %1056
  br label %1058

1058:                                             ; preds = %1057
  br label %1059

1059:                                             ; preds = %1058
  call void @llvm.lifetime.start.p0(i64 16, ptr %80) #7
  %1060 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %81) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef @.str.136, ptr noundef nonnull align 1 dereferenceable(1) %82)
          to label %1061 unwind label %1120

1061:                                             ; preds = %1059
  call void @llvm.lifetime.start.p0(i64 32, ptr %85) #7
  store i1 true, ptr %91, align 1
  store ptr %85, ptr %86, align 8
  %1062 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %87) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %88)
          to label %1063 unwind label %1124

1063:                                             ; preds = %1061
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %85, ptr noundef nonnull align 8 dereferenceable(33088) %1062, ptr noundef nonnull align 8 dereferenceable(32) %87)
          to label %1064 unwind label %1128

1064:                                             ; preds = %1063
  %1065 = getelementptr inbounds %"class.std::shared_ptr", ptr %85, i64 1
  store ptr %1065, ptr %86, align 8
  %1066 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %89) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %90)
          to label %1067 unwind label %1132

1067:                                             ; preds = %1064
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %1065, ptr noundef nonnull align 8 dereferenceable(33088) %1066, ptr noundef nonnull align 8 dereferenceable(32) %89)
          to label %1068 unwind label %1136

1068:                                             ; preds = %1067
  store i1 false, ptr %91, align 1
  %1069 = getelementptr inbounds %"class.std::initializer_list.94", ptr %84, i32 0, i32 0
  store ptr %85, ptr %1069, align 8, !tbaa !13
  %1070 = getelementptr inbounds %"class.std::initializer_list.94", ptr %84, i32 0, i32 1
  store i64 2, ptr %1070, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #7
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #7
  %1071 = getelementptr inbounds { ptr, i64 }, ptr %84, i32 0, i32 0
  %1072 = load ptr, ptr %1071, align 8
  %1073 = getelementptr inbounds { ptr, i64 }, ptr %84, i32 0, i32 1
  %1074 = load i64, ptr %1073, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %83, ptr %1072, i64 %1074, ptr noundef nonnull align 1 dereferenceable(1) %92)
          to label %1075 unwind label %1140

1075:                                             ; preds = %1068
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %80, ptr noundef nonnull align 8 dereferenceable(33088) %1060, ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef %83)
          to label %1076 unwind label %1144

1076:                                             ; preds = %1075
  %1077 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %80) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #7
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #7
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #7
  %1078 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %85, i32 0, i32 0
  %1079 = getelementptr inbounds %"class.std::shared_ptr", ptr %1078, i64 2
  br label %1080

1080:                                             ; preds = %1080, %1076
  %1081 = phi ptr [ %1079, %1076 ], [ %1082, %1080 ]
  %1082 = getelementptr inbounds %"class.std::shared_ptr", ptr %1081, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1082) #7
  %1083 = icmp eq ptr %1082, %1078
  br i1 %1083, label %1084, label %1080

1084:                                             ; preds = %1080
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %87) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %85) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #7
  br label %1085

1085:                                             ; preds = %1084
  call void @llvm.lifetime.start.p0(i64 16, ptr %93) #7
  %1086 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  %1087 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %93, ptr noundef nonnull align 8 dereferenceable(72) %1086, ptr noundef %1087)
          to label %1088 unwind label %1171

1088:                                             ; preds = %1085
  %1089 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %93) #7
  %1090 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  %1091 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %1089, ptr noundef nonnull align 8 dereferenceable(72) %1090)
          to label %1092 unwind label %1175

1092:                                             ; preds = %1088
  %1093 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1091)
          to label %1094 unwind label %1175

1094:                                             ; preds = %1092
  %1095 = xor i1 %1093, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #7
  br i1 %1095, label %1096, label %1248

1096:                                             ; preds = %1094
  %1097 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1098 unwind label %1180

1098:                                             ; preds = %1096
  %1099 = load ptr, ptr %1097, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %94) #7
  %1100 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1101 unwind label %1184

1101:                                             ; preds = %1098
  %1102 = load ptr, ptr %1100, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %94, ptr noundef nonnull align 8 dereferenceable(30) %1102, i32 noundef 478)
          to label %1103 unwind label %1184

1103:                                             ; preds = %1101
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1099, ptr noundef nonnull align 8 dereferenceable(30) %94, ptr noundef @.str.138)
          to label %1104 unwind label %1184

1104:                                             ; preds = %1103
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #7
  br label %1248

1105:                                             ; preds = %965, %955
  br label %1057

1106:                                             ; preds = %1045
  %1107 = landingpad { ptr, i32 }
          cleanup
  %1108 = extractvalue { ptr, i32 } %1107, 0
  store ptr %1108, ptr %4, align 8
  %1109 = extractvalue { ptr, i32 } %1107, 1
  store i32 %1109, ptr %5, align 4
  br label %1118

1110:                                             ; preds = %1054, %1052, %1049
  %1111 = landingpad { ptr, i32 }
          cleanup
  %1112 = extractvalue { ptr, i32 } %1111, 0
  store ptr %1112, ptr %4, align 8
  %1113 = extractvalue { ptr, i32 } %1111, 1
  store i32 %1113, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #7
  br label %1118

1114:                                             ; preds = %1476, %1337, %1198, %1055
  %1115 = landingpad { ptr, i32 }
          cleanup
  %1116 = extractvalue { ptr, i32 } %1115, 0
  store ptr %1116, ptr %4, align 8
  %1117 = extractvalue { ptr, i32 } %1115, 1
  store i32 %1117, ptr %5, align 4
  br label %2435

1118:                                             ; preds = %1110, %1106
  invoke void @__cxa_end_catch()
          to label %1119 unwind label %2446

1119:                                             ; preds = %1118
  br label %2435

1120:                                             ; preds = %1059
  %1121 = landingpad { ptr, i32 }
          cleanup
  %1122 = extractvalue { ptr, i32 } %1121, 0
  store ptr %1122, ptr %4, align 8
  %1123 = extractvalue { ptr, i32 } %1121, 1
  store i32 %1123, ptr %5, align 4
  br label %1170

1124:                                             ; preds = %1061
  %1125 = landingpad { ptr, i32 }
          cleanup
  %1126 = extractvalue { ptr, i32 } %1125, 0
  store ptr %1126, ptr %4, align 8
  %1127 = extractvalue { ptr, i32 } %1125, 1
  store i32 %1127, ptr %5, align 4
  br label %1159

1128:                                             ; preds = %1063
  %1129 = landingpad { ptr, i32 }
          cleanup
  %1130 = extractvalue { ptr, i32 } %1129, 0
  store ptr %1130, ptr %4, align 8
  %1131 = extractvalue { ptr, i32 } %1129, 1
  store i32 %1131, ptr %5, align 4
  br label %1158

1132:                                             ; preds = %1064
  %1133 = landingpad { ptr, i32 }
          cleanup
  %1134 = extractvalue { ptr, i32 } %1133, 0
  store ptr %1134, ptr %4, align 8
  %1135 = extractvalue { ptr, i32 } %1133, 1
  store i32 %1135, ptr %5, align 4
  br label %1157

1136:                                             ; preds = %1067
  %1137 = landingpad { ptr, i32 }
          cleanup
  %1138 = extractvalue { ptr, i32 } %1137, 0
  store ptr %1138, ptr %4, align 8
  %1139 = extractvalue { ptr, i32 } %1137, 1
  store i32 %1139, ptr %5, align 4
  br label %1156

1140:                                             ; preds = %1068
  %1141 = landingpad { ptr, i32 }
          cleanup
  %1142 = extractvalue { ptr, i32 } %1141, 0
  store ptr %1142, ptr %4, align 8
  %1143 = extractvalue { ptr, i32 } %1141, 1
  store i32 %1143, ptr %5, align 4
  br label %1148

1144:                                             ; preds = %1075
  %1145 = landingpad { ptr, i32 }
          cleanup
  %1146 = extractvalue { ptr, i32 } %1145, 0
  store ptr %1146, ptr %4, align 8
  %1147 = extractvalue { ptr, i32 } %1145, 1
  store i32 %1147, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #7
  br label %1148

1148:                                             ; preds = %1144, %1140
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #7
  %1149 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %85, i32 0, i32 0
  %1150 = getelementptr inbounds %"class.std::shared_ptr", ptr %1149, i64 2
  br label %1151

1151:                                             ; preds = %1151, %1148
  %1152 = phi ptr [ %1150, %1148 ], [ %1153, %1151 ]
  %1153 = getelementptr inbounds %"class.std::shared_ptr", ptr %1152, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1153) #7
  %1154 = icmp eq ptr %1153, %1149
  br i1 %1154, label %1155, label %1151

1155:                                             ; preds = %1151
  br label %1156

1156:                                             ; preds = %1155, %1136
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  br label %1157

1157:                                             ; preds = %1156, %1132
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #7
  br label %1158

1158:                                             ; preds = %1157, %1128
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #7
  br label %1159

1159:                                             ; preds = %1158, %1124
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %87) #7
  %1160 = load i1, ptr %91, align 1
  br i1 %1160, label %1161, label %1169

1161:                                             ; preds = %1159
  %1162 = load ptr, ptr %86, align 8
  %1163 = icmp eq ptr %85, %1162
  br i1 %1163, label %1168, label %1164

1164:                                             ; preds = %1164, %1161
  %1165 = phi ptr [ %1162, %1161 ], [ %1166, %1164 ]
  %1166 = getelementptr inbounds %"class.std::shared_ptr", ptr %1165, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1166) #7
  %1167 = icmp eq ptr %1166, %85
  br i1 %1167, label %1168, label %1164

1168:                                             ; preds = %1164, %1161
  br label %1169

1169:                                             ; preds = %1168, %1159
  call void @llvm.lifetime.end.p0(i64 32, ptr %85) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #7
  br label %1170

1170:                                             ; preds = %1169, %1120
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #7
  br label %2435

1171:                                             ; preds = %1085
  %1172 = landingpad { ptr, i32 }
          catch ptr null
  %1173 = extractvalue { ptr, i32 } %1172, 0
  store ptr %1173, ptr %4, align 8
  %1174 = extractvalue { ptr, i32 } %1172, 1
  store i32 %1174, ptr %5, align 4
  br label %1179

1175:                                             ; preds = %1092, %1088
  %1176 = landingpad { ptr, i32 }
          catch ptr null
  %1177 = extractvalue { ptr, i32 } %1176, 0
  store ptr %1177, ptr %4, align 8
  %1178 = extractvalue { ptr, i32 } %1176, 1
  store i32 %1178, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #7
  br label %1179

1179:                                             ; preds = %1175, %1171
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #7
  br label %1188

1180:                                             ; preds = %1096
  %1181 = landingpad { ptr, i32 }
          catch ptr null
  %1182 = extractvalue { ptr, i32 } %1181, 0
  store ptr %1182, ptr %4, align 8
  %1183 = extractvalue { ptr, i32 } %1181, 1
  store i32 %1183, ptr %5, align 4
  br label %1188

1184:                                             ; preds = %1103, %1101, %1098
  %1185 = landingpad { ptr, i32 }
          catch ptr null
  %1186 = extractvalue { ptr, i32 } %1185, 0
  store ptr %1186, ptr %4, align 8
  %1187 = extractvalue { ptr, i32 } %1185, 1
  store i32 %1187, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #7
  br label %1188

1188:                                             ; preds = %1184, %1180, %1179
  %1189 = load ptr, ptr %4, align 8
  %1190 = call ptr @__cxa_begin_catch(ptr %1189) #7
  %1191 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1192 unwind label %1249

1192:                                             ; preds = %1188
  %1193 = load ptr, ptr %1191, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %95) #7
  %1194 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1195 unwind label %1253

1195:                                             ; preds = %1192
  %1196 = load ptr, ptr %1194, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %95, ptr noundef nonnull align 8 dereferenceable(30) %1196, i32 noundef 478)
          to label %1197 unwind label %1253

1197:                                             ; preds = %1195
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1193, ptr noundef nonnull align 8 dereferenceable(30) %95, ptr noundef @.str.139)
          to label %1198 unwind label %1253

1198:                                             ; preds = %1197
  call void @llvm.lifetime.end.p0(i64 32, ptr %95) #7
  invoke void @__cxa_end_catch()
          to label %1199 unwind label %1114

1199:                                             ; preds = %1198
  br label %1200

1200:                                             ; preds = %1248, %1199
  br label %1201

1201:                                             ; preds = %1200
  br label %1202

1202:                                             ; preds = %1201
  call void @llvm.lifetime.start.p0(i64 16, ptr %96) #7
  %1203 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %97) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef @.str.136, ptr noundef nonnull align 1 dereferenceable(1) %98)
          to label %1204 unwind label %1259

1204:                                             ; preds = %1202
  call void @llvm.lifetime.start.p0(i64 32, ptr %101) #7
  store i1 true, ptr %107, align 1
  store ptr %101, ptr %102, align 8
  %1205 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %103) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %104) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %103, ptr noundef @.str.137, ptr noundef nonnull align 1 dereferenceable(1) %104)
          to label %1206 unwind label %1263

1206:                                             ; preds = %1204
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %101, ptr noundef nonnull align 8 dereferenceable(33088) %1205, ptr noundef nonnull align 8 dereferenceable(32) %103)
          to label %1207 unwind label %1267

1207:                                             ; preds = %1206
  %1208 = getelementptr inbounds %"class.std::shared_ptr", ptr %101, i64 1
  store ptr %1208, ptr %102, align 8
  %1209 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %105) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %106) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %106)
          to label %1210 unwind label %1271

1210:                                             ; preds = %1207
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %1208, ptr noundef nonnull align 8 dereferenceable(33088) %1209, ptr noundef nonnull align 8 dereferenceable(32) %105)
          to label %1211 unwind label %1275

1211:                                             ; preds = %1210
  store i1 false, ptr %107, align 1
  %1212 = getelementptr inbounds %"class.std::initializer_list.94", ptr %100, i32 0, i32 0
  store ptr %101, ptr %1212, align 8, !tbaa !13
  %1213 = getelementptr inbounds %"class.std::initializer_list.94", ptr %100, i32 0, i32 1
  store i64 2, ptr %1213, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %108) #7
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #7
  %1214 = getelementptr inbounds { ptr, i64 }, ptr %100, i32 0, i32 0
  %1215 = load ptr, ptr %1214, align 8
  %1216 = getelementptr inbounds { ptr, i64 }, ptr %100, i32 0, i32 1
  %1217 = load i64, ptr %1216, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %99, ptr %1215, i64 %1217, ptr noundef nonnull align 1 dereferenceable(1) %108)
          to label %1218 unwind label %1279

1218:                                             ; preds = %1211
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %96, ptr noundef nonnull align 8 dereferenceable(33088) %1203, ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef %99)
          to label %1219 unwind label %1283

1219:                                             ; preds = %1218
  %1220 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %96) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #7
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %99) #7
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #7
  %1221 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %101, i32 0, i32 0
  %1222 = getelementptr inbounds %"class.std::shared_ptr", ptr %1221, i64 2
  br label %1223

1223:                                             ; preds = %1223, %1219
  %1224 = phi ptr [ %1222, %1219 ], [ %1225, %1223 ]
  %1225 = getelementptr inbounds %"class.std::shared_ptr", ptr %1224, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1225) #7
  %1226 = icmp eq ptr %1225, %1221
  br i1 %1226, label %1227, label %1223

1227:                                             ; preds = %1223
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %105) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %103) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %97) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %96) #7
  br label %1228

1228:                                             ; preds = %1227
  call void @llvm.lifetime.start.p0(i64 16, ptr %109) #7
  %1229 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  %1230 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %109, ptr noundef nonnull align 8 dereferenceable(72) %1229, ptr noundef %1230)
          to label %1231 unwind label %1310

1231:                                             ; preds = %1228
  %1232 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %109) #7
  %1233 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %9) #7
  %1234 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %1232, ptr noundef nonnull align 8 dereferenceable(72) %1233)
          to label %1235 unwind label %1314

1235:                                             ; preds = %1231
  %1236 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1234)
          to label %1237 unwind label %1314

1237:                                             ; preds = %1235
  %1238 = xor i1 %1236, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %109) #7
  br i1 %1238, label %1239, label %1387

1239:                                             ; preds = %1237
  %1240 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1241 unwind label %1319

1241:                                             ; preds = %1239
  %1242 = load ptr, ptr %1240, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %110) #7
  %1243 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1244 unwind label %1323

1244:                                             ; preds = %1241
  %1245 = load ptr, ptr %1243, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %110, ptr noundef nonnull align 8 dereferenceable(30) %1245, i32 noundef 485)
          to label %1246 unwind label %1323

1246:                                             ; preds = %1244
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1242, ptr noundef nonnull align 8 dereferenceable(30) %110, ptr noundef @.str.140)
          to label %1247 unwind label %1323

1247:                                             ; preds = %1246
  call void @llvm.lifetime.end.p0(i64 32, ptr %110) #7
  br label %1387

1248:                                             ; preds = %1104, %1094
  br label %1200

1249:                                             ; preds = %1188
  %1250 = landingpad { ptr, i32 }
          cleanup
  %1251 = extractvalue { ptr, i32 } %1250, 0
  store ptr %1251, ptr %4, align 8
  %1252 = extractvalue { ptr, i32 } %1250, 1
  store i32 %1252, ptr %5, align 4
  br label %1257

1253:                                             ; preds = %1197, %1195, %1192
  %1254 = landingpad { ptr, i32 }
          cleanup
  %1255 = extractvalue { ptr, i32 } %1254, 0
  store ptr %1255, ptr %4, align 8
  %1256 = extractvalue { ptr, i32 } %1254, 1
  store i32 %1256, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %95) #7
  br label %1257

1257:                                             ; preds = %1253, %1249
  invoke void @__cxa_end_catch()
          to label %1258 unwind label %2446

1258:                                             ; preds = %1257
  br label %2435

1259:                                             ; preds = %1202
  %1260 = landingpad { ptr, i32 }
          cleanup
  %1261 = extractvalue { ptr, i32 } %1260, 0
  store ptr %1261, ptr %4, align 8
  %1262 = extractvalue { ptr, i32 } %1260, 1
  store i32 %1262, ptr %5, align 4
  br label %1309

1263:                                             ; preds = %1204
  %1264 = landingpad { ptr, i32 }
          cleanup
  %1265 = extractvalue { ptr, i32 } %1264, 0
  store ptr %1265, ptr %4, align 8
  %1266 = extractvalue { ptr, i32 } %1264, 1
  store i32 %1266, ptr %5, align 4
  br label %1298

1267:                                             ; preds = %1206
  %1268 = landingpad { ptr, i32 }
          cleanup
  %1269 = extractvalue { ptr, i32 } %1268, 0
  store ptr %1269, ptr %4, align 8
  %1270 = extractvalue { ptr, i32 } %1268, 1
  store i32 %1270, ptr %5, align 4
  br label %1297

1271:                                             ; preds = %1207
  %1272 = landingpad { ptr, i32 }
          cleanup
  %1273 = extractvalue { ptr, i32 } %1272, 0
  store ptr %1273, ptr %4, align 8
  %1274 = extractvalue { ptr, i32 } %1272, 1
  store i32 %1274, ptr %5, align 4
  br label %1296

1275:                                             ; preds = %1210
  %1276 = landingpad { ptr, i32 }
          cleanup
  %1277 = extractvalue { ptr, i32 } %1276, 0
  store ptr %1277, ptr %4, align 8
  %1278 = extractvalue { ptr, i32 } %1276, 1
  store i32 %1278, ptr %5, align 4
  br label %1295

1279:                                             ; preds = %1211
  %1280 = landingpad { ptr, i32 }
          cleanup
  %1281 = extractvalue { ptr, i32 } %1280, 0
  store ptr %1281, ptr %4, align 8
  %1282 = extractvalue { ptr, i32 } %1280, 1
  store i32 %1282, ptr %5, align 4
  br label %1287

1283:                                             ; preds = %1218
  %1284 = landingpad { ptr, i32 }
          cleanup
  %1285 = extractvalue { ptr, i32 } %1284, 0
  store ptr %1285, ptr %4, align 8
  %1286 = extractvalue { ptr, i32 } %1284, 1
  store i32 %1286, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %99) #7
  br label %1287

1287:                                             ; preds = %1283, %1279
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #7
  %1288 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %101, i32 0, i32 0
  %1289 = getelementptr inbounds %"class.std::shared_ptr", ptr %1288, i64 2
  br label %1290

1290:                                             ; preds = %1290, %1287
  %1291 = phi ptr [ %1289, %1287 ], [ %1292, %1290 ]
  %1292 = getelementptr inbounds %"class.std::shared_ptr", ptr %1291, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1292) #7
  %1293 = icmp eq ptr %1292, %1288
  br i1 %1293, label %1294, label %1290

1294:                                             ; preds = %1290
  br label %1295

1295:                                             ; preds = %1294, %1275
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #7
  br label %1296

1296:                                             ; preds = %1295, %1271
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %105) #7
  br label %1297

1297:                                             ; preds = %1296, %1267
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #7
  br label %1298

1298:                                             ; preds = %1297, %1263
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %103) #7
  %1299 = load i1, ptr %107, align 1
  br i1 %1299, label %1300, label %1308

1300:                                             ; preds = %1298
  %1301 = load ptr, ptr %102, align 8
  %1302 = icmp eq ptr %101, %1301
  br i1 %1302, label %1307, label %1303

1303:                                             ; preds = %1303, %1300
  %1304 = phi ptr [ %1301, %1300 ], [ %1305, %1303 ]
  %1305 = getelementptr inbounds %"class.std::shared_ptr", ptr %1304, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1305) #7
  %1306 = icmp eq ptr %1305, %101
  br i1 %1306, label %1307, label %1303

1307:                                             ; preds = %1303, %1300
  br label %1308

1308:                                             ; preds = %1307, %1298
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #7
  br label %1309

1309:                                             ; preds = %1308, %1259
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %97) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %96) #7
  br label %2435

1310:                                             ; preds = %1228
  %1311 = landingpad { ptr, i32 }
          catch ptr null
  %1312 = extractvalue { ptr, i32 } %1311, 0
  store ptr %1312, ptr %4, align 8
  %1313 = extractvalue { ptr, i32 } %1311, 1
  store i32 %1313, ptr %5, align 4
  br label %1318

1314:                                             ; preds = %1235, %1231
  %1315 = landingpad { ptr, i32 }
          catch ptr null
  %1316 = extractvalue { ptr, i32 } %1315, 0
  store ptr %1316, ptr %4, align 8
  %1317 = extractvalue { ptr, i32 } %1315, 1
  store i32 %1317, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #7
  br label %1318

1318:                                             ; preds = %1314, %1310
  call void @llvm.lifetime.end.p0(i64 16, ptr %109) #7
  br label %1327

1319:                                             ; preds = %1239
  %1320 = landingpad { ptr, i32 }
          catch ptr null
  %1321 = extractvalue { ptr, i32 } %1320, 0
  store ptr %1321, ptr %4, align 8
  %1322 = extractvalue { ptr, i32 } %1320, 1
  store i32 %1322, ptr %5, align 4
  br label %1327

1323:                                             ; preds = %1246, %1244, %1241
  %1324 = landingpad { ptr, i32 }
          catch ptr null
  %1325 = extractvalue { ptr, i32 } %1324, 0
  store ptr %1325, ptr %4, align 8
  %1326 = extractvalue { ptr, i32 } %1324, 1
  store i32 %1326, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %110) #7
  br label %1327

1327:                                             ; preds = %1323, %1319, %1318
  %1328 = load ptr, ptr %4, align 8
  %1329 = call ptr @__cxa_begin_catch(ptr %1328) #7
  %1330 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1331 unwind label %1388

1331:                                             ; preds = %1327
  %1332 = load ptr, ptr %1330, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %111) #7
  %1333 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1334 unwind label %1392

1334:                                             ; preds = %1331
  %1335 = load ptr, ptr %1333, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %111, ptr noundef nonnull align 8 dereferenceable(30) %1335, i32 noundef 485)
          to label %1336 unwind label %1392

1336:                                             ; preds = %1334
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1332, ptr noundef nonnull align 8 dereferenceable(30) %111, ptr noundef @.str.141)
          to label %1337 unwind label %1392

1337:                                             ; preds = %1336
  call void @llvm.lifetime.end.p0(i64 32, ptr %111) #7
  invoke void @__cxa_end_catch()
          to label %1338 unwind label %1114

1338:                                             ; preds = %1337
  br label %1339

1339:                                             ; preds = %1387, %1338
  br label %1340

1340:                                             ; preds = %1339
  br label %1341

1341:                                             ; preds = %1340
  call void @llvm.lifetime.start.p0(i64 16, ptr %112) #7
  %1342 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %113) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %114) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %113, ptr noundef @.str.142, ptr noundef nonnull align 1 dereferenceable(1) %114)
          to label %1343 unwind label %1398

1343:                                             ; preds = %1341
  call void @llvm.lifetime.start.p0(i64 32, ptr %117) #7
  store i1 true, ptr %123, align 1
  store ptr %117, ptr %118, align 8
  %1344 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %119) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %120) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %120) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %119, ptr noundef @.str.143, ptr noundef nonnull align 1 dereferenceable(1) %120)
          to label %1345 unwind label %1402

1345:                                             ; preds = %1343
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %117, ptr noundef nonnull align 8 dereferenceable(33088) %1344, ptr noundef nonnull align 8 dereferenceable(32) %119)
          to label %1346 unwind label %1406

1346:                                             ; preds = %1345
  %1347 = getelementptr inbounds %"class.std::shared_ptr", ptr %117, i64 1
  store ptr %1347, ptr %118, align 8
  %1348 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %121) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %122) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef @.str.144, ptr noundef nonnull align 1 dereferenceable(1) %122)
          to label %1349 unwind label %1410

1349:                                             ; preds = %1346
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %1347, ptr noundef nonnull align 8 dereferenceable(33088) %1348, ptr noundef nonnull align 8 dereferenceable(32) %121)
          to label %1350 unwind label %1414

1350:                                             ; preds = %1349
  store i1 false, ptr %123, align 1
  %1351 = getelementptr inbounds %"class.std::initializer_list.94", ptr %116, i32 0, i32 0
  store ptr %117, ptr %1351, align 8, !tbaa !13
  %1352 = getelementptr inbounds %"class.std::initializer_list.94", ptr %116, i32 0, i32 1
  store i64 2, ptr %1352, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %124) #7
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %124) #7
  %1353 = getelementptr inbounds { ptr, i64 }, ptr %116, i32 0, i32 0
  %1354 = load ptr, ptr %1353, align 8
  %1355 = getelementptr inbounds { ptr, i64 }, ptr %116, i32 0, i32 1
  %1356 = load i64, ptr %1355, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %115, ptr %1354, i64 %1356, ptr noundef nonnull align 1 dereferenceable(1) %124)
          to label %1357 unwind label %1418

1357:                                             ; preds = %1350
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %112, ptr noundef nonnull align 8 dereferenceable(33088) %1342, ptr noundef nonnull align 8 dereferenceable(32) %113, ptr noundef %115)
          to label %1358 unwind label %1422

1358:                                             ; preds = %1357
  %1359 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %112) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %112) #7
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #7
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %124) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %124) #7
  %1360 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %117, i32 0, i32 0
  %1361 = getelementptr inbounds %"class.std::shared_ptr", ptr %1360, i64 2
  br label %1362

1362:                                             ; preds = %1362, %1358
  %1363 = phi ptr [ %1361, %1358 ], [ %1364, %1362 ]
  %1364 = getelementptr inbounds %"class.std::shared_ptr", ptr %1363, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1364) #7
  %1365 = icmp eq ptr %1364, %1360
  br i1 %1365, label %1366, label %1362

1366:                                             ; preds = %1362
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %122) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %121) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %120) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %120) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %119) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %117) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %113) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #7
  br label %1367

1367:                                             ; preds = %1366
  call void @llvm.lifetime.start.p0(i64 16, ptr %125) #7
  %1368 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  %1369 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %125, ptr noundef nonnull align 8 dereferenceable(72) %1368, ptr noundef %1369)
          to label %1370 unwind label %1449

1370:                                             ; preds = %1367
  %1371 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %125) #7
  %1372 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  %1373 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %1371, ptr noundef nonnull align 8 dereferenceable(72) %1372)
          to label %1374 unwind label %1453

1374:                                             ; preds = %1370
  %1375 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1373)
          to label %1376 unwind label %1453

1376:                                             ; preds = %1374
  %1377 = xor i1 %1375, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %125) #7
  br i1 %1377, label %1378, label %1524

1378:                                             ; preds = %1376
  %1379 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1380 unwind label %1458

1380:                                             ; preds = %1378
  %1381 = load ptr, ptr %1379, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %126) #7
  %1382 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1383 unwind label %1462

1383:                                             ; preds = %1380
  %1384 = load ptr, ptr %1382, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %126, ptr noundef nonnull align 8 dereferenceable(30) %1384, i32 noundef 492)
          to label %1385 unwind label %1462

1385:                                             ; preds = %1383
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1381, ptr noundef nonnull align 8 dereferenceable(30) %126, ptr noundef @.str.138)
          to label %1386 unwind label %1462

1386:                                             ; preds = %1385
  call void @llvm.lifetime.end.p0(i64 32, ptr %126) #7
  br label %1524

1387:                                             ; preds = %1247, %1237
  br label %1339

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

1392:                                             ; preds = %1336, %1334, %1331
  %1393 = landingpad { ptr, i32 }
          cleanup
  %1394 = extractvalue { ptr, i32 } %1393, 0
  store ptr %1394, ptr %4, align 8
  %1395 = extractvalue { ptr, i32 } %1393, 1
  store i32 %1395, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %111) #7
  br label %1396

1396:                                             ; preds = %1392, %1388
  invoke void @__cxa_end_catch()
          to label %1397 unwind label %2446

1397:                                             ; preds = %1396
  br label %2435

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

1402:                                             ; preds = %1343
  %1403 = landingpad { ptr, i32 }
          cleanup
  %1404 = extractvalue { ptr, i32 } %1403, 0
  store ptr %1404, ptr %4, align 8
  %1405 = extractvalue { ptr, i32 } %1403, 1
  store i32 %1405, ptr %5, align 4
  br label %1437

1406:                                             ; preds = %1345
  %1407 = landingpad { ptr, i32 }
          cleanup
  %1408 = extractvalue { ptr, i32 } %1407, 0
  store ptr %1408, ptr %4, align 8
  %1409 = extractvalue { ptr, i32 } %1407, 1
  store i32 %1409, ptr %5, align 4
  br label %1436

1410:                                             ; preds = %1346
  %1411 = landingpad { ptr, i32 }
          cleanup
  %1412 = extractvalue { ptr, i32 } %1411, 0
  store ptr %1412, ptr %4, align 8
  %1413 = extractvalue { ptr, i32 } %1411, 1
  store i32 %1413, ptr %5, align 4
  br label %1435

1414:                                             ; preds = %1349
  %1415 = landingpad { ptr, i32 }
          cleanup
  %1416 = extractvalue { ptr, i32 } %1415, 0
  store ptr %1416, ptr %4, align 8
  %1417 = extractvalue { ptr, i32 } %1415, 1
  store i32 %1417, ptr %5, align 4
  br label %1434

1418:                                             ; preds = %1350
  %1419 = landingpad { ptr, i32 }
          cleanup
  %1420 = extractvalue { ptr, i32 } %1419, 0
  store ptr %1420, ptr %4, align 8
  %1421 = extractvalue { ptr, i32 } %1419, 1
  store i32 %1421, ptr %5, align 4
  br label %1426

1422:                                             ; preds = %1357
  %1423 = landingpad { ptr, i32 }
          cleanup
  %1424 = extractvalue { ptr, i32 } %1423, 0
  store ptr %1424, ptr %4, align 8
  %1425 = extractvalue { ptr, i32 } %1423, 1
  store i32 %1425, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #7
  br label %1426

1426:                                             ; preds = %1422, %1418
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %124) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %124) #7
  %1427 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %117, i32 0, i32 0
  %1428 = getelementptr inbounds %"class.std::shared_ptr", ptr %1427, i64 2
  br label %1429

1429:                                             ; preds = %1429, %1426
  %1430 = phi ptr [ %1428, %1426 ], [ %1431, %1429 ]
  %1431 = getelementptr inbounds %"class.std::shared_ptr", ptr %1430, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1431) #7
  %1432 = icmp eq ptr %1431, %1427
  br i1 %1432, label %1433, label %1429

1433:                                             ; preds = %1429
  br label %1434

1434:                                             ; preds = %1433, %1414
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #7
  br label %1435

1435:                                             ; preds = %1434, %1410
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %122) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %121) #7
  br label %1436

1436:                                             ; preds = %1435, %1406
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #7
  br label %1437

1437:                                             ; preds = %1436, %1402
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %120) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %120) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %119) #7
  %1438 = load i1, ptr %123, align 1
  br i1 %1438, label %1439, label %1447

1439:                                             ; preds = %1437
  %1440 = load ptr, ptr %118, align 8
  %1441 = icmp eq ptr %117, %1440
  br i1 %1441, label %1446, label %1442

1442:                                             ; preds = %1442, %1439
  %1443 = phi ptr [ %1440, %1439 ], [ %1444, %1442 ]
  %1444 = getelementptr inbounds %"class.std::shared_ptr", ptr %1443, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1444) #7
  %1445 = icmp eq ptr %1444, %117
  br i1 %1445, label %1446, label %1442

1446:                                             ; preds = %1442, %1439
  br label %1447

1447:                                             ; preds = %1446, %1437
  call void @llvm.lifetime.end.p0(i64 32, ptr %117) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #7
  br label %1448

1448:                                             ; preds = %1447, %1398
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %113) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #7
  br label %2435

1449:                                             ; preds = %1367
  %1450 = landingpad { ptr, i32 }
          catch ptr null
  %1451 = extractvalue { ptr, i32 } %1450, 0
  store ptr %1451, ptr %4, align 8
  %1452 = extractvalue { ptr, i32 } %1450, 1
  store i32 %1452, ptr %5, align 4
  br label %1457

1453:                                             ; preds = %1374, %1370
  %1454 = landingpad { ptr, i32 }
          catch ptr null
  %1455 = extractvalue { ptr, i32 } %1454, 0
  store ptr %1455, ptr %4, align 8
  %1456 = extractvalue { ptr, i32 } %1454, 1
  store i32 %1456, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #7
  br label %1457

1457:                                             ; preds = %1453, %1449
  call void @llvm.lifetime.end.p0(i64 16, ptr %125) #7
  br label %1466

1458:                                             ; preds = %1378
  %1459 = landingpad { ptr, i32 }
          catch ptr null
  %1460 = extractvalue { ptr, i32 } %1459, 0
  store ptr %1460, ptr %4, align 8
  %1461 = extractvalue { ptr, i32 } %1459, 1
  store i32 %1461, ptr %5, align 4
  br label %1466

1462:                                             ; preds = %1385, %1383, %1380
  %1463 = landingpad { ptr, i32 }
          catch ptr null
  %1464 = extractvalue { ptr, i32 } %1463, 0
  store ptr %1464, ptr %4, align 8
  %1465 = extractvalue { ptr, i32 } %1463, 1
  store i32 %1465, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %126) #7
  br label %1466

1466:                                             ; preds = %1462, %1458, %1457
  %1467 = load ptr, ptr %4, align 8
  %1468 = call ptr @__cxa_begin_catch(ptr %1467) #7
  %1469 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1470 unwind label %1525

1470:                                             ; preds = %1466
  %1471 = load ptr, ptr %1469, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %127) #7
  %1472 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1473 unwind label %1529

1473:                                             ; preds = %1470
  %1474 = load ptr, ptr %1472, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %127, ptr noundef nonnull align 8 dereferenceable(30) %1474, i32 noundef 492)
          to label %1475 unwind label %1529

1475:                                             ; preds = %1473
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1471, ptr noundef nonnull align 8 dereferenceable(30) %127, ptr noundef @.str.139)
          to label %1476 unwind label %1529

1476:                                             ; preds = %1475
  call void @llvm.lifetime.end.p0(i64 32, ptr %127) #7
  invoke void @__cxa_end_catch()
          to label %1477 unwind label %1114

1477:                                             ; preds = %1476
  br label %1478

1478:                                             ; preds = %1524, %1477
  br label %1479

1479:                                             ; preds = %1478
  br label %1480

1480:                                             ; preds = %1479
  call void @llvm.lifetime.start.p0(i64 16, ptr %128) #7
  call void @_ZNSt10shared_ptrI7HtnTermEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %128) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %129) #7
  %1481 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %130) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %131) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %130, ptr noundef @.str.145, ptr noundef nonnull align 1 dereferenceable(1) %131)
          to label %1482 unwind label %1535

1482:                                             ; preds = %1480
  call void @llvm.lifetime.start.p0(i64 32, ptr %134) #7
  store i1 true, ptr %137, align 1
  store ptr %134, ptr %135, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %136) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %136) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %134, ptr noundef @.str.117, ptr noundef nonnull align 1 dereferenceable(1) %136)
          to label %1483 unwind label %1539

1483:                                             ; preds = %1482
  store i1 false, ptr %137, align 1
  %1484 = getelementptr inbounds %"class.std::initializer_list.100", ptr %133, i32 0, i32 0
  store ptr %134, ptr %1484, align 8, !tbaa !9
  %1485 = getelementptr inbounds %"class.std::initializer_list.100", ptr %133, i32 0, i32 1
  store i64 1, ptr %1485, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %138) #7
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #7
  %1486 = getelementptr inbounds { ptr, i64 }, ptr %133, i32 0, i32 0
  %1487 = load ptr, ptr %1486, align 8
  %1488 = getelementptr inbounds { ptr, i64 }, ptr %133, i32 0, i32 1
  %1489 = load i64, ptr %1488, align 8
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %132, ptr %1487, i64 %1489, ptr noundef nonnull align 1 dereferenceable(1) %138)
          to label %1490 unwind label %1543

1490:                                             ; preds = %1483
  invoke void @_ZN14HtnTermFactory21CreateConstantFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS5_SaIS5_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %129, ptr noundef nonnull align 8 dereferenceable(33088) %1481, ptr noundef nonnull align 8 dereferenceable(32) %130, ptr noundef %132)
          to label %1491 unwind label %1547

1491:                                             ; preds = %1490
  %1492 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %129) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %129) #7
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %132) #7
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %138) #7
  %1493 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %134, i32 0, i32 0
  %1494 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1493, i64 1
  br label %1495

1495:                                             ; preds = %1495, %1491
  %1496 = phi ptr [ %1494, %1491 ], [ %1497, %1495 ]
  %1497 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1496, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1497) #7
  %1498 = icmp eq ptr %1497, %1493
  br i1 %1498, label %1499, label %1495

1499:                                             ; preds = %1495
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %136) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %136) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %134) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %131) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %130) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %129) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %139) #7
  %1500 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  %1501 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %139, ptr noundef nonnull align 8 dereferenceable(72) %1500, ptr noundef %1501)
          to label %1502 unwind label %1571

1502:                                             ; preds = %1499
  %1503 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %128, ptr noundef nonnull align 8 dereferenceable(16) %139) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %139) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %139) #7
  br label %1504

1504:                                             ; preds = %1502
  %1505 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %128) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %140) #7
  %1506 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %141) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %142) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %142) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %141, ptr noundef @.str.146, ptr noundef nonnull align 1 dereferenceable(1) %142)
          to label %1507 unwind label %1575

1507:                                             ; preds = %1504
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %140, ptr noundef nonnull align 8 dereferenceable(33088) %1506, ptr noundef nonnull align 8 dereferenceable(32) %141)
          to label %1508 unwind label %1579

1508:                                             ; preds = %1507
  %1509 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %140) #7
  %1510 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %1505, ptr noundef nonnull align 8 dereferenceable(72) %1509)
          to label %1511 unwind label %1583

1511:                                             ; preds = %1508
  %1512 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1510)
          to label %1513 unwind label %1583

1513:                                             ; preds = %1511
  %1514 = xor i1 %1512, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %140) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %142) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %142) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %141) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %140) #7
  br i1 %1514, label %1515, label %1655

1515:                                             ; preds = %1513
  %1516 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1517 unwind label %1589

1517:                                             ; preds = %1515
  %1518 = load ptr, ptr %1516, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %143) #7
  %1519 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1520 unwind label %1593

1520:                                             ; preds = %1517
  %1521 = load ptr, ptr %1519, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %143, ptr noundef nonnull align 8 dereferenceable(30) %1521, i32 noundef 499)
          to label %1522 unwind label %1593

1522:                                             ; preds = %1520
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1518, ptr noundef nonnull align 8 dereferenceable(30) %143, ptr noundef @.str.147)
          to label %1523 unwind label %1593

1523:                                             ; preds = %1522
  call void @llvm.lifetime.end.p0(i64 32, ptr %143) #7
  br label %1655

1524:                                             ; preds = %1386, %1376
  br label %1478

1525:                                             ; preds = %1466
  %1526 = landingpad { ptr, i32 }
          cleanup
  %1527 = extractvalue { ptr, i32 } %1526, 0
  store ptr %1527, ptr %4, align 8
  %1528 = extractvalue { ptr, i32 } %1526, 1
  store i32 %1528, ptr %5, align 4
  br label %1533

1529:                                             ; preds = %1475, %1473, %1470
  %1530 = landingpad { ptr, i32 }
          cleanup
  %1531 = extractvalue { ptr, i32 } %1530, 0
  store ptr %1531, ptr %4, align 8
  %1532 = extractvalue { ptr, i32 } %1530, 1
  store i32 %1532, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %127) #7
  br label %1533

1533:                                             ; preds = %1529, %1525
  invoke void @__cxa_end_catch()
          to label %1534 unwind label %2446

1534:                                             ; preds = %1533
  br label %2435

1535:                                             ; preds = %1480
  %1536 = landingpad { ptr, i32 }
          cleanup
  %1537 = extractvalue { ptr, i32 } %1536, 0
  store ptr %1537, ptr %4, align 8
  %1538 = extractvalue { ptr, i32 } %1536, 1
  store i32 %1538, ptr %5, align 4
  br label %1570

1539:                                             ; preds = %1482
  %1540 = landingpad { ptr, i32 }
          cleanup
  %1541 = extractvalue { ptr, i32 } %1540, 0
  store ptr %1541, ptr %4, align 8
  %1542 = extractvalue { ptr, i32 } %1540, 1
  store i32 %1542, ptr %5, align 4
  br label %1559

1543:                                             ; preds = %1483
  %1544 = landingpad { ptr, i32 }
          cleanup
  %1545 = extractvalue { ptr, i32 } %1544, 0
  store ptr %1545, ptr %4, align 8
  %1546 = extractvalue { ptr, i32 } %1544, 1
  store i32 %1546, ptr %5, align 4
  br label %1551

1547:                                             ; preds = %1490
  %1548 = landingpad { ptr, i32 }
          cleanup
  %1549 = extractvalue { ptr, i32 } %1548, 0
  store ptr %1549, ptr %4, align 8
  %1550 = extractvalue { ptr, i32 } %1548, 1
  store i32 %1550, ptr %5, align 4
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %132) #7
  br label %1551

1551:                                             ; preds = %1547, %1543
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %138) #7
  %1552 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %134, i32 0, i32 0
  %1553 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1552, i64 1
  br label %1554

1554:                                             ; preds = %1554, %1551
  %1555 = phi ptr [ %1553, %1551 ], [ %1556, %1554 ]
  %1556 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1555, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1556) #7
  %1557 = icmp eq ptr %1556, %1552
  br i1 %1557, label %1558, label %1554

1558:                                             ; preds = %1554
  br label %1559

1559:                                             ; preds = %1558, %1539
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %136) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %136) #7
  %1560 = load i1, ptr %137, align 1
  br i1 %1560, label %1561, label %1569

1561:                                             ; preds = %1559
  %1562 = load ptr, ptr %135, align 8
  %1563 = icmp eq ptr %134, %1562
  br i1 %1563, label %1568, label %1564

1564:                                             ; preds = %1564, %1561
  %1565 = phi ptr [ %1562, %1561 ], [ %1566, %1564 ]
  %1566 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1565, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1566) #7
  %1567 = icmp eq ptr %1566, %134
  br i1 %1567, label %1568, label %1564

1568:                                             ; preds = %1564, %1561
  br label %1569

1569:                                             ; preds = %1568, %1559
  call void @llvm.lifetime.end.p0(i64 32, ptr %134) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #7
  br label %1570

1570:                                             ; preds = %1569, %1535
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %131) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %130) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %129) #7
  br label %2434

1571:                                             ; preds = %1499
  %1572 = landingpad { ptr, i32 }
          cleanup
  %1573 = extractvalue { ptr, i32 } %1572, 0
  store ptr %1573, ptr %4, align 8
  %1574 = extractvalue { ptr, i32 } %1572, 1
  store i32 %1574, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %139) #7
  br label %2434

1575:                                             ; preds = %1504
  %1576 = landingpad { ptr, i32 }
          catch ptr null
  %1577 = extractvalue { ptr, i32 } %1576, 0
  store ptr %1577, ptr %4, align 8
  %1578 = extractvalue { ptr, i32 } %1576, 1
  store i32 %1578, ptr %5, align 4
  br label %1588

1579:                                             ; preds = %1507
  %1580 = landingpad { ptr, i32 }
          catch ptr null
  %1581 = extractvalue { ptr, i32 } %1580, 0
  store ptr %1581, ptr %4, align 8
  %1582 = extractvalue { ptr, i32 } %1580, 1
  store i32 %1582, ptr %5, align 4
  br label %1587

1583:                                             ; preds = %1511, %1508
  %1584 = landingpad { ptr, i32 }
          catch ptr null
  %1585 = extractvalue { ptr, i32 } %1584, 0
  store ptr %1585, ptr %4, align 8
  %1586 = extractvalue { ptr, i32 } %1584, 1
  store i32 %1586, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %140) #7
  br label %1587

1587:                                             ; preds = %1583, %1579
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #7
  br label %1588

1588:                                             ; preds = %1587, %1575
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %142) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %142) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %141) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %140) #7
  br label %1597

1589:                                             ; preds = %1515
  %1590 = landingpad { ptr, i32 }
          catch ptr null
  %1591 = extractvalue { ptr, i32 } %1590, 0
  store ptr %1591, ptr %4, align 8
  %1592 = extractvalue { ptr, i32 } %1590, 1
  store i32 %1592, ptr %5, align 4
  br label %1597

1593:                                             ; preds = %1522, %1520, %1517
  %1594 = landingpad { ptr, i32 }
          catch ptr null
  %1595 = extractvalue { ptr, i32 } %1594, 0
  store ptr %1595, ptr %4, align 8
  %1596 = extractvalue { ptr, i32 } %1594, 1
  store i32 %1596, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %143) #7
  br label %1597

1597:                                             ; preds = %1593, %1589, %1588
  %1598 = load ptr, ptr %4, align 8
  %1599 = call ptr @__cxa_begin_catch(ptr %1598) #7
  %1600 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1601 unwind label %1656

1601:                                             ; preds = %1597
  %1602 = load ptr, ptr %1600, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %144) #7
  %1603 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1604 unwind label %1660

1604:                                             ; preds = %1601
  %1605 = load ptr, ptr %1603, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %144, ptr noundef nonnull align 8 dereferenceable(30) %1605, i32 noundef 499)
          to label %1606 unwind label %1660

1606:                                             ; preds = %1604
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1602, ptr noundef nonnull align 8 dereferenceable(30) %144, ptr noundef @.str.148)
          to label %1607 unwind label %1660

1607:                                             ; preds = %1606
  call void @llvm.lifetime.end.p0(i64 32, ptr %144) #7
  invoke void @__cxa_end_catch()
          to label %1608 unwind label %1664

1608:                                             ; preds = %1607
  br label %1609

1609:                                             ; preds = %1655, %1608
  br label %1610

1610:                                             ; preds = %1609
  br label %1611

1611:                                             ; preds = %1610
  call void @llvm.lifetime.start.p0(i64 16, ptr %145) #7
  %1612 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %146) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %147) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %147) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef @.str.145, ptr noundef nonnull align 1 dereferenceable(1) %147)
          to label %1613 unwind label %1670

1613:                                             ; preds = %1611
  call void @llvm.lifetime.start.p0(i64 32, ptr %150) #7
  store i1 true, ptr %153, align 1
  store ptr %150, ptr %151, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %152) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %152) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %150, ptr noundef @.str.149, ptr noundef nonnull align 1 dereferenceable(1) %152)
          to label %1614 unwind label %1674

1614:                                             ; preds = %1613
  store i1 false, ptr %153, align 1
  %1615 = getelementptr inbounds %"class.std::initializer_list.100", ptr %149, i32 0, i32 0
  store ptr %150, ptr %1615, align 8, !tbaa !9
  %1616 = getelementptr inbounds %"class.std::initializer_list.100", ptr %149, i32 0, i32 1
  store i64 1, ptr %1616, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %154) #7
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %154) #7
  %1617 = getelementptr inbounds { ptr, i64 }, ptr %149, i32 0, i32 0
  %1618 = load ptr, ptr %1617, align 8
  %1619 = getelementptr inbounds { ptr, i64 }, ptr %149, i32 0, i32 1
  %1620 = load i64, ptr %1619, align 8
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %148, ptr %1618, i64 %1620, ptr noundef nonnull align 1 dereferenceable(1) %154)
          to label %1621 unwind label %1678

1621:                                             ; preds = %1614
  invoke void @_ZN14HtnTermFactory21CreateConstantFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS5_SaIS5_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %145, ptr noundef nonnull align 8 dereferenceable(33088) %1612, ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef %148)
          to label %1622 unwind label %1682

1622:                                             ; preds = %1621
  %1623 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %145) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %145) #7
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %148) #7
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %154) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %154) #7
  %1624 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %150, i32 0, i32 0
  %1625 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1624, i64 1
  br label %1626

1626:                                             ; preds = %1626, %1622
  %1627 = phi ptr [ %1625, %1622 ], [ %1628, %1626 ]
  %1628 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1627, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1628) #7
  %1629 = icmp eq ptr %1628, %1624
  br i1 %1629, label %1630, label %1626

1630:                                             ; preds = %1626
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %152) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %152) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %150) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %147) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %147) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %145) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %155) #7
  %1631 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  %1632 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %155, ptr noundef nonnull align 8 dereferenceable(72) %1631, ptr noundef %1632)
          to label %1633 unwind label %1706

1633:                                             ; preds = %1630
  %1634 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %128, ptr noundef nonnull align 8 dereferenceable(16) %155) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %155) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %155) #7
  br label %1635

1635:                                             ; preds = %1633
  %1636 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %128) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %156) #7
  %1637 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %157) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %158) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %158) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %157, ptr noundef @.str.150, ptr noundef nonnull align 1 dereferenceable(1) %158)
          to label %1638 unwind label %1710

1638:                                             ; preds = %1635
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %156, ptr noundef nonnull align 8 dereferenceable(33088) %1637, ptr noundef nonnull align 8 dereferenceable(32) %157)
          to label %1639 unwind label %1714

1639:                                             ; preds = %1638
  %1640 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %156) #7
  %1641 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %1636, ptr noundef nonnull align 8 dereferenceable(72) %1640)
          to label %1642 unwind label %1718

1642:                                             ; preds = %1639
  %1643 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1641)
          to label %1644 unwind label %1718

1644:                                             ; preds = %1642
  %1645 = xor i1 %1643, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %156) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %157) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %158) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %158) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %157) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %156) #7
  br i1 %1645, label %1646, label %1790

1646:                                             ; preds = %1644
  %1647 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1648 unwind label %1724

1648:                                             ; preds = %1646
  %1649 = load ptr, ptr %1647, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %159) #7
  %1650 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1651 unwind label %1728

1651:                                             ; preds = %1648
  %1652 = load ptr, ptr %1650, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %159, ptr noundef nonnull align 8 dereferenceable(30) %1652, i32 noundef 503)
          to label %1653 unwind label %1728

1653:                                             ; preds = %1651
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1649, ptr noundef nonnull align 8 dereferenceable(30) %159, ptr noundef @.str.151)
          to label %1654 unwind label %1728

1654:                                             ; preds = %1653
  call void @llvm.lifetime.end.p0(i64 32, ptr %159) #7
  br label %1790

1655:                                             ; preds = %1523, %1513
  br label %1609

1656:                                             ; preds = %1597
  %1657 = landingpad { ptr, i32 }
          cleanup
  %1658 = extractvalue { ptr, i32 } %1657, 0
  store ptr %1658, ptr %4, align 8
  %1659 = extractvalue { ptr, i32 } %1657, 1
  store i32 %1659, ptr %5, align 4
  br label %1668

1660:                                             ; preds = %1606, %1604, %1601
  %1661 = landingpad { ptr, i32 }
          cleanup
  %1662 = extractvalue { ptr, i32 } %1661, 0
  store ptr %1662, ptr %4, align 8
  %1663 = extractvalue { ptr, i32 } %1661, 1
  store i32 %1663, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %144) #7
  br label %1668

1664:                                             ; preds = %2418, %2266, %2135, %2004, %1873, %1742, %1607
  %1665 = landingpad { ptr, i32 }
          cleanup
  %1666 = extractvalue { ptr, i32 } %1665, 0
  store ptr %1666, ptr %4, align 8
  %1667 = extractvalue { ptr, i32 } %1665, 1
  store i32 %1667, ptr %5, align 4
  br label %2434

1668:                                             ; preds = %1660, %1656
  invoke void @__cxa_end_catch()
          to label %1669 unwind label %2446

1669:                                             ; preds = %1668
  br label %2434

1670:                                             ; preds = %1611
  %1671 = landingpad { ptr, i32 }
          cleanup
  %1672 = extractvalue { ptr, i32 } %1671, 0
  store ptr %1672, ptr %4, align 8
  %1673 = extractvalue { ptr, i32 } %1671, 1
  store i32 %1673, ptr %5, align 4
  br label %1705

1674:                                             ; preds = %1613
  %1675 = landingpad { ptr, i32 }
          cleanup
  %1676 = extractvalue { ptr, i32 } %1675, 0
  store ptr %1676, ptr %4, align 8
  %1677 = extractvalue { ptr, i32 } %1675, 1
  store i32 %1677, ptr %5, align 4
  br label %1694

1678:                                             ; preds = %1614
  %1679 = landingpad { ptr, i32 }
          cleanup
  %1680 = extractvalue { ptr, i32 } %1679, 0
  store ptr %1680, ptr %4, align 8
  %1681 = extractvalue { ptr, i32 } %1679, 1
  store i32 %1681, ptr %5, align 4
  br label %1686

1682:                                             ; preds = %1621
  %1683 = landingpad { ptr, i32 }
          cleanup
  %1684 = extractvalue { ptr, i32 } %1683, 0
  store ptr %1684, ptr %4, align 8
  %1685 = extractvalue { ptr, i32 } %1683, 1
  store i32 %1685, ptr %5, align 4
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %148) #7
  br label %1686

1686:                                             ; preds = %1682, %1678
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %154) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %154) #7
  %1687 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %150, i32 0, i32 0
  %1688 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1687, i64 1
  br label %1689

1689:                                             ; preds = %1689, %1686
  %1690 = phi ptr [ %1688, %1686 ], [ %1691, %1689 ]
  %1691 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1690, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1691) #7
  %1692 = icmp eq ptr %1691, %1687
  br i1 %1692, label %1693, label %1689

1693:                                             ; preds = %1689
  br label %1694

1694:                                             ; preds = %1693, %1674
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %152) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %152) #7
  %1695 = load i1, ptr %153, align 1
  br i1 %1695, label %1696, label %1704

1696:                                             ; preds = %1694
  %1697 = load ptr, ptr %151, align 8
  %1698 = icmp eq ptr %150, %1697
  br i1 %1698, label %1703, label %1699

1699:                                             ; preds = %1699, %1696
  %1700 = phi ptr [ %1697, %1696 ], [ %1701, %1699 ]
  %1701 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1700, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1701) #7
  %1702 = icmp eq ptr %1701, %150
  br i1 %1702, label %1703, label %1699

1703:                                             ; preds = %1699, %1696
  br label %1704

1704:                                             ; preds = %1703, %1694
  call void @llvm.lifetime.end.p0(i64 32, ptr %150) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #7
  br label %1705

1705:                                             ; preds = %1704, %1670
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %147) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %147) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %145) #7
  br label %2434

1706:                                             ; preds = %1630
  %1707 = landingpad { ptr, i32 }
          cleanup
  %1708 = extractvalue { ptr, i32 } %1707, 0
  store ptr %1708, ptr %4, align 8
  %1709 = extractvalue { ptr, i32 } %1707, 1
  store i32 %1709, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %155) #7
  br label %2434

1710:                                             ; preds = %1635
  %1711 = landingpad { ptr, i32 }
          catch ptr null
  %1712 = extractvalue { ptr, i32 } %1711, 0
  store ptr %1712, ptr %4, align 8
  %1713 = extractvalue { ptr, i32 } %1711, 1
  store i32 %1713, ptr %5, align 4
  br label %1723

1714:                                             ; preds = %1638
  %1715 = landingpad { ptr, i32 }
          catch ptr null
  %1716 = extractvalue { ptr, i32 } %1715, 0
  store ptr %1716, ptr %4, align 8
  %1717 = extractvalue { ptr, i32 } %1715, 1
  store i32 %1717, ptr %5, align 4
  br label %1722

1718:                                             ; preds = %1642, %1639
  %1719 = landingpad { ptr, i32 }
          catch ptr null
  %1720 = extractvalue { ptr, i32 } %1719, 0
  store ptr %1720, ptr %4, align 8
  %1721 = extractvalue { ptr, i32 } %1719, 1
  store i32 %1721, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %156) #7
  br label %1722

1722:                                             ; preds = %1718, %1714
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %157) #7
  br label %1723

1723:                                             ; preds = %1722, %1710
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %158) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %158) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %157) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %156) #7
  br label %1732

1724:                                             ; preds = %1646
  %1725 = landingpad { ptr, i32 }
          catch ptr null
  %1726 = extractvalue { ptr, i32 } %1725, 0
  store ptr %1726, ptr %4, align 8
  %1727 = extractvalue { ptr, i32 } %1725, 1
  store i32 %1727, ptr %5, align 4
  br label %1732

1728:                                             ; preds = %1653, %1651, %1648
  %1729 = landingpad { ptr, i32 }
          catch ptr null
  %1730 = extractvalue { ptr, i32 } %1729, 0
  store ptr %1730, ptr %4, align 8
  %1731 = extractvalue { ptr, i32 } %1729, 1
  store i32 %1731, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %159) #7
  br label %1732

1732:                                             ; preds = %1728, %1724, %1723
  %1733 = load ptr, ptr %4, align 8
  %1734 = call ptr @__cxa_begin_catch(ptr %1733) #7
  %1735 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1736 unwind label %1791

1736:                                             ; preds = %1732
  %1737 = load ptr, ptr %1735, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %160) #7
  %1738 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1739 unwind label %1795

1739:                                             ; preds = %1736
  %1740 = load ptr, ptr %1738, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %160, ptr noundef nonnull align 8 dereferenceable(30) %1740, i32 noundef 503)
          to label %1741 unwind label %1795

1741:                                             ; preds = %1739
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1737, ptr noundef nonnull align 8 dereferenceable(30) %160, ptr noundef @.str.152)
          to label %1742 unwind label %1795

1742:                                             ; preds = %1741
  call void @llvm.lifetime.end.p0(i64 32, ptr %160) #7
  invoke void @__cxa_end_catch()
          to label %1743 unwind label %1664

1743:                                             ; preds = %1742
  br label %1744

1744:                                             ; preds = %1790, %1743
  br label %1745

1745:                                             ; preds = %1744
  br label %1746

1746:                                             ; preds = %1745
  call void @llvm.lifetime.start.p0(i64 16, ptr %161) #7
  %1747 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %162) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %163) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %163) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %162, ptr noundef @.str.153, ptr noundef nonnull align 1 dereferenceable(1) %163)
          to label %1748 unwind label %1801

1748:                                             ; preds = %1746
  call void @llvm.lifetime.start.p0(i64 32, ptr %166) #7
  store i1 true, ptr %169, align 1
  store ptr %166, ptr %167, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %168) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %168) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %166, ptr noundef @.str.117, ptr noundef nonnull align 1 dereferenceable(1) %168)
          to label %1749 unwind label %1805

1749:                                             ; preds = %1748
  store i1 false, ptr %169, align 1
  %1750 = getelementptr inbounds %"class.std::initializer_list.100", ptr %165, i32 0, i32 0
  store ptr %166, ptr %1750, align 8, !tbaa !9
  %1751 = getelementptr inbounds %"class.std::initializer_list.100", ptr %165, i32 0, i32 1
  store i64 1, ptr %1751, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %170) #7
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %170) #7
  %1752 = getelementptr inbounds { ptr, i64 }, ptr %165, i32 0, i32 0
  %1753 = load ptr, ptr %1752, align 8
  %1754 = getelementptr inbounds { ptr, i64 }, ptr %165, i32 0, i32 1
  %1755 = load i64, ptr %1754, align 8
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %164, ptr %1753, i64 %1755, ptr noundef nonnull align 1 dereferenceable(1) %170)
          to label %1756 unwind label %1809

1756:                                             ; preds = %1749
  invoke void @_ZN14HtnTermFactory21CreateConstantFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS5_SaIS5_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %161, ptr noundef nonnull align 8 dereferenceable(33088) %1747, ptr noundef nonnull align 8 dereferenceable(32) %162, ptr noundef %164)
          to label %1757 unwind label %1813

1757:                                             ; preds = %1756
  %1758 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %161) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %161) #7
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %164) #7
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %170) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %170) #7
  %1759 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %166, i32 0, i32 0
  %1760 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1759, i64 1
  br label %1761

1761:                                             ; preds = %1761, %1757
  %1762 = phi ptr [ %1760, %1757 ], [ %1763, %1761 ]
  %1763 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1762, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1763) #7
  %1764 = icmp eq ptr %1763, %1759
  br i1 %1764, label %1765, label %1761

1765:                                             ; preds = %1761
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %168) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %168) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %166) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %163) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %163) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %162) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %161) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %171) #7
  %1766 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  %1767 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %171, ptr noundef nonnull align 8 dereferenceable(72) %1766, ptr noundef %1767)
          to label %1768 unwind label %1837

1768:                                             ; preds = %1765
  %1769 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %128, ptr noundef nonnull align 8 dereferenceable(16) %171) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %171) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %171) #7
  br label %1770

1770:                                             ; preds = %1768
  %1771 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %128) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %172) #7
  %1772 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %173) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %174) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %174) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %173, ptr noundef @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %174)
          to label %1773 unwind label %1841

1773:                                             ; preds = %1770
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %172, ptr noundef nonnull align 8 dereferenceable(33088) %1772, ptr noundef nonnull align 8 dereferenceable(32) %173)
          to label %1774 unwind label %1845

1774:                                             ; preds = %1773
  %1775 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %172) #7
  %1776 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %1771, ptr noundef nonnull align 8 dereferenceable(72) %1775)
          to label %1777 unwind label %1849

1777:                                             ; preds = %1774
  %1778 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1776)
          to label %1779 unwind label %1849

1779:                                             ; preds = %1777
  %1780 = xor i1 %1778, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %172) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %173) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %174) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %174) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %173) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %172) #7
  br i1 %1780, label %1781, label %1921

1781:                                             ; preds = %1779
  %1782 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1783 unwind label %1855

1783:                                             ; preds = %1781
  %1784 = load ptr, ptr %1782, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %175) #7
  %1785 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1786 unwind label %1859

1786:                                             ; preds = %1783
  %1787 = load ptr, ptr %1785, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %175, ptr noundef nonnull align 8 dereferenceable(30) %1787, i32 noundef 508)
          to label %1788 unwind label %1859

1788:                                             ; preds = %1786
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1784, ptr noundef nonnull align 8 dereferenceable(30) %175, ptr noundef @.str.154)
          to label %1789 unwind label %1859

1789:                                             ; preds = %1788
  call void @llvm.lifetime.end.p0(i64 32, ptr %175) #7
  br label %1921

1790:                                             ; preds = %1654, %1644
  br label %1744

1791:                                             ; preds = %1732
  %1792 = landingpad { ptr, i32 }
          cleanup
  %1793 = extractvalue { ptr, i32 } %1792, 0
  store ptr %1793, ptr %4, align 8
  %1794 = extractvalue { ptr, i32 } %1792, 1
  store i32 %1794, ptr %5, align 4
  br label %1799

1795:                                             ; preds = %1741, %1739, %1736
  %1796 = landingpad { ptr, i32 }
          cleanup
  %1797 = extractvalue { ptr, i32 } %1796, 0
  store ptr %1797, ptr %4, align 8
  %1798 = extractvalue { ptr, i32 } %1796, 1
  store i32 %1798, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %160) #7
  br label %1799

1799:                                             ; preds = %1795, %1791
  invoke void @__cxa_end_catch()
          to label %1800 unwind label %2446

1800:                                             ; preds = %1799
  br label %2434

1801:                                             ; preds = %1746
  %1802 = landingpad { ptr, i32 }
          cleanup
  %1803 = extractvalue { ptr, i32 } %1802, 0
  store ptr %1803, ptr %4, align 8
  %1804 = extractvalue { ptr, i32 } %1802, 1
  store i32 %1804, ptr %5, align 4
  br label %1836

1805:                                             ; preds = %1748
  %1806 = landingpad { ptr, i32 }
          cleanup
  %1807 = extractvalue { ptr, i32 } %1806, 0
  store ptr %1807, ptr %4, align 8
  %1808 = extractvalue { ptr, i32 } %1806, 1
  store i32 %1808, ptr %5, align 4
  br label %1825

1809:                                             ; preds = %1749
  %1810 = landingpad { ptr, i32 }
          cleanup
  %1811 = extractvalue { ptr, i32 } %1810, 0
  store ptr %1811, ptr %4, align 8
  %1812 = extractvalue { ptr, i32 } %1810, 1
  store i32 %1812, ptr %5, align 4
  br label %1817

1813:                                             ; preds = %1756
  %1814 = landingpad { ptr, i32 }
          cleanup
  %1815 = extractvalue { ptr, i32 } %1814, 0
  store ptr %1815, ptr %4, align 8
  %1816 = extractvalue { ptr, i32 } %1814, 1
  store i32 %1816, ptr %5, align 4
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %164) #7
  br label %1817

1817:                                             ; preds = %1813, %1809
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %170) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %170) #7
  %1818 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %166, i32 0, i32 0
  %1819 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1818, i64 1
  br label %1820

1820:                                             ; preds = %1820, %1817
  %1821 = phi ptr [ %1819, %1817 ], [ %1822, %1820 ]
  %1822 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1821, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1822) #7
  %1823 = icmp eq ptr %1822, %1818
  br i1 %1823, label %1824, label %1820

1824:                                             ; preds = %1820
  br label %1825

1825:                                             ; preds = %1824, %1805
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %168) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %168) #7
  %1826 = load i1, ptr %169, align 1
  br i1 %1826, label %1827, label %1835

1827:                                             ; preds = %1825
  %1828 = load ptr, ptr %167, align 8
  %1829 = icmp eq ptr %166, %1828
  br i1 %1829, label %1834, label %1830

1830:                                             ; preds = %1830, %1827
  %1831 = phi ptr [ %1828, %1827 ], [ %1832, %1830 ]
  %1832 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1831, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1832) #7
  %1833 = icmp eq ptr %1832, %166
  br i1 %1833, label %1834, label %1830

1834:                                             ; preds = %1830, %1827
  br label %1835

1835:                                             ; preds = %1834, %1825
  call void @llvm.lifetime.end.p0(i64 32, ptr %166) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #7
  br label %1836

1836:                                             ; preds = %1835, %1801
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %163) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %163) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %162) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %161) #7
  br label %2434

1837:                                             ; preds = %1765
  %1838 = landingpad { ptr, i32 }
          cleanup
  %1839 = extractvalue { ptr, i32 } %1838, 0
  store ptr %1839, ptr %4, align 8
  %1840 = extractvalue { ptr, i32 } %1838, 1
  store i32 %1840, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %171) #7
  br label %2434

1841:                                             ; preds = %1770
  %1842 = landingpad { ptr, i32 }
          catch ptr null
  %1843 = extractvalue { ptr, i32 } %1842, 0
  store ptr %1843, ptr %4, align 8
  %1844 = extractvalue { ptr, i32 } %1842, 1
  store i32 %1844, ptr %5, align 4
  br label %1854

1845:                                             ; preds = %1773
  %1846 = landingpad { ptr, i32 }
          catch ptr null
  %1847 = extractvalue { ptr, i32 } %1846, 0
  store ptr %1847, ptr %4, align 8
  %1848 = extractvalue { ptr, i32 } %1846, 1
  store i32 %1848, ptr %5, align 4
  br label %1853

1849:                                             ; preds = %1777, %1774
  %1850 = landingpad { ptr, i32 }
          catch ptr null
  %1851 = extractvalue { ptr, i32 } %1850, 0
  store ptr %1851, ptr %4, align 8
  %1852 = extractvalue { ptr, i32 } %1850, 1
  store i32 %1852, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %172) #7
  br label %1853

1853:                                             ; preds = %1849, %1845
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %173) #7
  br label %1854

1854:                                             ; preds = %1853, %1841
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %174) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %174) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %173) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %172) #7
  br label %1863

1855:                                             ; preds = %1781
  %1856 = landingpad { ptr, i32 }
          catch ptr null
  %1857 = extractvalue { ptr, i32 } %1856, 0
  store ptr %1857, ptr %4, align 8
  %1858 = extractvalue { ptr, i32 } %1856, 1
  store i32 %1858, ptr %5, align 4
  br label %1863

1859:                                             ; preds = %1788, %1786, %1783
  %1860 = landingpad { ptr, i32 }
          catch ptr null
  %1861 = extractvalue { ptr, i32 } %1860, 0
  store ptr %1861, ptr %4, align 8
  %1862 = extractvalue { ptr, i32 } %1860, 1
  store i32 %1862, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %175) #7
  br label %1863

1863:                                             ; preds = %1859, %1855, %1854
  %1864 = load ptr, ptr %4, align 8
  %1865 = call ptr @__cxa_begin_catch(ptr %1864) #7
  %1866 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1867 unwind label %1922

1867:                                             ; preds = %1863
  %1868 = load ptr, ptr %1866, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %176) #7
  %1869 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1870 unwind label %1926

1870:                                             ; preds = %1867
  %1871 = load ptr, ptr %1869, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %176, ptr noundef nonnull align 8 dereferenceable(30) %1871, i32 noundef 508)
          to label %1872 unwind label %1926

1872:                                             ; preds = %1870
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1868, ptr noundef nonnull align 8 dereferenceable(30) %176, ptr noundef @.str.155)
          to label %1873 unwind label %1926

1873:                                             ; preds = %1872
  call void @llvm.lifetime.end.p0(i64 32, ptr %176) #7
  invoke void @__cxa_end_catch()
          to label %1874 unwind label %1664

1874:                                             ; preds = %1873
  br label %1875

1875:                                             ; preds = %1921, %1874
  br label %1876

1876:                                             ; preds = %1875
  br label %1877

1877:                                             ; preds = %1876
  call void @llvm.lifetime.start.p0(i64 16, ptr %177) #7
  %1878 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %178) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %179) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %179) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %178, ptr noundef @.str.153, ptr noundef nonnull align 1 dereferenceable(1) %179)
          to label %1879 unwind label %1932

1879:                                             ; preds = %1877
  call void @llvm.lifetime.start.p0(i64 32, ptr %182) #7
  store i1 true, ptr %185, align 1
  store ptr %182, ptr %183, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %184) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %184) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %182, ptr noundef @.str.149, ptr noundef nonnull align 1 dereferenceable(1) %184)
          to label %1880 unwind label %1936

1880:                                             ; preds = %1879
  store i1 false, ptr %185, align 1
  %1881 = getelementptr inbounds %"class.std::initializer_list.100", ptr %181, i32 0, i32 0
  store ptr %182, ptr %1881, align 8, !tbaa !9
  %1882 = getelementptr inbounds %"class.std::initializer_list.100", ptr %181, i32 0, i32 1
  store i64 1, ptr %1882, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %186) #7
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %186) #7
  %1883 = getelementptr inbounds { ptr, i64 }, ptr %181, i32 0, i32 0
  %1884 = load ptr, ptr %1883, align 8
  %1885 = getelementptr inbounds { ptr, i64 }, ptr %181, i32 0, i32 1
  %1886 = load i64, ptr %1885, align 8
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %180, ptr %1884, i64 %1886, ptr noundef nonnull align 1 dereferenceable(1) %186)
          to label %1887 unwind label %1940

1887:                                             ; preds = %1880
  invoke void @_ZN14HtnTermFactory21CreateConstantFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS5_SaIS5_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %177, ptr noundef nonnull align 8 dereferenceable(33088) %1878, ptr noundef nonnull align 8 dereferenceable(32) %178, ptr noundef %180)
          to label %1888 unwind label %1944

1888:                                             ; preds = %1887
  %1889 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %177) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %177) #7
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %180) #7
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %186) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %186) #7
  %1890 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %182, i32 0, i32 0
  %1891 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1890, i64 1
  br label %1892

1892:                                             ; preds = %1892, %1888
  %1893 = phi ptr [ %1891, %1888 ], [ %1894, %1892 ]
  %1894 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1893, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1894) #7
  %1895 = icmp eq ptr %1894, %1890
  br i1 %1895, label %1896, label %1892

1896:                                             ; preds = %1892
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %184) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %184) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %182) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %178) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %179) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %179) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %178) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %177) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %187) #7
  %1897 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  %1898 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %187, ptr noundef nonnull align 8 dereferenceable(72) %1897, ptr noundef %1898)
          to label %1899 unwind label %1968

1899:                                             ; preds = %1896
  %1900 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %128, ptr noundef nonnull align 8 dereferenceable(16) %187) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %187) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %187) #7
  br label %1901

1901:                                             ; preds = %1899
  %1902 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %128) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %188) #7
  %1903 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %189) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %190) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %190) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %189, ptr noundef @.str.156, ptr noundef nonnull align 1 dereferenceable(1) %190)
          to label %1904 unwind label %1972

1904:                                             ; preds = %1901
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %188, ptr noundef nonnull align 8 dereferenceable(33088) %1903, ptr noundef nonnull align 8 dereferenceable(32) %189)
          to label %1905 unwind label %1976

1905:                                             ; preds = %1904
  %1906 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %188) #7
  %1907 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %1902, ptr noundef nonnull align 8 dereferenceable(72) %1906)
          to label %1908 unwind label %1980

1908:                                             ; preds = %1905
  %1909 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1907)
          to label %1910 unwind label %1980

1910:                                             ; preds = %1908
  %1911 = xor i1 %1909, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %188) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %189) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %190) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %190) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %189) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %188) #7
  br i1 %1911, label %1912, label %2052

1912:                                             ; preds = %1910
  %1913 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1914 unwind label %1986

1914:                                             ; preds = %1912
  %1915 = load ptr, ptr %1913, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %191) #7
  %1916 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1917 unwind label %1990

1917:                                             ; preds = %1914
  %1918 = load ptr, ptr %1916, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %191, ptr noundef nonnull align 8 dereferenceable(30) %1918, i32 noundef 512)
          to label %1919 unwind label %1990

1919:                                             ; preds = %1917
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1915, ptr noundef nonnull align 8 dereferenceable(30) %191, ptr noundef @.str.157)
          to label %1920 unwind label %1990

1920:                                             ; preds = %1919
  call void @llvm.lifetime.end.p0(i64 32, ptr %191) #7
  br label %2052

1921:                                             ; preds = %1789, %1779
  br label %1875

1922:                                             ; preds = %1863
  %1923 = landingpad { ptr, i32 }
          cleanup
  %1924 = extractvalue { ptr, i32 } %1923, 0
  store ptr %1924, ptr %4, align 8
  %1925 = extractvalue { ptr, i32 } %1923, 1
  store i32 %1925, ptr %5, align 4
  br label %1930

1926:                                             ; preds = %1872, %1870, %1867
  %1927 = landingpad { ptr, i32 }
          cleanup
  %1928 = extractvalue { ptr, i32 } %1927, 0
  store ptr %1928, ptr %4, align 8
  %1929 = extractvalue { ptr, i32 } %1927, 1
  store i32 %1929, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %176) #7
  br label %1930

1930:                                             ; preds = %1926, %1922
  invoke void @__cxa_end_catch()
          to label %1931 unwind label %2446

1931:                                             ; preds = %1930
  br label %2434

1932:                                             ; preds = %1877
  %1933 = landingpad { ptr, i32 }
          cleanup
  %1934 = extractvalue { ptr, i32 } %1933, 0
  store ptr %1934, ptr %4, align 8
  %1935 = extractvalue { ptr, i32 } %1933, 1
  store i32 %1935, ptr %5, align 4
  br label %1967

1936:                                             ; preds = %1879
  %1937 = landingpad { ptr, i32 }
          cleanup
  %1938 = extractvalue { ptr, i32 } %1937, 0
  store ptr %1938, ptr %4, align 8
  %1939 = extractvalue { ptr, i32 } %1937, 1
  store i32 %1939, ptr %5, align 4
  br label %1956

1940:                                             ; preds = %1880
  %1941 = landingpad { ptr, i32 }
          cleanup
  %1942 = extractvalue { ptr, i32 } %1941, 0
  store ptr %1942, ptr %4, align 8
  %1943 = extractvalue { ptr, i32 } %1941, 1
  store i32 %1943, ptr %5, align 4
  br label %1948

1944:                                             ; preds = %1887
  %1945 = landingpad { ptr, i32 }
          cleanup
  %1946 = extractvalue { ptr, i32 } %1945, 0
  store ptr %1946, ptr %4, align 8
  %1947 = extractvalue { ptr, i32 } %1945, 1
  store i32 %1947, ptr %5, align 4
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %180) #7
  br label %1948

1948:                                             ; preds = %1944, %1940
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %186) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %186) #7
  %1949 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %182, i32 0, i32 0
  %1950 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1949, i64 1
  br label %1951

1951:                                             ; preds = %1951, %1948
  %1952 = phi ptr [ %1950, %1948 ], [ %1953, %1951 ]
  %1953 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1952, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1953) #7
  %1954 = icmp eq ptr %1953, %1949
  br i1 %1954, label %1955, label %1951

1955:                                             ; preds = %1951
  br label %1956

1956:                                             ; preds = %1955, %1936
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %184) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %184) #7
  %1957 = load i1, ptr %185, align 1
  br i1 %1957, label %1958, label %1966

1958:                                             ; preds = %1956
  %1959 = load ptr, ptr %183, align 8
  %1960 = icmp eq ptr %182, %1959
  br i1 %1960, label %1965, label %1961

1961:                                             ; preds = %1961, %1958
  %1962 = phi ptr [ %1959, %1958 ], [ %1963, %1961 ]
  %1963 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %1962, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1963) #7
  %1964 = icmp eq ptr %1963, %182
  br i1 %1964, label %1965, label %1961

1965:                                             ; preds = %1961, %1958
  br label %1966

1966:                                             ; preds = %1965, %1956
  call void @llvm.lifetime.end.p0(i64 32, ptr %182) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %178) #7
  br label %1967

1967:                                             ; preds = %1966, %1932
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %179) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %179) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %178) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %177) #7
  br label %2434

1968:                                             ; preds = %1896
  %1969 = landingpad { ptr, i32 }
          cleanup
  %1970 = extractvalue { ptr, i32 } %1969, 0
  store ptr %1970, ptr %4, align 8
  %1971 = extractvalue { ptr, i32 } %1969, 1
  store i32 %1971, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %187) #7
  br label %2434

1972:                                             ; preds = %1901
  %1973 = landingpad { ptr, i32 }
          catch ptr null
  %1974 = extractvalue { ptr, i32 } %1973, 0
  store ptr %1974, ptr %4, align 8
  %1975 = extractvalue { ptr, i32 } %1973, 1
  store i32 %1975, ptr %5, align 4
  br label %1985

1976:                                             ; preds = %1904
  %1977 = landingpad { ptr, i32 }
          catch ptr null
  %1978 = extractvalue { ptr, i32 } %1977, 0
  store ptr %1978, ptr %4, align 8
  %1979 = extractvalue { ptr, i32 } %1977, 1
  store i32 %1979, ptr %5, align 4
  br label %1984

1980:                                             ; preds = %1908, %1905
  %1981 = landingpad { ptr, i32 }
          catch ptr null
  %1982 = extractvalue { ptr, i32 } %1981, 0
  store ptr %1982, ptr %4, align 8
  %1983 = extractvalue { ptr, i32 } %1981, 1
  store i32 %1983, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %188) #7
  br label %1984

1984:                                             ; preds = %1980, %1976
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %189) #7
  br label %1985

1985:                                             ; preds = %1984, %1972
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %190) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %190) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %189) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %188) #7
  br label %1994

1986:                                             ; preds = %1912
  %1987 = landingpad { ptr, i32 }
          catch ptr null
  %1988 = extractvalue { ptr, i32 } %1987, 0
  store ptr %1988, ptr %4, align 8
  %1989 = extractvalue { ptr, i32 } %1987, 1
  store i32 %1989, ptr %5, align 4
  br label %1994

1990:                                             ; preds = %1919, %1917, %1914
  %1991 = landingpad { ptr, i32 }
          catch ptr null
  %1992 = extractvalue { ptr, i32 } %1991, 0
  store ptr %1992, ptr %4, align 8
  %1993 = extractvalue { ptr, i32 } %1991, 1
  store i32 %1993, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %191) #7
  br label %1994

1994:                                             ; preds = %1990, %1986, %1985
  %1995 = load ptr, ptr %4, align 8
  %1996 = call ptr @__cxa_begin_catch(ptr %1995) #7
  %1997 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1998 unwind label %2053

1998:                                             ; preds = %1994
  %1999 = load ptr, ptr %1997, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %192) #7
  %2000 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2001 unwind label %2057

2001:                                             ; preds = %1998
  %2002 = load ptr, ptr %2000, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %192, ptr noundef nonnull align 8 dereferenceable(30) %2002, i32 noundef 512)
          to label %2003 unwind label %2057

2003:                                             ; preds = %2001
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1999, ptr noundef nonnull align 8 dereferenceable(30) %192, ptr noundef @.str.158)
          to label %2004 unwind label %2057

2004:                                             ; preds = %2003
  call void @llvm.lifetime.end.p0(i64 32, ptr %192) #7
  invoke void @__cxa_end_catch()
          to label %2005 unwind label %1664

2005:                                             ; preds = %2004
  br label %2006

2006:                                             ; preds = %2052, %2005
  br label %2007

2007:                                             ; preds = %2006
  br label %2008

2008:                                             ; preds = %2007
  call void @llvm.lifetime.start.p0(i64 16, ptr %193) #7
  %2009 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %194) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %195) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %195) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %194, ptr noundef @.str.159, ptr noundef nonnull align 1 dereferenceable(1) %195)
          to label %2010 unwind label %2063

2010:                                             ; preds = %2008
  call void @llvm.lifetime.start.p0(i64 32, ptr %198) #7
  store i1 true, ptr %201, align 1
  store ptr %198, ptr %199, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %200) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %200) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %198, ptr noundef @.str.117, ptr noundef nonnull align 1 dereferenceable(1) %200)
          to label %2011 unwind label %2067

2011:                                             ; preds = %2010
  store i1 false, ptr %201, align 1
  %2012 = getelementptr inbounds %"class.std::initializer_list.100", ptr %197, i32 0, i32 0
  store ptr %198, ptr %2012, align 8, !tbaa !9
  %2013 = getelementptr inbounds %"class.std::initializer_list.100", ptr %197, i32 0, i32 1
  store i64 1, ptr %2013, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %202) #7
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %202) #7
  %2014 = getelementptr inbounds { ptr, i64 }, ptr %197, i32 0, i32 0
  %2015 = load ptr, ptr %2014, align 8
  %2016 = getelementptr inbounds { ptr, i64 }, ptr %197, i32 0, i32 1
  %2017 = load i64, ptr %2016, align 8
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %196, ptr %2015, i64 %2017, ptr noundef nonnull align 1 dereferenceable(1) %202)
          to label %2018 unwind label %2071

2018:                                             ; preds = %2011
  invoke void @_ZN14HtnTermFactory21CreateConstantFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS5_SaIS5_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %193, ptr noundef nonnull align 8 dereferenceable(33088) %2009, ptr noundef nonnull align 8 dereferenceable(32) %194, ptr noundef %196)
          to label %2019 unwind label %2075

2019:                                             ; preds = %2018
  %2020 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %193) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %193) #7
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %196) #7
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %202) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %202) #7
  %2021 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %198, i32 0, i32 0
  %2022 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %2021, i64 1
  br label %2023

2023:                                             ; preds = %2023, %2019
  %2024 = phi ptr [ %2022, %2019 ], [ %2025, %2023 ]
  %2025 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %2024, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2025) #7
  %2026 = icmp eq ptr %2025, %2021
  br i1 %2026, label %2027, label %2023

2027:                                             ; preds = %2023
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %200) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %200) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %198) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %194) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %195) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %195) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %194) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %193) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %203) #7
  %2028 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  %2029 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %203, ptr noundef nonnull align 8 dereferenceable(72) %2028, ptr noundef %2029)
          to label %2030 unwind label %2099

2030:                                             ; preds = %2027
  %2031 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %128, ptr noundef nonnull align 8 dereferenceable(16) %203) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %203) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %203) #7
  br label %2032

2032:                                             ; preds = %2030
  %2033 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %128) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %204) #7
  %2034 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %205) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %206) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %206) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %205, ptr noundef @.str.146, ptr noundef nonnull align 1 dereferenceable(1) %206)
          to label %2035 unwind label %2103

2035:                                             ; preds = %2032
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %204, ptr noundef nonnull align 8 dereferenceable(33088) %2034, ptr noundef nonnull align 8 dereferenceable(32) %205)
          to label %2036 unwind label %2107

2036:                                             ; preds = %2035
  %2037 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %204) #7
  %2038 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %2033, ptr noundef nonnull align 8 dereferenceable(72) %2037)
          to label %2039 unwind label %2111

2039:                                             ; preds = %2036
  %2040 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %2038)
          to label %2041 unwind label %2111

2041:                                             ; preds = %2039
  %2042 = xor i1 %2040, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %204) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %206) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %206) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %205) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %204) #7
  br i1 %2042, label %2043, label %2183

2043:                                             ; preds = %2041
  %2044 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2045 unwind label %2117

2045:                                             ; preds = %2043
  %2046 = load ptr, ptr %2044, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %207) #7
  %2047 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2048 unwind label %2121

2048:                                             ; preds = %2045
  %2049 = load ptr, ptr %2047, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %207, ptr noundef nonnull align 8 dereferenceable(30) %2049, i32 noundef 517)
          to label %2050 unwind label %2121

2050:                                             ; preds = %2048
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2046, ptr noundef nonnull align 8 dereferenceable(30) %207, ptr noundef @.str.147)
          to label %2051 unwind label %2121

2051:                                             ; preds = %2050
  call void @llvm.lifetime.end.p0(i64 32, ptr %207) #7
  br label %2183

2052:                                             ; preds = %1920, %1910
  br label %2006

2053:                                             ; preds = %1994
  %2054 = landingpad { ptr, i32 }
          cleanup
  %2055 = extractvalue { ptr, i32 } %2054, 0
  store ptr %2055, ptr %4, align 8
  %2056 = extractvalue { ptr, i32 } %2054, 1
  store i32 %2056, ptr %5, align 4
  br label %2061

2057:                                             ; preds = %2003, %2001, %1998
  %2058 = landingpad { ptr, i32 }
          cleanup
  %2059 = extractvalue { ptr, i32 } %2058, 0
  store ptr %2059, ptr %4, align 8
  %2060 = extractvalue { ptr, i32 } %2058, 1
  store i32 %2060, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %192) #7
  br label %2061

2061:                                             ; preds = %2057, %2053
  invoke void @__cxa_end_catch()
          to label %2062 unwind label %2446

2062:                                             ; preds = %2061
  br label %2434

2063:                                             ; preds = %2008
  %2064 = landingpad { ptr, i32 }
          cleanup
  %2065 = extractvalue { ptr, i32 } %2064, 0
  store ptr %2065, ptr %4, align 8
  %2066 = extractvalue { ptr, i32 } %2064, 1
  store i32 %2066, ptr %5, align 4
  br label %2098

2067:                                             ; preds = %2010
  %2068 = landingpad { ptr, i32 }
          cleanup
  %2069 = extractvalue { ptr, i32 } %2068, 0
  store ptr %2069, ptr %4, align 8
  %2070 = extractvalue { ptr, i32 } %2068, 1
  store i32 %2070, ptr %5, align 4
  br label %2087

2071:                                             ; preds = %2011
  %2072 = landingpad { ptr, i32 }
          cleanup
  %2073 = extractvalue { ptr, i32 } %2072, 0
  store ptr %2073, ptr %4, align 8
  %2074 = extractvalue { ptr, i32 } %2072, 1
  store i32 %2074, ptr %5, align 4
  br label %2079

2075:                                             ; preds = %2018
  %2076 = landingpad { ptr, i32 }
          cleanup
  %2077 = extractvalue { ptr, i32 } %2076, 0
  store ptr %2077, ptr %4, align 8
  %2078 = extractvalue { ptr, i32 } %2076, 1
  store i32 %2078, ptr %5, align 4
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %196) #7
  br label %2079

2079:                                             ; preds = %2075, %2071
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %202) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %202) #7
  %2080 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %198, i32 0, i32 0
  %2081 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %2080, i64 1
  br label %2082

2082:                                             ; preds = %2082, %2079
  %2083 = phi ptr [ %2081, %2079 ], [ %2084, %2082 ]
  %2084 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %2083, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2084) #7
  %2085 = icmp eq ptr %2084, %2080
  br i1 %2085, label %2086, label %2082

2086:                                             ; preds = %2082
  br label %2087

2087:                                             ; preds = %2086, %2067
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %200) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %200) #7
  %2088 = load i1, ptr %201, align 1
  br i1 %2088, label %2089, label %2097

2089:                                             ; preds = %2087
  %2090 = load ptr, ptr %199, align 8
  %2091 = icmp eq ptr %198, %2090
  br i1 %2091, label %2096, label %2092

2092:                                             ; preds = %2092, %2089
  %2093 = phi ptr [ %2090, %2089 ], [ %2094, %2092 ]
  %2094 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %2093, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2094) #7
  %2095 = icmp eq ptr %2094, %198
  br i1 %2095, label %2096, label %2092

2096:                                             ; preds = %2092, %2089
  br label %2097

2097:                                             ; preds = %2096, %2087
  call void @llvm.lifetime.end.p0(i64 32, ptr %198) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %194) #7
  br label %2098

2098:                                             ; preds = %2097, %2063
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %195) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %195) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %194) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %193) #7
  br label %2434

2099:                                             ; preds = %2027
  %2100 = landingpad { ptr, i32 }
          cleanup
  %2101 = extractvalue { ptr, i32 } %2100, 0
  store ptr %2101, ptr %4, align 8
  %2102 = extractvalue { ptr, i32 } %2100, 1
  store i32 %2102, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %203) #7
  br label %2434

2103:                                             ; preds = %2032
  %2104 = landingpad { ptr, i32 }
          catch ptr null
  %2105 = extractvalue { ptr, i32 } %2104, 0
  store ptr %2105, ptr %4, align 8
  %2106 = extractvalue { ptr, i32 } %2104, 1
  store i32 %2106, ptr %5, align 4
  br label %2116

2107:                                             ; preds = %2035
  %2108 = landingpad { ptr, i32 }
          catch ptr null
  %2109 = extractvalue { ptr, i32 } %2108, 0
  store ptr %2109, ptr %4, align 8
  %2110 = extractvalue { ptr, i32 } %2108, 1
  store i32 %2110, ptr %5, align 4
  br label %2115

2111:                                             ; preds = %2039, %2036
  %2112 = landingpad { ptr, i32 }
          catch ptr null
  %2113 = extractvalue { ptr, i32 } %2112, 0
  store ptr %2113, ptr %4, align 8
  %2114 = extractvalue { ptr, i32 } %2112, 1
  store i32 %2114, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %204) #7
  br label %2115

2115:                                             ; preds = %2111, %2107
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #7
  br label %2116

2116:                                             ; preds = %2115, %2103
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %206) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %206) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %205) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %204) #7
  br label %2125

2117:                                             ; preds = %2043
  %2118 = landingpad { ptr, i32 }
          catch ptr null
  %2119 = extractvalue { ptr, i32 } %2118, 0
  store ptr %2119, ptr %4, align 8
  %2120 = extractvalue { ptr, i32 } %2118, 1
  store i32 %2120, ptr %5, align 4
  br label %2125

2121:                                             ; preds = %2050, %2048, %2045
  %2122 = landingpad { ptr, i32 }
          catch ptr null
  %2123 = extractvalue { ptr, i32 } %2122, 0
  store ptr %2123, ptr %4, align 8
  %2124 = extractvalue { ptr, i32 } %2122, 1
  store i32 %2124, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %207) #7
  br label %2125

2125:                                             ; preds = %2121, %2117, %2116
  %2126 = load ptr, ptr %4, align 8
  %2127 = call ptr @__cxa_begin_catch(ptr %2126) #7
  %2128 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2129 unwind label %2184

2129:                                             ; preds = %2125
  %2130 = load ptr, ptr %2128, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %208) #7
  %2131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2132 unwind label %2188

2132:                                             ; preds = %2129
  %2133 = load ptr, ptr %2131, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %208, ptr noundef nonnull align 8 dereferenceable(30) %2133, i32 noundef 517)
          to label %2134 unwind label %2188

2134:                                             ; preds = %2132
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2130, ptr noundef nonnull align 8 dereferenceable(30) %208, ptr noundef @.str.148)
          to label %2135 unwind label %2188

2135:                                             ; preds = %2134
  call void @llvm.lifetime.end.p0(i64 32, ptr %208) #7
  invoke void @__cxa_end_catch()
          to label %2136 unwind label %1664

2136:                                             ; preds = %2135
  br label %2137

2137:                                             ; preds = %2183, %2136
  br label %2138

2138:                                             ; preds = %2137
  br label %2139

2139:                                             ; preds = %2138
  call void @llvm.lifetime.start.p0(i64 16, ptr %209) #7
  %2140 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %210) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %211) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %211) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %210, ptr noundef @.str.159, ptr noundef nonnull align 1 dereferenceable(1) %211)
          to label %2141 unwind label %2194

2141:                                             ; preds = %2139
  call void @llvm.lifetime.start.p0(i64 32, ptr %214) #7
  store i1 true, ptr %217, align 1
  store ptr %214, ptr %215, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %216) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %216) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %214, ptr noundef @.str.149, ptr noundef nonnull align 1 dereferenceable(1) %216)
          to label %2142 unwind label %2198

2142:                                             ; preds = %2141
  store i1 false, ptr %217, align 1
  %2143 = getelementptr inbounds %"class.std::initializer_list.100", ptr %213, i32 0, i32 0
  store ptr %214, ptr %2143, align 8, !tbaa !9
  %2144 = getelementptr inbounds %"class.std::initializer_list.100", ptr %213, i32 0, i32 1
  store i64 1, ptr %2144, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %218) #7
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %218) #7
  %2145 = getelementptr inbounds { ptr, i64 }, ptr %213, i32 0, i32 0
  %2146 = load ptr, ptr %2145, align 8
  %2147 = getelementptr inbounds { ptr, i64 }, ptr %213, i32 0, i32 1
  %2148 = load i64, ptr %2147, align 8
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %212, ptr %2146, i64 %2148, ptr noundef nonnull align 1 dereferenceable(1) %218)
          to label %2149 unwind label %2202

2149:                                             ; preds = %2142
  invoke void @_ZN14HtnTermFactory21CreateConstantFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS5_SaIS5_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %209, ptr noundef nonnull align 8 dereferenceable(33088) %2140, ptr noundef nonnull align 8 dereferenceable(32) %210, ptr noundef %212)
          to label %2150 unwind label %2206

2150:                                             ; preds = %2149
  %2151 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %209) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %209) #7
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %212) #7
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %218) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %218) #7
  %2152 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %214, i32 0, i32 0
  %2153 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %2152, i64 1
  br label %2154

2154:                                             ; preds = %2154, %2150
  %2155 = phi ptr [ %2153, %2150 ], [ %2156, %2154 ]
  %2156 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %2155, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2156) #7
  %2157 = icmp eq ptr %2156, %2152
  br i1 %2157, label %2158, label %2154

2158:                                             ; preds = %2154
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %216) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %216) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %214) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %210) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %211) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %211) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %210) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %209) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %219) #7
  %2159 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  %2160 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %219, ptr noundef nonnull align 8 dereferenceable(72) %2159, ptr noundef %2160)
          to label %2161 unwind label %2230

2161:                                             ; preds = %2158
  %2162 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %128, ptr noundef nonnull align 8 dereferenceable(16) %219) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %219) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %219) #7
  br label %2163

2163:                                             ; preds = %2161
  %2164 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %128) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %220) #7
  %2165 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %221) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %222) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %222) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %221, ptr noundef @.str.146, ptr noundef nonnull align 1 dereferenceable(1) %222)
          to label %2166 unwind label %2234

2166:                                             ; preds = %2163
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %220, ptr noundef nonnull align 8 dereferenceable(33088) %2165, ptr noundef nonnull align 8 dereferenceable(32) %221)
          to label %2167 unwind label %2238

2167:                                             ; preds = %2166
  %2168 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %220) #7
  %2169 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %2164, ptr noundef nonnull align 8 dereferenceable(72) %2168)
          to label %2170 unwind label %2242

2170:                                             ; preds = %2167
  %2171 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %2169)
          to label %2172 unwind label %2242

2172:                                             ; preds = %2170
  %2173 = xor i1 %2171, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %220) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %222) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %222) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %221) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %220) #7
  br i1 %2173, label %2174, label %2320

2174:                                             ; preds = %2172
  %2175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2176 unwind label %2248

2176:                                             ; preds = %2174
  %2177 = load ptr, ptr %2175, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %223) #7
  %2178 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2179 unwind label %2252

2179:                                             ; preds = %2176
  %2180 = load ptr, ptr %2178, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %223, ptr noundef nonnull align 8 dereferenceable(30) %2180, i32 noundef 520)
          to label %2181 unwind label %2252

2181:                                             ; preds = %2179
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2177, ptr noundef nonnull align 8 dereferenceable(30) %223, ptr noundef @.str.147)
          to label %2182 unwind label %2252

2182:                                             ; preds = %2181
  call void @llvm.lifetime.end.p0(i64 32, ptr %223) #7
  br label %2320

2183:                                             ; preds = %2051, %2041
  br label %2137

2184:                                             ; preds = %2125
  %2185 = landingpad { ptr, i32 }
          cleanup
  %2186 = extractvalue { ptr, i32 } %2185, 0
  store ptr %2186, ptr %4, align 8
  %2187 = extractvalue { ptr, i32 } %2185, 1
  store i32 %2187, ptr %5, align 4
  br label %2192

2188:                                             ; preds = %2134, %2132, %2129
  %2189 = landingpad { ptr, i32 }
          cleanup
  %2190 = extractvalue { ptr, i32 } %2189, 0
  store ptr %2190, ptr %4, align 8
  %2191 = extractvalue { ptr, i32 } %2189, 1
  store i32 %2191, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %208) #7
  br label %2192

2192:                                             ; preds = %2188, %2184
  invoke void @__cxa_end_catch()
          to label %2193 unwind label %2446

2193:                                             ; preds = %2192
  br label %2434

2194:                                             ; preds = %2139
  %2195 = landingpad { ptr, i32 }
          cleanup
  %2196 = extractvalue { ptr, i32 } %2195, 0
  store ptr %2196, ptr %4, align 8
  %2197 = extractvalue { ptr, i32 } %2195, 1
  store i32 %2197, ptr %5, align 4
  br label %2229

2198:                                             ; preds = %2141
  %2199 = landingpad { ptr, i32 }
          cleanup
  %2200 = extractvalue { ptr, i32 } %2199, 0
  store ptr %2200, ptr %4, align 8
  %2201 = extractvalue { ptr, i32 } %2199, 1
  store i32 %2201, ptr %5, align 4
  br label %2218

2202:                                             ; preds = %2142
  %2203 = landingpad { ptr, i32 }
          cleanup
  %2204 = extractvalue { ptr, i32 } %2203, 0
  store ptr %2204, ptr %4, align 8
  %2205 = extractvalue { ptr, i32 } %2203, 1
  store i32 %2205, ptr %5, align 4
  br label %2210

2206:                                             ; preds = %2149
  %2207 = landingpad { ptr, i32 }
          cleanup
  %2208 = extractvalue { ptr, i32 } %2207, 0
  store ptr %2208, ptr %4, align 8
  %2209 = extractvalue { ptr, i32 } %2207, 1
  store i32 %2209, ptr %5, align 4
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %212) #7
  br label %2210

2210:                                             ; preds = %2206, %2202
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %218) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %218) #7
  %2211 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %214, i32 0, i32 0
  %2212 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %2211, i64 1
  br label %2213

2213:                                             ; preds = %2213, %2210
  %2214 = phi ptr [ %2212, %2210 ], [ %2215, %2213 ]
  %2215 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %2214, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2215) #7
  %2216 = icmp eq ptr %2215, %2211
  br i1 %2216, label %2217, label %2213

2217:                                             ; preds = %2213
  br label %2218

2218:                                             ; preds = %2217, %2198
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %216) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %216) #7
  %2219 = load i1, ptr %217, align 1
  br i1 %2219, label %2220, label %2228

2220:                                             ; preds = %2218
  %2221 = load ptr, ptr %215, align 8
  %2222 = icmp eq ptr %214, %2221
  br i1 %2222, label %2227, label %2223

2223:                                             ; preds = %2223, %2220
  %2224 = phi ptr [ %2221, %2220 ], [ %2225, %2223 ]
  %2225 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %2224, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2225) #7
  %2226 = icmp eq ptr %2225, %214
  br i1 %2226, label %2227, label %2223

2227:                                             ; preds = %2223, %2220
  br label %2228

2228:                                             ; preds = %2227, %2218
  call void @llvm.lifetime.end.p0(i64 32, ptr %214) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %210) #7
  br label %2229

2229:                                             ; preds = %2228, %2194
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %211) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %211) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %210) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %209) #7
  br label %2434

2230:                                             ; preds = %2158
  %2231 = landingpad { ptr, i32 }
          cleanup
  %2232 = extractvalue { ptr, i32 } %2231, 0
  store ptr %2232, ptr %4, align 8
  %2233 = extractvalue { ptr, i32 } %2231, 1
  store i32 %2233, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %219) #7
  br label %2434

2234:                                             ; preds = %2163
  %2235 = landingpad { ptr, i32 }
          catch ptr null
  %2236 = extractvalue { ptr, i32 } %2235, 0
  store ptr %2236, ptr %4, align 8
  %2237 = extractvalue { ptr, i32 } %2235, 1
  store i32 %2237, ptr %5, align 4
  br label %2247

2238:                                             ; preds = %2166
  %2239 = landingpad { ptr, i32 }
          catch ptr null
  %2240 = extractvalue { ptr, i32 } %2239, 0
  store ptr %2240, ptr %4, align 8
  %2241 = extractvalue { ptr, i32 } %2239, 1
  store i32 %2241, ptr %5, align 4
  br label %2246

2242:                                             ; preds = %2170, %2167
  %2243 = landingpad { ptr, i32 }
          catch ptr null
  %2244 = extractvalue { ptr, i32 } %2243, 0
  store ptr %2244, ptr %4, align 8
  %2245 = extractvalue { ptr, i32 } %2243, 1
  store i32 %2245, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %220) #7
  br label %2246

2246:                                             ; preds = %2242, %2238
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #7
  br label %2247

2247:                                             ; preds = %2246, %2234
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %222) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %222) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %221) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %220) #7
  br label %2256

2248:                                             ; preds = %2174
  %2249 = landingpad { ptr, i32 }
          catch ptr null
  %2250 = extractvalue { ptr, i32 } %2249, 0
  store ptr %2250, ptr %4, align 8
  %2251 = extractvalue { ptr, i32 } %2249, 1
  store i32 %2251, ptr %5, align 4
  br label %2256

2252:                                             ; preds = %2181, %2179, %2176
  %2253 = landingpad { ptr, i32 }
          catch ptr null
  %2254 = extractvalue { ptr, i32 } %2253, 0
  store ptr %2254, ptr %4, align 8
  %2255 = extractvalue { ptr, i32 } %2253, 1
  store i32 %2255, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %223) #7
  br label %2256

2256:                                             ; preds = %2252, %2248, %2247
  %2257 = load ptr, ptr %4, align 8
  %2258 = call ptr @__cxa_begin_catch(ptr %2257) #7
  %2259 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2260 unwind label %2321

2260:                                             ; preds = %2256
  %2261 = load ptr, ptr %2259, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %224) #7
  %2262 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2263 unwind label %2325

2263:                                             ; preds = %2260
  %2264 = load ptr, ptr %2262, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %224, ptr noundef nonnull align 8 dereferenceable(30) %2264, i32 noundef 520)
          to label %2265 unwind label %2325

2265:                                             ; preds = %2263
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2261, ptr noundef nonnull align 8 dereferenceable(30) %224, ptr noundef @.str.148)
          to label %2266 unwind label %2325

2266:                                             ; preds = %2265
  call void @llvm.lifetime.end.p0(i64 32, ptr %224) #7
  invoke void @__cxa_end_catch()
          to label %2267 unwind label %1664

2267:                                             ; preds = %2266
  br label %2268

2268:                                             ; preds = %2320, %2267
  br label %2269

2269:                                             ; preds = %2268
  br label %2270

2270:                                             ; preds = %2269
  call void @llvm.lifetime.start.p0(i64 16, ptr %225) #7
  %2271 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %226) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %227) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %227) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %226, ptr noundef @.str.160, ptr noundef nonnull align 1 dereferenceable(1) %227)
          to label %2272 unwind label %2331

2272:                                             ; preds = %2270
  call void @llvm.lifetime.start.p0(i64 32, ptr %230) #7
  store i1 true, ptr %236, align 1
  store ptr %230, ptr %231, align 8
  %2273 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %232) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %233) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %233) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %232, ptr noundef @.str.161, ptr noundef nonnull align 1 dereferenceable(1) %233)
          to label %2274 unwind label %2335

2274:                                             ; preds = %2272
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %230, ptr noundef nonnull align 8 dereferenceable(33088) %2273, ptr noundef nonnull align 8 dereferenceable(32) %232)
          to label %2275 unwind label %2339

2275:                                             ; preds = %2274
  %2276 = getelementptr inbounds %"class.std::shared_ptr", ptr %230, i64 1
  store ptr %2276, ptr %231, align 8
  %2277 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %234) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %235) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %235) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %234, ptr noundef @.str.162, ptr noundef nonnull align 1 dereferenceable(1) %235)
          to label %2278 unwind label %2343

2278:                                             ; preds = %2275
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %2276, ptr noundef nonnull align 8 dereferenceable(33088) %2277, ptr noundef nonnull align 8 dereferenceable(32) %234)
          to label %2279 unwind label %2347

2279:                                             ; preds = %2278
  store i1 false, ptr %236, align 1
  %2280 = getelementptr inbounds %"class.std::initializer_list.94", ptr %229, i32 0, i32 0
  store ptr %230, ptr %2280, align 8, !tbaa !13
  %2281 = getelementptr inbounds %"class.std::initializer_list.94", ptr %229, i32 0, i32 1
  store i64 2, ptr %2281, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %237) #7
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %237) #7
  %2282 = getelementptr inbounds { ptr, i64 }, ptr %229, i32 0, i32 0
  %2283 = load ptr, ptr %2282, align 8
  %2284 = getelementptr inbounds { ptr, i64 }, ptr %229, i32 0, i32 1
  %2285 = load i64, ptr %2284, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %228, ptr %2283, i64 %2285, ptr noundef nonnull align 1 dereferenceable(1) %237)
          to label %2286 unwind label %2351

2286:                                             ; preds = %2279
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %225, ptr noundef nonnull align 8 dereferenceable(33088) %2271, ptr noundef nonnull align 8 dereferenceable(32) %226, ptr noundef %228)
          to label %2287 unwind label %2355

2287:                                             ; preds = %2286
  %2288 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %225) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %225) #7
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %228) #7
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %237) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %237) #7
  %2289 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %230, i32 0, i32 0
  %2290 = getelementptr inbounds %"class.std::shared_ptr", ptr %2289, i64 2
  br label %2291

2291:                                             ; preds = %2291, %2287
  %2292 = phi ptr [ %2290, %2287 ], [ %2293, %2291 ]
  %2293 = getelementptr inbounds %"class.std::shared_ptr", ptr %2292, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2293) #7
  %2294 = icmp eq ptr %2293, %2289
  br i1 %2294, label %2295, label %2291

2295:                                             ; preds = %2291
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %234) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %235) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %235) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %234) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %233) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %233) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %232) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %230) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %226) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %227) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %227) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %226) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %225) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %238) #7
  %2296 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  %2297 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %238, ptr noundef nonnull align 8 dereferenceable(72) %2296, ptr noundef %2297)
          to label %2298 unwind label %2382

2298:                                             ; preds = %2295
  %2299 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %128, ptr noundef nonnull align 8 dereferenceable(16) %238) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %238) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %238) #7
  br label %2300

2300:                                             ; preds = %2298
  %2301 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %128) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %239) #7
  %2302 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %240) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %241) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %241) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %240, ptr noundef @.str.163, ptr noundef nonnull align 1 dereferenceable(1) %241)
          to label %2303 unwind label %2386

2303:                                             ; preds = %2300
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %239, ptr noundef nonnull align 8 dereferenceable(33088) %2302, ptr noundef nonnull align 8 dereferenceable(32) %240)
          to label %2304 unwind label %2390

2304:                                             ; preds = %2303
  %2305 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %239) #7
  %2306 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %2301, ptr noundef nonnull align 8 dereferenceable(72) %2305)
          to label %2307 unwind label %2394

2307:                                             ; preds = %2304
  %2308 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %2306)
          to label %2309 unwind label %2394

2309:                                             ; preds = %2307
  %2310 = xor i1 %2308, true
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %239) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %240) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %241) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %241) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %240) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %239) #7
  br i1 %2310, label %2311, label %2423

2311:                                             ; preds = %2309
  %2312 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2313 unwind label %2400

2313:                                             ; preds = %2311
  %2314 = load ptr, ptr %2312, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %242) #7
  %2315 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2316 unwind label %2404

2316:                                             ; preds = %2313
  %2317 = load ptr, ptr %2315, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %242, ptr noundef nonnull align 8 dereferenceable(30) %2317, i32 noundef 525)
          to label %2318 unwind label %2404

2318:                                             ; preds = %2316
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2314, ptr noundef nonnull align 8 dereferenceable(30) %242, ptr noundef @.str.164)
          to label %2319 unwind label %2404

2319:                                             ; preds = %2318
  call void @llvm.lifetime.end.p0(i64 32, ptr %242) #7
  br label %2423

2320:                                             ; preds = %2182, %2172
  br label %2268

2321:                                             ; preds = %2256
  %2322 = landingpad { ptr, i32 }
          cleanup
  %2323 = extractvalue { ptr, i32 } %2322, 0
  store ptr %2323, ptr %4, align 8
  %2324 = extractvalue { ptr, i32 } %2322, 1
  store i32 %2324, ptr %5, align 4
  br label %2329

2325:                                             ; preds = %2265, %2263, %2260
  %2326 = landingpad { ptr, i32 }
          cleanup
  %2327 = extractvalue { ptr, i32 } %2326, 0
  store ptr %2327, ptr %4, align 8
  %2328 = extractvalue { ptr, i32 } %2326, 1
  store i32 %2328, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %224) #7
  br label %2329

2329:                                             ; preds = %2325, %2321
  invoke void @__cxa_end_catch()
          to label %2330 unwind label %2446

2330:                                             ; preds = %2329
  br label %2434

2331:                                             ; preds = %2270
  %2332 = landingpad { ptr, i32 }
          cleanup
  %2333 = extractvalue { ptr, i32 } %2332, 0
  store ptr %2333, ptr %4, align 8
  %2334 = extractvalue { ptr, i32 } %2332, 1
  store i32 %2334, ptr %5, align 4
  br label %2381

2335:                                             ; preds = %2272
  %2336 = landingpad { ptr, i32 }
          cleanup
  %2337 = extractvalue { ptr, i32 } %2336, 0
  store ptr %2337, ptr %4, align 8
  %2338 = extractvalue { ptr, i32 } %2336, 1
  store i32 %2338, ptr %5, align 4
  br label %2370

2339:                                             ; preds = %2274
  %2340 = landingpad { ptr, i32 }
          cleanup
  %2341 = extractvalue { ptr, i32 } %2340, 0
  store ptr %2341, ptr %4, align 8
  %2342 = extractvalue { ptr, i32 } %2340, 1
  store i32 %2342, ptr %5, align 4
  br label %2369

2343:                                             ; preds = %2275
  %2344 = landingpad { ptr, i32 }
          cleanup
  %2345 = extractvalue { ptr, i32 } %2344, 0
  store ptr %2345, ptr %4, align 8
  %2346 = extractvalue { ptr, i32 } %2344, 1
  store i32 %2346, ptr %5, align 4
  br label %2368

2347:                                             ; preds = %2278
  %2348 = landingpad { ptr, i32 }
          cleanup
  %2349 = extractvalue { ptr, i32 } %2348, 0
  store ptr %2349, ptr %4, align 8
  %2350 = extractvalue { ptr, i32 } %2348, 1
  store i32 %2350, ptr %5, align 4
  br label %2367

2351:                                             ; preds = %2279
  %2352 = landingpad { ptr, i32 }
          cleanup
  %2353 = extractvalue { ptr, i32 } %2352, 0
  store ptr %2353, ptr %4, align 8
  %2354 = extractvalue { ptr, i32 } %2352, 1
  store i32 %2354, ptr %5, align 4
  br label %2359

2355:                                             ; preds = %2286
  %2356 = landingpad { ptr, i32 }
          cleanup
  %2357 = extractvalue { ptr, i32 } %2356, 0
  store ptr %2357, ptr %4, align 8
  %2358 = extractvalue { ptr, i32 } %2356, 1
  store i32 %2358, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %228) #7
  br label %2359

2359:                                             ; preds = %2355, %2351
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %237) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %237) #7
  %2360 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %230, i32 0, i32 0
  %2361 = getelementptr inbounds %"class.std::shared_ptr", ptr %2360, i64 2
  br label %2362

2362:                                             ; preds = %2362, %2359
  %2363 = phi ptr [ %2361, %2359 ], [ %2364, %2362 ]
  %2364 = getelementptr inbounds %"class.std::shared_ptr", ptr %2363, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2364) #7
  %2365 = icmp eq ptr %2364, %2360
  br i1 %2365, label %2366, label %2362

2366:                                             ; preds = %2362
  br label %2367

2367:                                             ; preds = %2366, %2347
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %234) #7
  br label %2368

2368:                                             ; preds = %2367, %2343
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %235) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %235) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %234) #7
  br label %2369

2369:                                             ; preds = %2368, %2339
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #7
  br label %2370

2370:                                             ; preds = %2369, %2335
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %233) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %233) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %232) #7
  %2371 = load i1, ptr %236, align 1
  br i1 %2371, label %2372, label %2380

2372:                                             ; preds = %2370
  %2373 = load ptr, ptr %231, align 8
  %2374 = icmp eq ptr %230, %2373
  br i1 %2374, label %2379, label %2375

2375:                                             ; preds = %2375, %2372
  %2376 = phi ptr [ %2373, %2372 ], [ %2377, %2375 ]
  %2377 = getelementptr inbounds %"class.std::shared_ptr", ptr %2376, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2377) #7
  %2378 = icmp eq ptr %2377, %230
  br i1 %2378, label %2379, label %2375

2379:                                             ; preds = %2375, %2372
  br label %2380

2380:                                             ; preds = %2379, %2370
  call void @llvm.lifetime.end.p0(i64 32, ptr %230) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %226) #7
  br label %2381

2381:                                             ; preds = %2380, %2331
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %227) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %227) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %226) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %225) #7
  br label %2434

2382:                                             ; preds = %2295
  %2383 = landingpad { ptr, i32 }
          cleanup
  %2384 = extractvalue { ptr, i32 } %2383, 0
  store ptr %2384, ptr %4, align 8
  %2385 = extractvalue { ptr, i32 } %2383, 1
  store i32 %2385, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %238) #7
  br label %2434

2386:                                             ; preds = %2300
  %2387 = landingpad { ptr, i32 }
          catch ptr null
  %2388 = extractvalue { ptr, i32 } %2387, 0
  store ptr %2388, ptr %4, align 8
  %2389 = extractvalue { ptr, i32 } %2387, 1
  store i32 %2389, ptr %5, align 4
  br label %2399

2390:                                             ; preds = %2303
  %2391 = landingpad { ptr, i32 }
          catch ptr null
  %2392 = extractvalue { ptr, i32 } %2391, 0
  store ptr %2392, ptr %4, align 8
  %2393 = extractvalue { ptr, i32 } %2391, 1
  store i32 %2393, ptr %5, align 4
  br label %2398

2394:                                             ; preds = %2307, %2304
  %2395 = landingpad { ptr, i32 }
          catch ptr null
  %2396 = extractvalue { ptr, i32 } %2395, 0
  store ptr %2396, ptr %4, align 8
  %2397 = extractvalue { ptr, i32 } %2395, 1
  store i32 %2397, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %239) #7
  br label %2398

2398:                                             ; preds = %2394, %2390
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %240) #7
  br label %2399

2399:                                             ; preds = %2398, %2386
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %241) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %241) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %240) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %239) #7
  br label %2408

2400:                                             ; preds = %2311
  %2401 = landingpad { ptr, i32 }
          catch ptr null
  %2402 = extractvalue { ptr, i32 } %2401, 0
  store ptr %2402, ptr %4, align 8
  %2403 = extractvalue { ptr, i32 } %2401, 1
  store i32 %2403, ptr %5, align 4
  br label %2408

2404:                                             ; preds = %2318, %2316, %2313
  %2405 = landingpad { ptr, i32 }
          catch ptr null
  %2406 = extractvalue { ptr, i32 } %2405, 0
  store ptr %2406, ptr %4, align 8
  %2407 = extractvalue { ptr, i32 } %2405, 1
  store i32 %2407, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %242) #7
  br label %2408

2408:                                             ; preds = %2404, %2400, %2399
  %2409 = load ptr, ptr %4, align 8
  %2410 = call ptr @__cxa_begin_catch(ptr %2409) #7
  %2411 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2412 unwind label %2424

2412:                                             ; preds = %2408
  %2413 = load ptr, ptr %2411, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %243) #7
  %2414 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2415 unwind label %2428

2415:                                             ; preds = %2412
  %2416 = load ptr, ptr %2414, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %243, ptr noundef nonnull align 8 dereferenceable(30) %2416, i32 noundef 525)
          to label %2417 unwind label %2428

2417:                                             ; preds = %2415
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2413, ptr noundef nonnull align 8 dereferenceable(30) %243, ptr noundef @.str.165)
          to label %2418 unwind label %2428

2418:                                             ; preds = %2417
  call void @llvm.lifetime.end.p0(i64 32, ptr %243) #7
  invoke void @__cxa_end_catch()
          to label %2419 unwind label %1664

2419:                                             ; preds = %2418
  br label %2420

2420:                                             ; preds = %2423, %2419
  br label %2421

2421:                                             ; preds = %2420
  br label %2422

2422:                                             ; preds = %2421
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %128) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %128) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #7
  call void @_ZNSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #7
  ret void

2423:                                             ; preds = %2319, %2309
  br label %2420

2424:                                             ; preds = %2408
  %2425 = landingpad { ptr, i32 }
          cleanup
  %2426 = extractvalue { ptr, i32 } %2425, 0
  store ptr %2426, ptr %4, align 8
  %2427 = extractvalue { ptr, i32 } %2425, 1
  store i32 %2427, ptr %5, align 4
  br label %2432

2428:                                             ; preds = %2417, %2415, %2412
  %2429 = landingpad { ptr, i32 }
          cleanup
  %2430 = extractvalue { ptr, i32 } %2429, 0
  store ptr %2430, ptr %4, align 8
  %2431 = extractvalue { ptr, i32 } %2429, 1
  store i32 %2431, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %243) #7
  br label %2432

2432:                                             ; preds = %2428, %2424
  invoke void @__cxa_end_catch()
          to label %2433 unwind label %2446

2433:                                             ; preds = %2432
  br label %2434

2434:                                             ; preds = %2433, %2382, %2381, %2330, %2230, %2229, %2193, %2099, %2098, %2062, %1968, %1967, %1931, %1837, %1836, %1800, %1706, %1705, %1669, %1664, %1571, %1570
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %128) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %128) #7
  br label %2435

2435:                                             ; preds = %2434, %1534, %1448, %1397, %1309, %1258, %1170, %1119, %1114
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #7
  br label %2436

2436:                                             ; preds = %2435, %1027
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #7
  br label %2437

2437:                                             ; preds = %2436, %976, %857, %774, %706, %638, %570, %502, %434, %366, %361
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #7
  br label %2438

2438:                                             ; preds = %2437, %294
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #7
  br label %2439

2439:                                             ; preds = %2438, %285
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #7
  call void @_ZNSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  br label %2440

2440:                                             ; preds = %2439, %273
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #7
  br label %2441

2441:                                             ; preds = %2440
  %2442 = load ptr, ptr %4, align 8
  %2443 = load i32, ptr %5, align 4
  %2444 = insertvalue { ptr, i32 } poison, ptr %2442, 0
  %2445 = insertvalue { ptr, i32 } %2444, i32 %2443, 1
  resume { ptr, i32 } %2445

2446:                                             ; preds = %2432, %2329, %2192, %2061, %1930, %1799, %1668, %1533, %1396, %1257, %1118, %975, %856, %773, %705, %637, %569, %501, %433, %365
  %2447 = landingpad { ptr, i32 }
          catch ptr null
  %2448 = extractvalue { ptr, i32 } %2447, 0
  call void @__clang_call_terminate(ptr %2448) #10
  unreachable
}

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

declare noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72)) #2

declare void @_ZN14HtnTermFactory21CreateConstantFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS5_SaIS5_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(33088), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24), ptr, i64, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

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

declare void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(72), ptr noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10shared_ptrI7HtnTermEC2Ev(ptr noundef nonnull align 8 dereferenceable(16)) 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 nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

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

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

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


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

%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.21" = type { %"class.std::__shared_ptr.22" }
%"class.std::__shared_ptr.22" = type { ptr, %"class.std::__shared_count" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.88" = type { i8 }
%"class.UnitTest::TestDetails" = type <{ ptr, ptr, ptr, i32, i8, i8, [2 x i8] }>
%"class.std::vector.95" = type { %"struct.std::_Vector_base.96" }
%"struct.std::_Vector_base.96" = 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.97" = type { i8 }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<std::shared_ptr<HtnTerm>, std::allocator<std::shared_ptr<HtnTerm>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<HtnTerm>, std::allocator<std::shared_ptr<HtnTerm>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<HtnTerm>, std::allocator<std::shared_ptr<HtnTerm>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<HtnTerm>, std::allocator<std::shared_ptr<HtnTerm>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.2" = type { i8 }

@.str.90 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.165 = external hidden unnamed_addr constant [74 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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

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

declare noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

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

declare void @_ZN14HtnTermFactoryC1Ev(ptr noundef nonnull align 8 dereferenceable(33088)) unnamed_addr #2

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv() local_unnamed_addr #2

declare void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(30), ptr noundef) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv() local_unnamed_addr #2

declare void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(30), i32 noundef) unnamed_addr #2

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

declare void @__cxa_end_catch() local_unnamed_addr

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #6

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

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

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

declare void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(33088), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

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

declare void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(33088), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

declare void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(33088), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24), ptr, i64, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN25SuiteHtnGoalResolverTests43TestHtnGoalResolverArithmeticFunctionsTests7RunImplEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(49) %0) unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::shared_ptr.21", align 8
  %3 = alloca %"class.std::shared_ptr", align 8
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::allocator.88", align 1
  %6 = alloca %"class.std::shared_ptr", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator.88", align 1
  %9 = alloca %"class.std::shared_ptr", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator.88", align 1
  %12 = alloca %"class.UnitTest::TestDetails", align 8
  %13 = alloca %"class.UnitTest::TestDetails", align 8
  %14 = alloca %"class.std::shared_ptr", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator.88", align 1
  %17 = alloca %"class.UnitTest::TestDetails", align 8
  %18 = alloca %"class.UnitTest::TestDetails", align 8
  %19 = alloca %"class.std::shared_ptr", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator.88", align 1
  %22 = alloca %"class.UnitTest::TestDetails", align 8
  %23 = alloca %"class.UnitTest::TestDetails", align 8
  %24 = alloca %"class.std::shared_ptr", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator.88", align 1
  %27 = alloca %"class.UnitTest::TestDetails", align 8
  %28 = alloca %"class.UnitTest::TestDetails", align 8
  %29 = alloca %"class.std::shared_ptr", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator.88", align 1
  %32 = alloca %"class.UnitTest::TestDetails", align 8
  %33 = alloca %"class.UnitTest::TestDetails", align 8
  %34 = alloca %"class.std::shared_ptr", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator.88", align 1
  %37 = alloca %"class.UnitTest::TestDetails", align 8
  %38 = alloca %"class.UnitTest::TestDetails", align 8
  %39 = alloca %"class.std::shared_ptr", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.88", align 1
  %42 = alloca %"class.UnitTest::TestDetails", align 8
  %43 = alloca %"class.UnitTest::TestDetails", align 8
  %44 = alloca %"class.std::shared_ptr", align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::allocator.88", align 1
  %47 = alloca %"class.UnitTest::TestDetails", align 8
  %48 = alloca %"class.UnitTest::TestDetails", align 8
  %49 = alloca %"class.std::shared_ptr", align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator.88", align 1
  %52 = alloca %"class.std::vector.95", align 8
  %53 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %54 = alloca %"class.std::allocator.88", align 1
  %55 = alloca %"class.std::allocator.97", align 1
  %56 = alloca %"class.UnitTest::TestDetails", align 8
  %57 = alloca %"class.UnitTest::TestDetails", align 8
  %58 = alloca %"class.std::shared_ptr", align 8
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::allocator.88", align 1
  %61 = alloca %"class.std::vector.0", align 8
  %62 = alloca [2 x %"class.std::shared_ptr"], align 8
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::allocator.88", align 1
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::allocator.88", align 1
  %67 = alloca %"class.std::allocator.2", align 1
  %68 = alloca %"class.std::shared_ptr", align 8
  %69 = alloca %"class.UnitTest::TestDetails", align 8
  %70 = alloca %"class.UnitTest::TestDetails", align 8
  %71 = alloca %"class.std::shared_ptr", align 8
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::allocator.88", align 1
  %74 = alloca %"class.std::vector.0", align 8
  %75 = alloca [2 x %"class.std::shared_ptr"], align 8
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::allocator.88", align 1
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca %"class.std::allocator.88", align 1
  %80 = alloca %"class.std::allocator.2", align 1
  %81 = alloca %"class.std::shared_ptr", align 8
  %82 = alloca %"class.UnitTest::TestDetails", align 8
  %83 = alloca %"class.UnitTest::TestDetails", align 8
  %84 = alloca %"class.std::shared_ptr", align 8
  %85 = alloca %"class.std::__cxx11::basic_string", align 8
  %86 = alloca %"class.std::allocator.88", align 1
  %87 = alloca %"class.std::vector.0", align 8
  %88 = alloca [2 x %"class.std::shared_ptr"], align 8
  %89 = alloca %"class.std::__cxx11::basic_string", align 8
  %90 = alloca %"class.std::allocator.88", align 1
  %91 = alloca %"class.std::__cxx11::basic_string", align 8
  %92 = alloca %"class.std::allocator.88", align 1
  %93 = alloca %"class.std::allocator.2", align 1
  %94 = alloca %"class.std::shared_ptr", align 8
  %95 = alloca %"class.UnitTest::TestDetails", align 8
  %96 = alloca %"class.UnitTest::TestDetails", align 8
  %97 = alloca %"class.std::shared_ptr", align 8
  %98 = alloca %"class.std::__cxx11::basic_string", align 8
  %99 = alloca %"class.std::allocator.88", align 1
  %100 = alloca %"class.std::vector.0", align 8
  %101 = alloca [2 x %"class.std::shared_ptr"], align 8
  %102 = alloca %"class.std::__cxx11::basic_string", align 8
  %103 = alloca %"class.std::allocator.88", align 1
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca %"class.std::allocator.88", align 1
  %106 = alloca %"class.std::allocator.2", align 1
  %107 = alloca %"class.std::shared_ptr", align 8
  %108 = alloca %"class.UnitTest::TestDetails", align 8
  %109 = alloca %"class.UnitTest::TestDetails", align 8
  %110 = alloca %"class.std::shared_ptr", align 8
  %111 = alloca %"class.std::shared_ptr", align 8
  %112 = alloca %"class.std::__cxx11::basic_string", align 8
  %113 = alloca %"class.std::allocator.88", align 1
  %114 = alloca %"class.std::vector.95", align 8
  %115 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %116 = alloca %"class.std::allocator.88", align 1
  %117 = alloca %"class.std::allocator.97", align 1
  %118 = alloca %"class.std::shared_ptr", align 8
  %119 = alloca %"class.std::shared_ptr", align 8
  %120 = alloca %"class.std::__cxx11::basic_string", align 8
  %121 = alloca %"class.std::allocator.88", align 1
  %122 = alloca %"class.UnitTest::TestDetails", align 8
  %123 = alloca %"class.UnitTest::TestDetails", align 8
  %124 = alloca %"class.std::shared_ptr", align 8
  %125 = alloca %"class.std::__cxx11::basic_string", align 8
  %126 = alloca %"class.std::allocator.88", align 1
  %127 = alloca %"class.std::vector.95", align 8
  %128 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %129 = alloca %"class.std::allocator.88", align 1
  %130 = alloca %"class.std::allocator.97", align 1
  %131 = alloca %"class.std::shared_ptr", align 8
  %132 = alloca %"class.std::shared_ptr", align 8
  %133 = alloca %"class.std::__cxx11::basic_string", align 8
  %134 = alloca %"class.std::allocator.88", align 1
  %135 = alloca %"class.UnitTest::TestDetails", align 8
  %136 = alloca %"class.UnitTest::TestDetails", align 8
  %137 = alloca %"class.std::shared_ptr", align 8
  %138 = alloca %"class.std::__cxx11::basic_string", align 8
  %139 = alloca %"class.std::allocator.88", align 1
  %140 = alloca %"class.std::vector.95", align 8
  %141 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %142 = alloca %"class.std::allocator.88", align 1
  %143 = alloca %"class.std::allocator.97", align 1
  %144 = alloca %"class.std::shared_ptr", align 8
  %145 = alloca %"class.std::shared_ptr", align 8
  %146 = alloca %"class.std::__cxx11::basic_string", align 8
  %147 = alloca %"class.std::allocator.88", align 1
  %148 = alloca %"class.UnitTest::TestDetails", align 8
  %149 = alloca %"class.UnitTest::TestDetails", align 8
  %150 = alloca %"class.std::shared_ptr", align 8
  %151 = alloca %"class.std::__cxx11::basic_string", align 8
  %152 = alloca %"class.std::allocator.88", align 1
  %153 = alloca %"class.std::vector.95", align 8
  %154 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %155 = alloca %"class.std::allocator.88", align 1
  %156 = alloca %"class.std::allocator.97", align 1
  %157 = alloca %"class.std::shared_ptr", align 8
  %158 = alloca %"class.std::shared_ptr", align 8
  %159 = alloca %"class.std::__cxx11::basic_string", align 8
  %160 = alloca %"class.std::allocator.88", align 1
  %161 = alloca %"class.UnitTest::TestDetails", align 8
  %162 = alloca %"class.UnitTest::TestDetails", align 8
  %163 = alloca %"class.std::shared_ptr", align 8
  %164 = alloca %"class.std::__cxx11::basic_string", align 8
  %165 = alloca %"class.std::allocator.88", align 1
  %166 = alloca %"class.std::vector.95", align 8
  %167 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %168 = alloca %"class.std::allocator.88", align 1
  %169 = alloca %"class.std::allocator.97", align 1
  %170 = alloca %"class.std::shared_ptr", align 8
  %171 = alloca %"class.std::shared_ptr", align 8
  %172 = alloca %"class.std::__cxx11::basic_string", align 8
  %173 = alloca %"class.std::allocator.88", align 1
  %174 = alloca %"class.UnitTest::TestDetails", align 8
  %175 = alloca %"class.UnitTest::TestDetails", align 8
  %176 = alloca %"class.std::shared_ptr", align 8
  %177 = alloca %"class.std::__cxx11::basic_string", align 8
  %178 = alloca %"class.std::allocator.88", align 1
  %179 = alloca %"class.std::vector.95", align 8
  %180 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %181 = alloca %"class.std::allocator.88", align 1
  %182 = alloca %"class.std::allocator.97", align 1
  %183 = alloca %"class.std::shared_ptr", align 8
  %184 = alloca %"class.std::shared_ptr", align 8
  %185 = alloca %"class.std::__cxx11::basic_string", align 8
  %186 = alloca %"class.std::allocator.88", align 1
  %187 = alloca %"class.UnitTest::TestDetails", align 8
  %188 = alloca %"class.UnitTest::TestDetails", align 8
  %189 = alloca %"class.std::shared_ptr", align 8
  %190 = alloca %"class.std::__cxx11::basic_string", align 8
  %191 = alloca %"class.std::allocator.88", align 1
  %192 = alloca %"class.std::vector.0", align 8
  %193 = alloca [2 x %"class.std::shared_ptr"], align 8
  %194 = alloca %"class.std::__cxx11::basic_string", align 8
  %195 = alloca %"class.std::allocator.88", align 1
  %196 = alloca %"class.std::__cxx11::basic_string", align 8
  %197 = alloca %"class.std::allocator.88", align 1
  %198 = alloca %"class.std::allocator.2", align 1
  %199 = alloca %"class.std::shared_ptr", align 8
  %200 = alloca %"class.std::shared_ptr", align 8
  %201 = alloca %"class.std::__cxx11::basic_string", align 8
  %202 = alloca %"class.std::allocator.88", align 1
  %203 = alloca %"class.UnitTest::TestDetails", align 8
  %204 = alloca %"class.UnitTest::TestDetails", align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #7
  %205 = tail call noalias noundef nonnull dereferenceable(33088) ptr @_Znwm(i64 noundef 33088) #8
  invoke void @_ZN14HtnTermFactoryC1Ev(ptr noundef nonnull align 8 dereferenceable(33088) %205)
          to label %206 unwind label %230

206:                                              ; preds = %1
  call void @_ZNSt10shared_ptrI14HtnTermFactoryEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull %205)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #7
  %207 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @.str.111, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %208 unwind label %232

208:                                              ; preds = %206
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %3, ptr noundef nonnull align 8 dereferenceable(33088) %207, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %209 unwind label %234

209:                                              ; preds = %208
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #7
  %210 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.103, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %211 unwind label %237

211:                                              ; preds = %209
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %6, ptr noundef nonnull align 8 dereferenceable(33088) %210, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %212 unwind label %239

212:                                              ; preds = %211
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #7
  %213 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %214 unwind label %242

214:                                              ; preds = %212
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %9, ptr noundef nonnull align 8 dereferenceable(33088) %213, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %215 unwind label %244

215:                                              ; preds = %214
  %216 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %9) #7
  %217 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %216)
          to label %218 unwind label %246

218:                                              ; preds = %215
  %219 = icmp eq i32 %217, 3
  %220 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %219)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #7
  br i1 %220, label %264, label %221

221:                                              ; preds = %218
  %222 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %223 unwind label %250

223:                                              ; preds = %221
  %224 = load ptr, ptr %222, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #7
  %225 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %226 unwind label %252

226:                                              ; preds = %223
  %227 = load ptr, ptr %225, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %12, ptr noundef nonnull align 8 dereferenceable(30) %227, i32 noundef 456)
          to label %228 unwind label %252

228:                                              ; preds = %226
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %224, ptr noundef nonnull align 8 dereferenceable(30) %12, ptr noundef nonnull @.str.112)
          to label %229 unwind label %252

229:                                              ; preds = %228
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  br label %264

230:                                              ; preds = %1
  %231 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %205, i64 noundef 33088) #9
  br label %1437

232:                                              ; preds = %206
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %236

234:                                              ; preds = %208
  %235 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  br label %236

236:                                              ; preds = %234, %232
  %.pn = phi { ptr, i32 } [ %235, %234 ], [ %233, %232 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  br label %1436

237:                                              ; preds = %209
  %238 = landingpad { ptr, i32 }
          cleanup
  br label %241

239:                                              ; preds = %211
  %240 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  br label %241

241:                                              ; preds = %239, %237
  %.pn229 = phi { ptr, i32 } [ %240, %239 ], [ %238, %237 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  br label %1435

242:                                              ; preds = %212
  %243 = landingpad { ptr, i32 }
          catch ptr null
  br label %249

244:                                              ; preds = %214
  %245 = landingpad { ptr, i32 }
          catch ptr null
  br label %248

246:                                              ; preds = %215
  %247 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #7
  br label %248

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

249:                                              ; preds = %248, %242
  %.pn231.pn = phi { ptr, i32 } [ %.pn231, %248 ], [ %243, %242 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #7
  br label %254

250:                                              ; preds = %221
  %251 = landingpad { ptr, i32 }
          catch ptr null
  br label %254

252:                                              ; preds = %228, %226, %223
  %253 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  br label %254

254:                                              ; preds = %252, %250, %249
  %.pn232 = phi { ptr, i32 } [ %253, %252 ], [ %251, %250 ], [ %.pn231.pn, %249 ]
  %.4 = extractvalue { ptr, i32 } %.pn232, 0
  %255 = call ptr @__cxa_begin_catch(ptr %.4) #7
  %256 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %257 unwind label %282

257:                                              ; preds = %254
  %258 = load ptr, ptr %256, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  %259 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %260 unwind label %284

260:                                              ; preds = %257
  %261 = load ptr, ptr %259, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %13, ptr noundef nonnull align 8 dereferenceable(30) %261, i32 noundef 456)
          to label %262 unwind label %284

262:                                              ; preds = %260
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %258, ptr noundef nonnull align 8 dereferenceable(30) %13, ptr noundef nonnull @.str.113)
          to label %263 unwind label %284

263:                                              ; preds = %262
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  invoke void @__cxa_end_catch()
          to label %264 unwind label %286

264:                                              ; preds = %218, %229, %263
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #7
  %265 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %266 unwind label %289

266:                                              ; preds = %264
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %14, ptr noundef nonnull align 8 dereferenceable(33088) %265, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %267 unwind label %291

267:                                              ; preds = %266
  %268 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  %269 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %268)
          to label %270 unwind label %293

270:                                              ; preds = %267
  %271 = icmp eq i32 %269, 2
  %272 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %271)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  br i1 %272, label %311, label %273

273:                                              ; preds = %270
  %274 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %275 unwind label %297

275:                                              ; preds = %273
  %276 = load ptr, ptr %274, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #7
  %277 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %278 unwind label %299

278:                                              ; preds = %275
  %279 = load ptr, ptr %277, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %17, ptr noundef nonnull align 8 dereferenceable(30) %279, i32 noundef 457)
          to label %280 unwind label %299

280:                                              ; preds = %278
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %276, ptr noundef nonnull align 8 dereferenceable(30) %17, ptr noundef nonnull @.str.115)
          to label %281 unwind label %299

281:                                              ; preds = %280
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %311

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

284:                                              ; preds = %262, %260, %257
  %285 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  br label %288

286:                                              ; preds = %631, %580, %535, %490, %445, %400, %355, %310, %263
  %287 = landingpad { ptr, i32 }
          cleanup
  br label %1434

288:                                              ; preds = %284, %282
  %.pn233 = phi { ptr, i32 } [ %285, %284 ], [ %283, %282 ]
  invoke void @__cxa_end_catch()
          to label %1434 unwind label %1438

289:                                              ; preds = %264
  %290 = landingpad { ptr, i32 }
          catch ptr null
  br label %296

291:                                              ; preds = %266
  %292 = landingpad { ptr, i32 }
          catch ptr null
  br label %295

293:                                              ; preds = %267
  %294 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #7
  br label %295

295:                                              ; preds = %293, %291
  %.pn235 = phi { ptr, i32 } [ %294, %293 ], [ %292, %291 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %296

296:                                              ; preds = %295, %289
  %.pn235.pn = phi { ptr, i32 } [ %.pn235, %295 ], [ %290, %289 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  br label %301

297:                                              ; preds = %273
  %298 = landingpad { ptr, i32 }
          catch ptr null
  br label %301

299:                                              ; preds = %280, %278, %275
  %300 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %301

301:                                              ; preds = %299, %297, %296
  %.pn236 = phi { ptr, i32 } [ %300, %299 ], [ %298, %297 ], [ %.pn235.pn, %296 ]
  %.8 = extractvalue { ptr, i32 } %.pn236, 0
  %302 = call ptr @__cxa_begin_catch(ptr %.8) #7
  %303 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %304 unwind label %329

304:                                              ; preds = %301
  %305 = load ptr, ptr %303, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #7
  %306 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %307 unwind label %331

307:                                              ; preds = %304
  %308 = load ptr, ptr %306, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %18, ptr noundef nonnull align 8 dereferenceable(30) %308, i32 noundef 457)
          to label %309 unwind label %331

309:                                              ; preds = %307
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %305, ptr noundef nonnull align 8 dereferenceable(30) %18, ptr noundef nonnull @.str.116)
          to label %310 unwind label %331

310:                                              ; preds = %309
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  invoke void @__cxa_end_catch()
          to label %311 unwind label %286

311:                                              ; preds = %270, %281, %310
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #7
  %312 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull @.str.117, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %313 unwind label %334

313:                                              ; preds = %311
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %19, ptr noundef nonnull align 8 dereferenceable(33088) %312, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %314 unwind label %336

314:                                              ; preds = %313
  %315 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  %316 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %315)
          to label %317 unwind label %338

317:                                              ; preds = %314
  %318 = icmp eq i32 %316, 1
  %319 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %318)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  br i1 %319, label %356, label %320

320:                                              ; preds = %317
  %321 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %322 unwind label %342

322:                                              ; preds = %320
  %323 = load ptr, ptr %321, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #7
  %324 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %325 unwind label %344

325:                                              ; preds = %322
  %326 = load ptr, ptr %324, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %22, ptr noundef nonnull align 8 dereferenceable(30) %326, i32 noundef 458)
          to label %327 unwind label %344

327:                                              ; preds = %325
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %323, ptr noundef nonnull align 8 dereferenceable(30) %22, ptr noundef nonnull @.str.118)
          to label %328 unwind label %344

328:                                              ; preds = %327
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  br label %356

329:                                              ; preds = %301
  %330 = landingpad { ptr, i32 }
          cleanup
  br label %333

331:                                              ; preds = %309, %307, %304
  %332 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  br label %333

333:                                              ; preds = %331, %329
  %.pn237 = phi { ptr, i32 } [ %332, %331 ], [ %330, %329 ]
  invoke void @__cxa_end_catch()
          to label %1434 unwind label %1438

334:                                              ; preds = %311
  %335 = landingpad { ptr, i32 }
          catch ptr null
  br label %341

336:                                              ; preds = %313
  %337 = landingpad { ptr, i32 }
          catch ptr null
  br label %340

338:                                              ; preds = %314
  %339 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  br label %340

340:                                              ; preds = %338, %336
  %.pn239 = phi { ptr, i32 } [ %339, %338 ], [ %337, %336 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %341

341:                                              ; preds = %340, %334
  %.pn239.pn = phi { ptr, i32 } [ %.pn239, %340 ], [ %335, %334 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  br label %346

342:                                              ; preds = %320
  %343 = landingpad { ptr, i32 }
          catch ptr null
  br label %346

344:                                              ; preds = %327, %325, %322
  %345 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  br label %346

346:                                              ; preds = %344, %342, %341
  %.pn240 = phi { ptr, i32 } [ %345, %344 ], [ %343, %342 ], [ %.pn239.pn, %341 ]
  %.12 = extractvalue { ptr, i32 } %.pn240, 0
  %347 = call ptr @__cxa_begin_catch(ptr %.12) #7
  %348 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %349 unwind label %374

349:                                              ; preds = %346
  %350 = load ptr, ptr %348, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #7
  %351 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %352 unwind label %376

352:                                              ; preds = %349
  %353 = load ptr, ptr %351, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %23, ptr noundef nonnull align 8 dereferenceable(30) %353, i32 noundef 458)
          to label %354 unwind label %376

354:                                              ; preds = %352
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %350, ptr noundef nonnull align 8 dereferenceable(30) %23, ptr noundef nonnull @.str.119)
          to label %355 unwind label %376

355:                                              ; preds = %354
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  invoke void @__cxa_end_catch()
          to label %356 unwind label %286

356:                                              ; preds = %317, %328, %355
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #7
  %357 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.120, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %358 unwind label %379

358:                                              ; preds = %356
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %24, ptr noundef nonnull align 8 dereferenceable(33088) %357, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %359 unwind label %381

359:                                              ; preds = %358
  %360 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  %361 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %360)
          to label %362 unwind label %383

362:                                              ; preds = %359
  %363 = icmp eq i32 %361, 1
  %364 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %363)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  br i1 %364, label %401, label %365

365:                                              ; preds = %362
  %366 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %367 unwind label %387

367:                                              ; preds = %365
  %368 = load ptr, ptr %366, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #7
  %369 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %370 unwind label %389

370:                                              ; preds = %367
  %371 = load ptr, ptr %369, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %27, ptr noundef nonnull align 8 dereferenceable(30) %371, i32 noundef 459)
          to label %372 unwind label %389

372:                                              ; preds = %370
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %368, ptr noundef nonnull align 8 dereferenceable(30) %27, ptr noundef nonnull @.str.121)
          to label %373 unwind label %389

373:                                              ; preds = %372
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  br label %401

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

376:                                              ; preds = %354, %352, %349
  %377 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  br label %378

378:                                              ; preds = %376, %374
  %.pn241 = phi { ptr, i32 } [ %377, %376 ], [ %375, %374 ]
  invoke void @__cxa_end_catch()
          to label %1434 unwind label %1438

379:                                              ; preds = %356
  %380 = landingpad { ptr, i32 }
          catch ptr null
  br label %386

381:                                              ; preds = %358
  %382 = landingpad { ptr, i32 }
          catch ptr null
  br label %385

383:                                              ; preds = %359
  %384 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #7
  br label %385

385:                                              ; preds = %383, %381
  %.pn243 = phi { ptr, i32 } [ %384, %383 ], [ %382, %381 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %386

386:                                              ; preds = %385, %379
  %.pn243.pn = phi { ptr, i32 } [ %.pn243, %385 ], [ %380, %379 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  br label %391

387:                                              ; preds = %365
  %388 = landingpad { ptr, i32 }
          catch ptr null
  br label %391

389:                                              ; preds = %372, %370, %367
  %390 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  br label %391

391:                                              ; preds = %389, %387, %386
  %.pn244 = phi { ptr, i32 } [ %390, %389 ], [ %388, %387 ], [ %.pn243.pn, %386 ]
  %.16 = extractvalue { ptr, i32 } %.pn244, 0
  %392 = call ptr @__cxa_begin_catch(ptr %.16) #7
  %393 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %394 unwind label %419

394:                                              ; preds = %391
  %395 = load ptr, ptr %393, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #7
  %396 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %397 unwind label %421

397:                                              ; preds = %394
  %398 = load ptr, ptr %396, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %28, ptr noundef nonnull align 8 dereferenceable(30) %398, i32 noundef 459)
          to label %399 unwind label %421

399:                                              ; preds = %397
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %395, ptr noundef nonnull align 8 dereferenceable(30) %28, ptr noundef nonnull @.str.122)
          to label %400 unwind label %421

400:                                              ; preds = %399
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  invoke void @__cxa_end_catch()
          to label %401 unwind label %286

401:                                              ; preds = %362, %373, %400
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #7
  %402 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull @.str.123, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %403 unwind label %424

403:                                              ; preds = %401
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %29, ptr noundef nonnull align 8 dereferenceable(33088) %402, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %404 unwind label %426

404:                                              ; preds = %403
  %405 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  %406 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %405)
          to label %407 unwind label %428

407:                                              ; preds = %404
  %408 = icmp eq i32 %406, 1
  %409 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %408)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #7
  br i1 %409, label %446, label %410

410:                                              ; preds = %407
  %411 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %412 unwind label %432

412:                                              ; preds = %410
  %413 = load ptr, ptr %411, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #7
  %414 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %415 unwind label %434

415:                                              ; preds = %412
  %416 = load ptr, ptr %414, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %32, ptr noundef nonnull align 8 dereferenceable(30) %416, i32 noundef 460)
          to label %417 unwind label %434

417:                                              ; preds = %415
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %413, ptr noundef nonnull align 8 dereferenceable(30) %32, ptr noundef nonnull @.str.124)
          to label %418 unwind label %434

418:                                              ; preds = %417
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  br label %446

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

421:                                              ; preds = %399, %397, %394
  %422 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  br label %423

423:                                              ; preds = %421, %419
  %.pn245 = phi { ptr, i32 } [ %422, %421 ], [ %420, %419 ]
  invoke void @__cxa_end_catch()
          to label %1434 unwind label %1438

424:                                              ; preds = %401
  %425 = landingpad { ptr, i32 }
          catch ptr null
  br label %431

426:                                              ; preds = %403
  %427 = landingpad { ptr, i32 }
          catch ptr null
  br label %430

428:                                              ; preds = %404
  %429 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #7
  br label %430

430:                                              ; preds = %428, %426
  %.pn247 = phi { ptr, i32 } [ %429, %428 ], [ %427, %426 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %431

431:                                              ; preds = %430, %424
  %.pn247.pn = phi { ptr, i32 } [ %.pn247, %430 ], [ %425, %424 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #7
  br label %436

432:                                              ; preds = %410
  %433 = landingpad { ptr, i32 }
          catch ptr null
  br label %436

434:                                              ; preds = %417, %415, %412
  %435 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  br label %436

436:                                              ; preds = %434, %432, %431
  %.pn248 = phi { ptr, i32 } [ %435, %434 ], [ %433, %432 ], [ %.pn247.pn, %431 ]
  %.20 = extractvalue { ptr, i32 } %.pn248, 0
  %437 = call ptr @__cxa_begin_catch(ptr %.20) #7
  %438 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %439 unwind label %464

439:                                              ; preds = %436
  %440 = load ptr, ptr %438, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #7
  %441 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %442 unwind label %466

442:                                              ; preds = %439
  %443 = load ptr, ptr %441, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %33, ptr noundef nonnull align 8 dereferenceable(30) %443, i32 noundef 460)
          to label %444 unwind label %466

444:                                              ; preds = %442
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %440, ptr noundef nonnull align 8 dereferenceable(30) %33, ptr noundef nonnull @.str.125)
          to label %445 unwind label %466

445:                                              ; preds = %444
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  invoke void @__cxa_end_catch()
          to label %446 unwind label %286

446:                                              ; preds = %407, %418, %445
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #7
  %447 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull @.str.126, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %448 unwind label %469

448:                                              ; preds = %446
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %34, ptr noundef nonnull align 8 dereferenceable(33088) %447, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %449 unwind label %471

449:                                              ; preds = %448
  %450 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  %451 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %450)
          to label %452 unwind label %473

452:                                              ; preds = %449
  %453 = icmp eq i32 %451, 3
  %454 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %453)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #7
  br i1 %454, label %491, label %455

455:                                              ; preds = %452
  %456 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %457 unwind label %477

457:                                              ; preds = %455
  %458 = load ptr, ptr %456, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #7
  %459 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %460 unwind label %479

460:                                              ; preds = %457
  %461 = load ptr, ptr %459, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %37, ptr noundef nonnull align 8 dereferenceable(30) %461, i32 noundef 461)
          to label %462 unwind label %479

462:                                              ; preds = %460
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %458, ptr noundef nonnull align 8 dereferenceable(30) %37, ptr noundef nonnull @.str.127)
          to label %463 unwind label %479

463:                                              ; preds = %462
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #7
  br label %491

464:                                              ; preds = %436
  %465 = landingpad { ptr, i32 }
          cleanup
  br label %468

466:                                              ; preds = %444, %442, %439
  %467 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  br label %468

468:                                              ; preds = %466, %464
  %.pn249 = phi { ptr, i32 } [ %467, %466 ], [ %465, %464 ]
  invoke void @__cxa_end_catch()
          to label %1434 unwind label %1438

469:                                              ; preds = %446
  %470 = landingpad { ptr, i32 }
          catch ptr null
  br label %476

471:                                              ; preds = %448
  %472 = landingpad { ptr, i32 }
          catch ptr null
  br label %475

473:                                              ; preds = %449
  %474 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  br label %475

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

476:                                              ; preds = %475, %469
  %.pn251.pn = phi { ptr, i32 } [ %.pn251, %475 ], [ %470, %469 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #7
  br label %481

477:                                              ; preds = %455
  %478 = landingpad { ptr, i32 }
          catch ptr null
  br label %481

479:                                              ; preds = %462, %460, %457
  %480 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #7
  br label %481

481:                                              ; preds = %479, %477, %476
  %.pn252 = phi { ptr, i32 } [ %480, %479 ], [ %478, %477 ], [ %.pn251.pn, %476 ]
  %.24 = extractvalue { ptr, i32 } %.pn252, 0
  %482 = call ptr @__cxa_begin_catch(ptr %.24) #7
  %483 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %484 unwind label %509

484:                                              ; preds = %481
  %485 = load ptr, ptr %483, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #7
  %486 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %487 unwind label %511

487:                                              ; preds = %484
  %488 = load ptr, ptr %486, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %38, ptr noundef nonnull align 8 dereferenceable(30) %488, i32 noundef 461)
          to label %489 unwind label %511

489:                                              ; preds = %487
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %485, ptr noundef nonnull align 8 dereferenceable(30) %38, ptr noundef nonnull @.str.128)
          to label %490 unwind label %511

490:                                              ; preds = %489
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  invoke void @__cxa_end_catch()
          to label %491 unwind label %286

491:                                              ; preds = %452, %463, %490
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #7
  %492 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull @.str.129, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %493 unwind label %514

493:                                              ; preds = %491
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %39, ptr noundef nonnull align 8 dereferenceable(33088) %492, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %494 unwind label %516

494:                                              ; preds = %493
  %495 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  %496 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %495)
          to label %497 unwind label %518

497:                                              ; preds = %494
  %498 = icmp eq i32 %496, 3
  %499 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %498)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #7
  br i1 %499, label %536, label %500

500:                                              ; preds = %497
  %501 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %502 unwind label %522

502:                                              ; preds = %500
  %503 = load ptr, ptr %501, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #7
  %504 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %505 unwind label %524

505:                                              ; preds = %502
  %506 = load ptr, ptr %504, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %42, ptr noundef nonnull align 8 dereferenceable(30) %506, i32 noundef 462)
          to label %507 unwind label %524

507:                                              ; preds = %505
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %503, ptr noundef nonnull align 8 dereferenceable(30) %42, ptr noundef nonnull @.str.130)
          to label %508 unwind label %524

508:                                              ; preds = %507
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #7
  br label %536

509:                                              ; preds = %481
  %510 = landingpad { ptr, i32 }
          cleanup
  br label %513

511:                                              ; preds = %489, %487, %484
  %512 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  br label %513

513:                                              ; preds = %511, %509
  %.pn253 = phi { ptr, i32 } [ %512, %511 ], [ %510, %509 ]
  invoke void @__cxa_end_catch()
          to label %1434 unwind label %1438

514:                                              ; preds = %491
  %515 = landingpad { ptr, i32 }
          catch ptr null
  br label %521

516:                                              ; preds = %493
  %517 = landingpad { ptr, i32 }
          catch ptr null
  br label %520

518:                                              ; preds = %494
  %519 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #7
  br label %520

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

521:                                              ; preds = %520, %514
  %.pn255.pn = phi { ptr, i32 } [ %.pn255, %520 ], [ %515, %514 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #7
  br label %526

522:                                              ; preds = %500
  %523 = landingpad { ptr, i32 }
          catch ptr null
  br label %526

524:                                              ; preds = %507, %505, %502
  %525 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #7
  br label %526

526:                                              ; preds = %524, %522, %521
  %.pn256 = phi { ptr, i32 } [ %525, %524 ], [ %523, %522 ], [ %.pn255.pn, %521 ]
  %.28 = extractvalue { ptr, i32 } %.pn256, 0
  %527 = call ptr @__cxa_begin_catch(ptr %.28) #7
  %528 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %529 unwind label %554

529:                                              ; preds = %526
  %530 = load ptr, ptr %528, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #7
  %531 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %532 unwind label %556

532:                                              ; preds = %529
  %533 = load ptr, ptr %531, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %43, ptr noundef nonnull align 8 dereferenceable(30) %533, i32 noundef 462)
          to label %534 unwind label %556

534:                                              ; preds = %532
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %530, ptr noundef nonnull align 8 dereferenceable(30) %43, ptr noundef nonnull @.str.131)
          to label %535 unwind label %556

535:                                              ; preds = %534
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #7
  invoke void @__cxa_end_catch()
          to label %536 unwind label %286

536:                                              ; preds = %497, %508, %535
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #7
  %537 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %538 unwind label %559

538:                                              ; preds = %536
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %44, ptr noundef nonnull align 8 dereferenceable(33088) %537, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %539 unwind label %561

539:                                              ; preds = %538
  %540 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  %541 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %540)
          to label %542 unwind label %563

542:                                              ; preds = %539
  %543 = icmp eq i32 %541, 0
  %544 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %543)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #7
  br i1 %544, label %581, label %545

545:                                              ; preds = %542
  %546 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %547 unwind label %567

547:                                              ; preds = %545
  %548 = load ptr, ptr %546, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #7
  %549 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %550 unwind label %569

550:                                              ; preds = %547
  %551 = load ptr, ptr %549, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %47, ptr noundef nonnull align 8 dereferenceable(30) %551, i32 noundef 463)
          to label %552 unwind label %569

552:                                              ; preds = %550
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %548, ptr noundef nonnull align 8 dereferenceable(30) %47, ptr noundef nonnull @.str.132)
          to label %553 unwind label %569

553:                                              ; preds = %552
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #7
  br label %581

554:                                              ; preds = %526
  %555 = landingpad { ptr, i32 }
          cleanup
  br label %558

556:                                              ; preds = %534, %532, %529
  %557 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #7
  br label %558

558:                                              ; preds = %556, %554
  %.pn257 = phi { ptr, i32 } [ %557, %556 ], [ %555, %554 ]
  invoke void @__cxa_end_catch()
          to label %1434 unwind label %1438

559:                                              ; preds = %536
  %560 = landingpad { ptr, i32 }
          catch ptr null
  br label %566

561:                                              ; preds = %538
  %562 = landingpad { ptr, i32 }
          catch ptr null
  br label %565

563:                                              ; preds = %539
  %564 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #7
  br label %565

565:                                              ; preds = %563, %561
  %.pn259 = phi { ptr, i32 } [ %564, %563 ], [ %562, %561 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  br label %566

566:                                              ; preds = %565, %559
  %.pn259.pn = phi { ptr, i32 } [ %.pn259, %565 ], [ %560, %559 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #7
  br label %571

567:                                              ; preds = %545
  %568 = landingpad { ptr, i32 }
          catch ptr null
  br label %571

569:                                              ; preds = %552, %550, %547
  %570 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #7
  br label %571

571:                                              ; preds = %569, %567, %566
  %.pn260 = phi { ptr, i32 } [ %570, %569 ], [ %568, %567 ], [ %.pn259.pn, %566 ]
  %.32 = extractvalue { ptr, i32 } %.pn260, 0
  %572 = call ptr @__cxa_begin_catch(ptr %.32) #7
  %573 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %574 unwind label %601

574:                                              ; preds = %571
  %575 = load ptr, ptr %573, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %48) #7
  %576 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %577 unwind label %603

577:                                              ; preds = %574
  %578 = load ptr, ptr %576, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %48, ptr noundef nonnull align 8 dereferenceable(30) %578, i32 noundef 463)
          to label %579 unwind label %603

579:                                              ; preds = %577
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %575, ptr noundef nonnull align 8 dereferenceable(30) %48, ptr noundef nonnull @.str.133)
          to label %580 unwind label %603

580:                                              ; preds = %579
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #7
  invoke void @__cxa_end_catch()
          to label %581 unwind label %286

581:                                              ; preds = %542, %553, %580
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #7
  %582 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %51) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %583 unwind label %606

583:                                              ; preds = %581
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %53) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %54) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull @.str.107, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %584 unwind label %608

584:                                              ; preds = %583
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %55) #7
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %52, ptr nonnull %53, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %585 unwind label %610

585:                                              ; preds = %584
  invoke void @_ZN14HtnTermFactory21CreateConstantFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS5_SaIS5_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %49, ptr noundef nonnull align 8 dereferenceable(33088) %582, ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull %52)
          to label %586 unwind label %612

586:                                              ; preds = %585
  %587 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %49) #7
  %588 = invoke noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72) %587)
          to label %589 unwind label %614

589:                                              ; preds = %586
  %590 = icmp eq i32 %588, 4
  %591 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %590)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #7
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #7
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #7
  br i1 %591, label %632, label %592

592:                                              ; preds = %589
  %593 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %594 unwind label %618

594:                                              ; preds = %592
  %595 = load ptr, ptr %593, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %56) #7
  %596 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %597 unwind label %620

597:                                              ; preds = %594
  %598 = load ptr, ptr %596, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %56, ptr noundef nonnull align 8 dereferenceable(30) %598, i32 noundef 464)
          to label %599 unwind label %620

599:                                              ; preds = %597
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %595, ptr noundef nonnull align 8 dereferenceable(30) %56, ptr noundef nonnull @.str.134)
          to label %600 unwind label %620

600:                                              ; preds = %599
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #7
  br label %632

601:                                              ; preds = %571
  %602 = landingpad { ptr, i32 }
          cleanup
  br label %605

603:                                              ; preds = %579, %577, %574
  %604 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #7
  br label %605

605:                                              ; preds = %603, %601
  %.pn261 = phi { ptr, i32 } [ %604, %603 ], [ %602, %601 ]
  invoke void @__cxa_end_catch()
          to label %1434 unwind label %1438

606:                                              ; preds = %581
  %607 = landingpad { ptr, i32 }
          catch ptr null
  br label %617

608:                                              ; preds = %583
  %609 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit426

610:                                              ; preds = %584
  %611 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit426.loopexit

612:                                              ; preds = %585
  %613 = landingpad { ptr, i32 }
          catch ptr null
  br label %616

614:                                              ; preds = %586
  %615 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #7
  br label %616

616:                                              ; preds = %614, %612
  %.pn263 = phi { ptr, i32 } [ %615, %614 ], [ %613, %612 ]
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #7
  br label %.loopexit426.loopexit

.loopexit426.loopexit:                            ; preds = %616, %610
  %.pn263.pn = phi { ptr, i32 } [ %.pn263, %616 ], [ %611, %610 ]
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  br label %.loopexit426

.loopexit426:                                     ; preds = %.loopexit426.loopexit, %608
  %.pn263.pn.pn = phi { ptr, i32 } [ %609, %608 ], [ %.pn263.pn, %.loopexit426.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  br label %617

617:                                              ; preds = %.loopexit426, %606
  %.pn263.pn.pn.pn = phi { ptr, i32 } [ %.pn263.pn.pn, %.loopexit426 ], [ %607, %606 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #7
  br label %622

618:                                              ; preds = %592
  %619 = landingpad { ptr, i32 }
          catch ptr null
  br label %622

620:                                              ; preds = %599, %597, %594
  %621 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #7
  br label %622

622:                                              ; preds = %620, %618, %617
  %.pn264 = phi { ptr, i32 } [ %621, %620 ], [ %619, %618 ], [ %.pn263.pn.pn.pn, %617 ]
  %.38 = extractvalue { ptr, i32 } %.pn264, 0
  %623 = call ptr @__cxa_begin_catch(ptr %.38) #7
  %624 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %625 unwind label %662

625:                                              ; preds = %622
  %626 = load ptr, ptr %624, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %57) #7
  %627 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %628 unwind label %664

628:                                              ; preds = %625
  %629 = load ptr, ptr %627, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %57, ptr noundef nonnull align 8 dereferenceable(30) %629, i32 noundef 464)
          to label %630 unwind label %664

630:                                              ; preds = %628
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %626, ptr noundef nonnull align 8 dereferenceable(30) %57, ptr noundef nonnull @.str.135)
          to label %631 unwind label %664

631:                                              ; preds = %630
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #7
  invoke void @__cxa_end_catch()
          to label %632 unwind label %286

632:                                              ; preds = %589, %600, %631
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %58) #7
  %633 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %59) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %60) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull @.str.136, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %634 unwind label %667

634:                                              ; preds = %632
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %62) #7
  %635 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %63) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %64) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %636 unwind label %.thread

636:                                              ; preds = %634
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %62, ptr noundef nonnull align 8 dereferenceable(33088) %635, ptr noundef nonnull align 8 dereferenceable(32) %63)
          to label %637 unwind label %670

637:                                              ; preds = %636
  %638 = getelementptr inbounds i8, ptr %62, i64 16
  %639 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %65) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %66) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull @.str.137, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %640 unwind label %672

640:                                              ; preds = %637
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %638, ptr noundef nonnull align 8 dereferenceable(33088) %639, ptr noundef nonnull align 8 dereferenceable(32) %65)
          to label %641 unwind label %674

641:                                              ; preds = %640
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %67) #7
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %61, ptr nonnull %62, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %642 unwind label %676

642:                                              ; preds = %641
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %58, ptr noundef nonnull align 8 dereferenceable(33088) %633, ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull %61)
          to label %643 unwind label %678

643:                                              ; preds = %642
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #7
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #7
  %644 = getelementptr inbounds i8, ptr %62, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %644) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %68) #7
  %645 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %58) #7
  %646 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %68, ptr noundef nonnull align 8 dereferenceable(72) %645, ptr noundef %646)
          to label %647 unwind label %689

647:                                              ; preds = %643
  %648 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %68) #7
  %649 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  %650 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %648, ptr noundef nonnull align 8 dereferenceable(72) %649)
          to label %651 unwind label %691

651:                                              ; preds = %647
  %652 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %650)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %68) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %68) #7
  br i1 %652, label %708, label %653

653:                                              ; preds = %651
  %654 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %655 unwind label %694

655:                                              ; preds = %653
  %656 = load ptr, ptr %654, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %69) #7
  %657 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %658 unwind label %696

658:                                              ; preds = %655
  %659 = load ptr, ptr %657, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %69, ptr noundef nonnull align 8 dereferenceable(30) %659, i32 noundef 471)
          to label %660 unwind label %696

660:                                              ; preds = %658
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %656, ptr noundef nonnull align 8 dereferenceable(30) %69, ptr noundef nonnull @.str.138)
          to label %661 unwind label %696

661:                                              ; preds = %660
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %69) #7
  br label %708

662:                                              ; preds = %622
  %663 = landingpad { ptr, i32 }
          cleanup
  br label %666

664:                                              ; preds = %630, %628, %625
  %665 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #7
  br label %666

666:                                              ; preds = %664, %662
  %.pn265 = phi { ptr, i32 } [ %665, %664 ], [ %663, %662 ]
  invoke void @__cxa_end_catch()
          to label %1434 unwind label %1438

667:                                              ; preds = %632
  %668 = landingpad { ptr, i32 }
          cleanup
  br label %688

.thread:                                          ; preds = %634
  %669 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #7
  br label %.loopexit424

670:                                              ; preds = %636
  %671 = landingpad { ptr, i32 }
          cleanup
  br label %683

672:                                              ; preds = %637
  %673 = landingpad { ptr, i32 }
          cleanup
  br label %682

674:                                              ; preds = %640
  %675 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit425

676:                                              ; preds = %641
  %677 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit425.loopexit

678:                                              ; preds = %642
  %679 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #7
  br label %.loopexit425.loopexit

.loopexit425.loopexit:                            ; preds = %678, %676
  %.pn267 = phi { ptr, i32 } [ %679, %678 ], [ %677, %676 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #7
  %680 = getelementptr inbounds i8, ptr %62, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %680) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #7
  br label %.loopexit425

.loopexit425:                                     ; preds = %.loopexit425.loopexit, %674
  %681 = phi i1 [ false, %674 ], [ true, %.loopexit425.loopexit ]
  %.pn267.pn = phi { ptr, i32 } [ %675, %674 ], [ %.pn267, %.loopexit425.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #7
  br label %682

682:                                              ; preds = %.loopexit425, %672
  %.1190 = phi i1 [ %681, %.loopexit425 ], [ false, %672 ]
  %.pn267.pn.pn = phi { ptr, i32 } [ %.pn267.pn, %.loopexit425 ], [ %673, %672 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #7
  br label %683

683:                                              ; preds = %670, %682
  %.2191 = phi i1 [ %.1190, %682 ], [ false, %670 ]
  %.0187 = phi ptr [ %638, %682 ], [ %62, %670 ]
  %.pn267.pn.pn.pn = phi { ptr, i32 } [ %.pn267.pn.pn, %682 ], [ %671, %670 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #7
  %684 = icmp eq ptr %62, %.0187
  %or.cond4 = select i1 %.2191, i1 true, i1 %684
  br i1 %or.cond4, label %.loopexit424, label %.preheader423

.preheader423:                                    ; preds = %683, %.preheader423
  %685 = phi ptr [ %686, %.preheader423 ], [ %.0187, %683 ]
  %686 = getelementptr inbounds i8, ptr %685, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %686) #7
  %687 = icmp eq ptr %686, %62
  br i1 %687, label %.loopexit424, label %.preheader423

.loopexit424:                                     ; preds = %.preheader423, %.thread, %683
  %.pn267.pn.pn.pn.pn382 = phi { ptr, i32 } [ %669, %.thread ], [ %.pn267.pn.pn.pn, %683 ], [ %.pn267.pn.pn.pn, %.preheader423 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  br label %688

688:                                              ; preds = %.loopexit424, %667
  %.pn267.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn267.pn.pn.pn.pn382, %.loopexit424 ], [ %668, %667 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #7
  br label %1433

689:                                              ; preds = %643
  %690 = landingpad { ptr, i32 }
          catch ptr null
  br label %693

691:                                              ; preds = %647
  %692 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %68) #7
  br label %693

693:                                              ; preds = %691, %689
  %.pn274 = phi { ptr, i32 } [ %692, %691 ], [ %690, %689 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %68) #7
  br label %698

694:                                              ; preds = %653
  %695 = landingpad { ptr, i32 }
          catch ptr null
  br label %698

696:                                              ; preds = %660, %658, %655
  %697 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %69) #7
  br label %698

698:                                              ; preds = %696, %694, %693
  %.pn275 = phi { ptr, i32 } [ %697, %696 ], [ %695, %694 ], [ %.pn274, %693 ]
  %.47 = extractvalue { ptr, i32 } %.pn275, 0
  %699 = call ptr @__cxa_begin_catch(ptr %.47) #7
  %700 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %701 unwind label %739

701:                                              ; preds = %698
  %702 = load ptr, ptr %700, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #7
  %703 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %704 unwind label %741

704:                                              ; preds = %701
  %705 = load ptr, ptr %703, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %70, ptr noundef nonnull align 8 dereferenceable(30) %705, i32 noundef 471)
          to label %706 unwind label %741

706:                                              ; preds = %704
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %702, ptr noundef nonnull align 8 dereferenceable(30) %70, ptr noundef nonnull @.str.139)
          to label %707 unwind label %741

707:                                              ; preds = %706
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #7
  invoke void @__cxa_end_catch()
          to label %708 unwind label %743

708:                                              ; preds = %651, %661, %707
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %71) #7
  %709 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %72) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %73) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull @.str.136, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %710 unwind label %746

710:                                              ; preds = %708
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %75) #7
  %711 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %76) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %77) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %712 unwind label %.thread383

712:                                              ; preds = %710
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %75, ptr noundef nonnull align 8 dereferenceable(33088) %711, ptr noundef nonnull align 8 dereferenceable(32) %76)
          to label %713 unwind label %749

713:                                              ; preds = %712
  %714 = getelementptr inbounds i8, ptr %75, i64 16
  %715 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %78) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %79) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef nonnull @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %79)
          to label %716 unwind label %751

716:                                              ; preds = %713
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %714, ptr noundef nonnull align 8 dereferenceable(33088) %715, ptr noundef nonnull align 8 dereferenceable(32) %78)
          to label %717 unwind label %753

717:                                              ; preds = %716
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %80) #7
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #7
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %74, ptr nonnull %75, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %80)
          to label %718 unwind label %755

718:                                              ; preds = %717
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %71, ptr noundef nonnull align 8 dereferenceable(33088) %709, ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull %74)
          to label %719 unwind label %757

719:                                              ; preds = %718
  %720 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %71) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %71) #7
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %74) #7
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #7
  %721 = getelementptr inbounds i8, ptr %75, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %721) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %79) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %78) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %73) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %81) #7
  %722 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %58) #7
  %723 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %81, ptr noundef nonnull align 8 dereferenceable(72) %722, ptr noundef %723)
          to label %724 unwind label %768

724:                                              ; preds = %719
  %725 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %81) #7
  %726 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  %727 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %725, ptr noundef nonnull align 8 dereferenceable(72) %726)
          to label %728 unwind label %770

728:                                              ; preds = %724
  %729 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %727)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #7
  br i1 %729, label %787, label %730

730:                                              ; preds = %728
  %731 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %732 unwind label %773

732:                                              ; preds = %730
  %733 = load ptr, ptr %731, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %82) #7
  %734 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %735 unwind label %775

735:                                              ; preds = %732
  %736 = load ptr, ptr %734, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %82, ptr noundef nonnull align 8 dereferenceable(30) %736, i32 noundef 478)
          to label %737 unwind label %775

737:                                              ; preds = %735
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %733, ptr noundef nonnull align 8 dereferenceable(30) %82, ptr noundef nonnull @.str.138)
          to label %738 unwind label %775

738:                                              ; preds = %737
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #7
  br label %787

739:                                              ; preds = %698
  %740 = landingpad { ptr, i32 }
          cleanup
  br label %745

741:                                              ; preds = %706, %704, %701
  %742 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #7
  br label %745

743:                                              ; preds = %940, %863, %786, %707
  %744 = landingpad { ptr, i32 }
          cleanup
  br label %1432

745:                                              ; preds = %741, %739
  %.pn276 = phi { ptr, i32 } [ %742, %741 ], [ %740, %739 ]
  invoke void @__cxa_end_catch()
          to label %1432 unwind label %1438

746:                                              ; preds = %708
  %747 = landingpad { ptr, i32 }
          cleanup
  br label %767

.thread383:                                       ; preds = %710
  %748 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #7
  br label %.loopexit421

749:                                              ; preds = %712
  %750 = landingpad { ptr, i32 }
          cleanup
  br label %762

751:                                              ; preds = %713
  %752 = landingpad { ptr, i32 }
          cleanup
  br label %761

753:                                              ; preds = %716
  %754 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit422

755:                                              ; preds = %717
  %756 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit422.loopexit

757:                                              ; preds = %718
  %758 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %74) #7
  br label %.loopexit422.loopexit

.loopexit422.loopexit:                            ; preds = %757, %755
  %.pn278 = phi { ptr, i32 } [ %758, %757 ], [ %756, %755 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #7
  %759 = getelementptr inbounds i8, ptr %75, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %759) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #7
  br label %.loopexit422

.loopexit422:                                     ; preds = %.loopexit422.loopexit, %753
  %760 = phi i1 [ false, %753 ], [ true, %.loopexit422.loopexit ]
  %.pn278.pn = phi { ptr, i32 } [ %754, %753 ], [ %.pn278, %.loopexit422.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #7
  br label %761

761:                                              ; preds = %.loopexit422, %751
  %.1197 = phi i1 [ %760, %.loopexit422 ], [ false, %751 ]
  %.pn278.pn.pn = phi { ptr, i32 } [ %.pn278.pn, %.loopexit422 ], [ %752, %751 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %79) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %78) #7
  br label %762

762:                                              ; preds = %749, %761
  %.2198 = phi i1 [ %.1197, %761 ], [ false, %749 ]
  %.0194 = phi ptr [ %714, %761 ], [ %75, %749 ]
  %.pn278.pn.pn.pn = phi { ptr, i32 } [ %.pn278.pn.pn, %761 ], [ %750, %749 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #7
  %763 = icmp eq ptr %75, %.0194
  %or.cond7 = select i1 %.2198, i1 true, i1 %763
  br i1 %or.cond7, label %.loopexit421, label %.preheader420

.preheader420:                                    ; preds = %762, %.preheader420
  %764 = phi ptr [ %765, %.preheader420 ], [ %.0194, %762 ]
  %765 = getelementptr inbounds i8, ptr %764, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %765) #7
  %766 = icmp eq ptr %765, %75
  br i1 %766, label %.loopexit421, label %.preheader420

.loopexit421:                                     ; preds = %.preheader420, %.thread383, %762
  %.pn278.pn.pn.pn.pn388 = phi { ptr, i32 } [ %748, %.thread383 ], [ %.pn278.pn.pn.pn, %762 ], [ %.pn278.pn.pn.pn, %.preheader420 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #7
  br label %767

767:                                              ; preds = %.loopexit421, %746
  %.pn278.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn278.pn.pn.pn.pn388, %.loopexit421 ], [ %747, %746 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %73) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #7
  br label %1432

768:                                              ; preds = %719
  %769 = landingpad { ptr, i32 }
          catch ptr null
  br label %772

770:                                              ; preds = %724
  %771 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #7
  br label %772

772:                                              ; preds = %770, %768
  %.pn285 = phi { ptr, i32 } [ %771, %770 ], [ %769, %768 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #7
  br label %777

773:                                              ; preds = %730
  %774 = landingpad { ptr, i32 }
          catch ptr null
  br label %777

775:                                              ; preds = %737, %735, %732
  %776 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #7
  br label %777

777:                                              ; preds = %775, %773, %772
  %.pn286 = phi { ptr, i32 } [ %776, %775 ], [ %774, %773 ], [ %.pn285, %772 ]
  %.56 = extractvalue { ptr, i32 } %.pn286, 0
  %778 = call ptr @__cxa_begin_catch(ptr %.56) #7
  %779 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %780 unwind label %818

780:                                              ; preds = %777
  %781 = load ptr, ptr %779, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %83) #7
  %782 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %783 unwind label %820

783:                                              ; preds = %780
  %784 = load ptr, ptr %782, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %83, ptr noundef nonnull align 8 dereferenceable(30) %784, i32 noundef 478)
          to label %785 unwind label %820

785:                                              ; preds = %783
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %781, ptr noundef nonnull align 8 dereferenceable(30) %83, ptr noundef nonnull @.str.139)
          to label %786 unwind label %820

786:                                              ; preds = %785
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #7
  invoke void @__cxa_end_catch()
          to label %787 unwind label %743

787:                                              ; preds = %728, %738, %786
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %84) #7
  %788 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %85) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %86) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull @.str.136, ptr noundef nonnull align 1 dereferenceable(1) %86)
          to label %789 unwind label %823

789:                                              ; preds = %787
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %88) #7
  %790 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %89) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %90) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull @.str.137, ptr noundef nonnull align 1 dereferenceable(1) %90)
          to label %791 unwind label %.thread389

791:                                              ; preds = %789
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %88, ptr noundef nonnull align 8 dereferenceable(33088) %790, ptr noundef nonnull align 8 dereferenceable(32) %89)
          to label %792 unwind label %826

792:                                              ; preds = %791
  %793 = getelementptr inbounds i8, ptr %88, i64 16
  %794 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %91) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %92) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %92)
          to label %795 unwind label %828

795:                                              ; preds = %792
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %793, ptr noundef nonnull align 8 dereferenceable(33088) %794, ptr noundef nonnull align 8 dereferenceable(32) %91)
          to label %796 unwind label %830

796:                                              ; preds = %795
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %93) #7
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #7
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %87, ptr nonnull %88, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %93)
          to label %797 unwind label %832

797:                                              ; preds = %796
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %84, ptr noundef nonnull align 8 dereferenceable(33088) %788, ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull %87)
          to label %798 unwind label %834

798:                                              ; preds = %797
  %799 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %84) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #7
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %87) #7
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %93) #7
  %800 = getelementptr inbounds i8, ptr %88, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %800) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %92) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %91) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %90) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %89) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %88) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %86) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %85) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %84) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %94) #7
  %801 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %58) #7
  %802 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %94, ptr noundef nonnull align 8 dereferenceable(72) %801, ptr noundef %802)
          to label %803 unwind label %845

803:                                              ; preds = %798
  %804 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %94) #7
  %805 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  %806 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %804, ptr noundef nonnull align 8 dereferenceable(72) %805)
          to label %807 unwind label %847

807:                                              ; preds = %803
  %808 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %806)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %94) #7
  br i1 %808, label %864, label %809

809:                                              ; preds = %807
  %810 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %811 unwind label %850

811:                                              ; preds = %809
  %812 = load ptr, ptr %810, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %95) #7
  %813 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %814 unwind label %852

814:                                              ; preds = %811
  %815 = load ptr, ptr %813, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %95, ptr noundef nonnull align 8 dereferenceable(30) %815, i32 noundef 485)
          to label %816 unwind label %852

816:                                              ; preds = %814
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %812, ptr noundef nonnull align 8 dereferenceable(30) %95, ptr noundef nonnull @.str.140)
          to label %817 unwind label %852

817:                                              ; preds = %816
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #7
  br label %864

818:                                              ; preds = %777
  %819 = landingpad { ptr, i32 }
          cleanup
  br label %822

820:                                              ; preds = %785, %783, %780
  %821 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #7
  br label %822

822:                                              ; preds = %820, %818
  %.pn287 = phi { ptr, i32 } [ %821, %820 ], [ %819, %818 ]
  invoke void @__cxa_end_catch()
          to label %1432 unwind label %1438

823:                                              ; preds = %787
  %824 = landingpad { ptr, i32 }
          cleanup
  br label %844

.thread389:                                       ; preds = %789
  %825 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %90) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %89) #7
  br label %.loopexit418

826:                                              ; preds = %791
  %827 = landingpad { ptr, i32 }
          cleanup
  br label %839

828:                                              ; preds = %792
  %829 = landingpad { ptr, i32 }
          cleanup
  br label %838

830:                                              ; preds = %795
  %831 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit419

832:                                              ; preds = %796
  %833 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit419.loopexit

834:                                              ; preds = %797
  %835 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %87) #7
  br label %.loopexit419.loopexit

.loopexit419.loopexit:                            ; preds = %834, %832
  %.pn289 = phi { ptr, i32 } [ %835, %834 ], [ %833, %832 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %93) #7
  %836 = getelementptr inbounds i8, ptr %88, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %836) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #7
  br label %.loopexit419

.loopexit419:                                     ; preds = %.loopexit419.loopexit, %830
  %837 = phi i1 [ false, %830 ], [ true, %.loopexit419.loopexit ]
  %.pn289.pn = phi { ptr, i32 } [ %831, %830 ], [ %.pn289, %.loopexit419.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #7
  br label %838

838:                                              ; preds = %.loopexit419, %828
  %.1204 = phi i1 [ %837, %.loopexit419 ], [ false, %828 ]
  %.pn289.pn.pn = phi { ptr, i32 } [ %.pn289.pn, %.loopexit419 ], [ %829, %828 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %92) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %91) #7
  br label %839

839:                                              ; preds = %826, %838
  %.2205 = phi i1 [ %.1204, %838 ], [ false, %826 ]
  %.0200 = phi ptr [ %793, %838 ], [ %88, %826 ]
  %.pn289.pn.pn.pn = phi { ptr, i32 } [ %.pn289.pn.pn, %838 ], [ %827, %826 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %90) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %89) #7
  %840 = icmp eq ptr %88, %.0200
  %or.cond10 = select i1 %.2205, i1 true, i1 %840
  br i1 %or.cond10, label %.loopexit418, label %.preheader417

.preheader417:                                    ; preds = %839, %.preheader417
  %841 = phi ptr [ %842, %.preheader417 ], [ %.0200, %839 ]
  %842 = getelementptr inbounds i8, ptr %841, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %842) #7
  %843 = icmp eq ptr %842, %88
  br i1 %843, label %.loopexit418, label %.preheader417

.loopexit418:                                     ; preds = %.preheader417, %.thread389, %839
  %.pn289.pn.pn.pn.pn394 = phi { ptr, i32 } [ %825, %.thread389 ], [ %.pn289.pn.pn.pn, %839 ], [ %.pn289.pn.pn.pn, %.preheader417 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %88) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #7
  br label %844

844:                                              ; preds = %.loopexit418, %823
  %.pn289.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn289.pn.pn.pn.pn394, %.loopexit418 ], [ %824, %823 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %86) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %85) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %84) #7
  br label %1432

845:                                              ; preds = %798
  %846 = landingpad { ptr, i32 }
          catch ptr null
  br label %849

847:                                              ; preds = %803
  %848 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #7
  br label %849

849:                                              ; preds = %847, %845
  %.pn296 = phi { ptr, i32 } [ %848, %847 ], [ %846, %845 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %94) #7
  br label %854

850:                                              ; preds = %809
  %851 = landingpad { ptr, i32 }
          catch ptr null
  br label %854

852:                                              ; preds = %816, %814, %811
  %853 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #7
  br label %854

854:                                              ; preds = %852, %850, %849
  %.pn297 = phi { ptr, i32 } [ %853, %852 ], [ %851, %850 ], [ %.pn296, %849 ]
  %.65 = extractvalue { ptr, i32 } %.pn297, 0
  %855 = call ptr @__cxa_begin_catch(ptr %.65) #7
  %856 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %857 unwind label %895

857:                                              ; preds = %854
  %858 = load ptr, ptr %856, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %96) #7
  %859 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %860 unwind label %897

860:                                              ; preds = %857
  %861 = load ptr, ptr %859, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %96, ptr noundef nonnull align 8 dereferenceable(30) %861, i32 noundef 485)
          to label %862 unwind label %897

862:                                              ; preds = %860
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %858, ptr noundef nonnull align 8 dereferenceable(30) %96, ptr noundef nonnull @.str.141)
          to label %863 unwind label %897

863:                                              ; preds = %862
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #7
  invoke void @__cxa_end_catch()
          to label %864 unwind label %743

864:                                              ; preds = %807, %817, %863
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %97) #7
  %865 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %98) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %99) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull @.str.142, ptr noundef nonnull align 1 dereferenceable(1) %99)
          to label %866 unwind label %900

866:                                              ; preds = %864
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %101) #7
  %867 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %102) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %103) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull @.str.143, ptr noundef nonnull align 1 dereferenceable(1) %103)
          to label %868 unwind label %.thread395

868:                                              ; preds = %866
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %101, ptr noundef nonnull align 8 dereferenceable(33088) %867, ptr noundef nonnull align 8 dereferenceable(32) %102)
          to label %869 unwind label %903

869:                                              ; preds = %868
  %870 = getelementptr inbounds i8, ptr %101, i64 16
  %871 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %104) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %105) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef nonnull @.str.144, ptr noundef nonnull align 1 dereferenceable(1) %105)
          to label %872 unwind label %905

872:                                              ; preds = %869
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %870, ptr noundef nonnull align 8 dereferenceable(33088) %871, ptr noundef nonnull align 8 dereferenceable(32) %104)
          to label %873 unwind label %907

873:                                              ; preds = %872
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %106) #7
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #7
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %100, ptr nonnull %101, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %106)
          to label %874 unwind label %909

874:                                              ; preds = %873
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %97, ptr noundef nonnull align 8 dereferenceable(33088) %865, ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull %100)
          to label %875 unwind label %911

875:                                              ; preds = %874
  %876 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %97) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %97) #7
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %100) #7
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %106) #7
  %877 = getelementptr inbounds i8, ptr %101, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %877) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %101) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %105) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %104) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %103) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %102) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %99) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %98) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %97) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %107) #7
  %878 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %58) #7
  %879 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %107, ptr noundef nonnull align 8 dereferenceable(72) %878, ptr noundef %879)
          to label %880 unwind label %922

880:                                              ; preds = %875
  %881 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %107) #7
  %882 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  %883 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %881, ptr noundef nonnull align 8 dereferenceable(72) %882)
          to label %884 unwind label %924

884:                                              ; preds = %880
  %885 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %883)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %107) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %107) #7
  br i1 %885, label %941, label %886

886:                                              ; preds = %884
  %887 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %888 unwind label %927

888:                                              ; preds = %886
  %889 = load ptr, ptr %887, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %108) #7
  %890 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %891 unwind label %929

891:                                              ; preds = %888
  %892 = load ptr, ptr %890, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %108, ptr noundef nonnull align 8 dereferenceable(30) %892, i32 noundef 492)
          to label %893 unwind label %929

893:                                              ; preds = %891
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %889, ptr noundef nonnull align 8 dereferenceable(30) %108, ptr noundef nonnull @.str.138)
          to label %894 unwind label %929

894:                                              ; preds = %893
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %108) #7
  br label %941

895:                                              ; preds = %854
  %896 = landingpad { ptr, i32 }
          cleanup
  br label %899

897:                                              ; preds = %862, %860, %857
  %898 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #7
  br label %899

899:                                              ; preds = %897, %895
  %.pn298 = phi { ptr, i32 } [ %898, %897 ], [ %896, %895 ]
  invoke void @__cxa_end_catch()
          to label %1432 unwind label %1438

900:                                              ; preds = %864
  %901 = landingpad { ptr, i32 }
          cleanup
  br label %921

.thread395:                                       ; preds = %866
  %902 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %103) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %102) #7
  br label %.loopexit415

903:                                              ; preds = %868
  %904 = landingpad { ptr, i32 }
          cleanup
  br label %916

905:                                              ; preds = %869
  %906 = landingpad { ptr, i32 }
          cleanup
  br label %915

907:                                              ; preds = %872
  %908 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit416

909:                                              ; preds = %873
  %910 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit416.loopexit

911:                                              ; preds = %874
  %912 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %100) #7
  br label %.loopexit416.loopexit

.loopexit416.loopexit:                            ; preds = %911, %909
  %.pn300 = phi { ptr, i32 } [ %912, %911 ], [ %910, %909 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %106) #7
  %913 = getelementptr inbounds i8, ptr %101, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %913) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %101) #7
  br label %.loopexit416

.loopexit416:                                     ; preds = %.loopexit416.loopexit, %907
  %914 = phi i1 [ false, %907 ], [ true, %.loopexit416.loopexit ]
  %.pn300.pn = phi { ptr, i32 } [ %908, %907 ], [ %.pn300, %.loopexit416.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #7
  br label %915

915:                                              ; preds = %.loopexit416, %905
  %.1210 = phi i1 [ %914, %.loopexit416 ], [ false, %905 ]
  %.pn300.pn.pn = phi { ptr, i32 } [ %.pn300.pn, %.loopexit416 ], [ %906, %905 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %105) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %104) #7
  br label %916

916:                                              ; preds = %903, %915
  %.2211 = phi i1 [ %.1210, %915 ], [ false, %903 ]
  %.0207 = phi ptr [ %870, %915 ], [ %101, %903 ]
  %.pn300.pn.pn.pn = phi { ptr, i32 } [ %.pn300.pn.pn, %915 ], [ %904, %903 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %103) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %102) #7
  %917 = icmp eq ptr %101, %.0207
  %or.cond13 = select i1 %.2211, i1 true, i1 %917
  br i1 %or.cond13, label %.loopexit415, label %.preheader414

.preheader414:                                    ; preds = %916, %.preheader414
  %918 = phi ptr [ %919, %.preheader414 ], [ %.0207, %916 ]
  %919 = getelementptr inbounds i8, ptr %918, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %919) #7
  %920 = icmp eq ptr %919, %101
  br i1 %920, label %.loopexit415, label %.preheader414

.loopexit415:                                     ; preds = %.preheader414, %.thread395, %916
  %.pn300.pn.pn.pn.pn400 = phi { ptr, i32 } [ %902, %.thread395 ], [ %.pn300.pn.pn.pn, %916 ], [ %.pn300.pn.pn.pn, %.preheader414 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #7
  br label %921

921:                                              ; preds = %.loopexit415, %900
  %.pn300.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn300.pn.pn.pn.pn400, %.loopexit415 ], [ %901, %900 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %99) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %98) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %97) #7
  br label %1432

922:                                              ; preds = %875
  %923 = landingpad { ptr, i32 }
          catch ptr null
  br label %926

924:                                              ; preds = %880
  %925 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %107) #7
  br label %926

926:                                              ; preds = %924, %922
  %.pn307 = phi { ptr, i32 } [ %925, %924 ], [ %923, %922 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %107) #7
  br label %931

927:                                              ; preds = %886
  %928 = landingpad { ptr, i32 }
          catch ptr null
  br label %931

929:                                              ; preds = %893, %891, %888
  %930 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %108) #7
  br label %931

931:                                              ; preds = %929, %927, %926
  %.pn308 = phi { ptr, i32 } [ %930, %929 ], [ %928, %927 ], [ %.pn307, %926 ]
  %.74 = extractvalue { ptr, i32 } %.pn308, 0
  %932 = call ptr @__cxa_begin_catch(ptr %.74) #7
  %933 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %934 unwind label %969

934:                                              ; preds = %931
  %935 = load ptr, ptr %933, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %109) #7
  %936 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %937 unwind label %971

937:                                              ; preds = %934
  %938 = load ptr, ptr %936, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %109, ptr noundef nonnull align 8 dereferenceable(30) %938, i32 noundef 492)
          to label %939 unwind label %971

939:                                              ; preds = %937
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %935, ptr noundef nonnull align 8 dereferenceable(30) %109, ptr noundef nonnull @.str.139)
          to label %940 unwind label %971

940:                                              ; preds = %939
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %109) #7
  invoke void @__cxa_end_catch()
          to label %941 unwind label %743

941:                                              ; preds = %884, %894, %940
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %110) #7
  call void @_ZNSt10shared_ptrI7HtnTermEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %111) #7
  %942 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %112) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %113) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef nonnull @.str.145, ptr noundef nonnull align 1 dereferenceable(1) %113)
          to label %943 unwind label %974

943:                                              ; preds = %941
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %115) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %116) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef nonnull @.str.117, ptr noundef nonnull align 1 dereferenceable(1) %116)
          to label %944 unwind label %976

944:                                              ; preds = %943
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %117) #7
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %117) #7
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %114, ptr nonnull %115, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %117)
          to label %945 unwind label %978

945:                                              ; preds = %944
  invoke void @_ZN14HtnTermFactory21CreateConstantFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS5_SaIS5_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %111, ptr noundef nonnull align 8 dereferenceable(33088) %942, ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef nonnull %114)
          to label %946 unwind label %980

946:                                              ; preds = %945
  %947 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %111) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %111) #7
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %114) #7
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %117) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %117) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %116) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %115) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %113) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %112) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %111) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %118) #7
  %948 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %58) #7
  %949 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %118, ptr noundef nonnull align 8 dereferenceable(72) %948, ptr noundef %949)
          to label %950 unwind label %983

950:                                              ; preds = %946
  %951 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %110, ptr noundef nonnull align 8 dereferenceable(16) %118) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %118) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %118) #7
  %952 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %110) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %119) #7
  %953 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %120) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %121) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %121) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef nonnull @.str.146, ptr noundef nonnull align 1 dereferenceable(1) %121)
          to label %954 unwind label %985

954:                                              ; preds = %950
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %119, ptr noundef nonnull align 8 dereferenceable(33088) %953, ptr noundef nonnull align 8 dereferenceable(32) %120)
          to label %955 unwind label %987

955:                                              ; preds = %954
  %956 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %119) #7
  %957 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %952, ptr noundef nonnull align 8 dereferenceable(72) %956)
          to label %958 unwind label %989

958:                                              ; preds = %955
  %959 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %957)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %119) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %121) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %121) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %120) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %119) #7
  br i1 %959, label %1007, label %960

960:                                              ; preds = %958
  %961 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %962 unwind label %993

962:                                              ; preds = %960
  %963 = load ptr, ptr %961, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %122) #7
  %964 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %965 unwind label %995

965:                                              ; preds = %962
  %966 = load ptr, ptr %964, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %122, ptr noundef nonnull align 8 dereferenceable(30) %966, i32 noundef 499)
          to label %967 unwind label %995

967:                                              ; preds = %965
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %963, ptr noundef nonnull align 8 dereferenceable(30) %122, ptr noundef nonnull @.str.147)
          to label %968 unwind label %995

968:                                              ; preds = %967
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %122) #7
  br label %1007

969:                                              ; preds = %931
  %970 = landingpad { ptr, i32 }
          cleanup
  br label %973

971:                                              ; preds = %939, %937, %934
  %972 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %109) #7
  br label %973

973:                                              ; preds = %971, %969
  %.pn309 = phi { ptr, i32 } [ %972, %971 ], [ %970, %969 ]
  invoke void @__cxa_end_catch()
          to label %1432 unwind label %1438

974:                                              ; preds = %941
  %975 = landingpad { ptr, i32 }
          cleanup
  br label %982

976:                                              ; preds = %943
  %977 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit413

978:                                              ; preds = %944
  %979 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit413.loopexit

980:                                              ; preds = %945
  %981 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %114) #7
  br label %.loopexit413.loopexit

.loopexit413.loopexit:                            ; preds = %980, %978
  %.pn311 = phi { ptr, i32 } [ %981, %980 ], [ %979, %978 ]
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %117) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %117) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #7
  br label %.loopexit413

.loopexit413:                                     ; preds = %.loopexit413.loopexit, %976
  %.pn311.pn = phi { ptr, i32 } [ %977, %976 ], [ %.pn311, %.loopexit413.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %116) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %115) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #7
  br label %982

982:                                              ; preds = %.loopexit413, %974
  %.pn311.pn.pn = phi { ptr, i32 } [ %.pn311.pn, %.loopexit413 ], [ %975, %974 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %113) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %112) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %111) #7
  br label %1431

983:                                              ; preds = %946
  %984 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %118) #7
  br label %1431

985:                                              ; preds = %950
  %986 = landingpad { ptr, i32 }
          catch ptr null
  br label %992

987:                                              ; preds = %954
  %988 = landingpad { ptr, i32 }
          catch ptr null
  br label %991

989:                                              ; preds = %955
  %990 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %119) #7
  br label %991

991:                                              ; preds = %989, %987
  %.pn315 = phi { ptr, i32 } [ %990, %989 ], [ %988, %987 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #7
  br label %992

992:                                              ; preds = %991, %985
  %.pn315.pn = phi { ptr, i32 } [ %.pn315, %991 ], [ %986, %985 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %121) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %121) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %120) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %119) #7
  br label %997

993:                                              ; preds = %960
  %994 = landingpad { ptr, i32 }
          catch ptr null
  br label %997

995:                                              ; preds = %967, %965, %962
  %996 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %122) #7
  br label %997

997:                                              ; preds = %995, %993, %992
  %.pn316 = phi { ptr, i32 } [ %996, %995 ], [ %994, %993 ], [ %.pn315.pn, %992 ]
  %.81 = extractvalue { ptr, i32 } %.pn316, 0
  %998 = call ptr @__cxa_begin_catch(ptr %.81) #7
  %999 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1000 unwind label %1035

1000:                                             ; preds = %997
  %1001 = load ptr, ptr %999, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %123) #7
  %1002 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1003 unwind label %1037

1003:                                             ; preds = %1000
  %1004 = load ptr, ptr %1002, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %123, ptr noundef nonnull align 8 dereferenceable(30) %1004, i32 noundef 499)
          to label %1005 unwind label %1037

1005:                                             ; preds = %1003
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1001, ptr noundef nonnull align 8 dereferenceable(30) %123, ptr noundef nonnull @.str.148)
          to label %1006 unwind label %1037

1006:                                             ; preds = %1005
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %123) #7
  invoke void @__cxa_end_catch()
          to label %1007 unwind label %1039

1007:                                             ; preds = %958, %968, %1006
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %124) #7
  %1008 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %125) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %126) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef nonnull @.str.145, ptr noundef nonnull align 1 dereferenceable(1) %126)
          to label %1009 unwind label %1042

1009:                                             ; preds = %1007
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %128) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %129) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %129) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %128, ptr noundef nonnull @.str.149, ptr noundef nonnull align 1 dereferenceable(1) %129)
          to label %1010 unwind label %1044

1010:                                             ; preds = %1009
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %130) #7
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #7
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %127, ptr nonnull %128, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %130)
          to label %1011 unwind label %1046

1011:                                             ; preds = %1010
  invoke void @_ZN14HtnTermFactory21CreateConstantFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS5_SaIS5_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %124, ptr noundef nonnull align 8 dereferenceable(33088) %1008, ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef nonnull %127)
          to label %1012 unwind label %1048

1012:                                             ; preds = %1011
  %1013 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %124) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %124) #7
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %127) #7
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %130) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %129) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %129) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %128) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %126) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %125) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %124) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %131) #7
  %1014 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %58) #7
  %1015 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %131, ptr noundef nonnull align 8 dereferenceable(72) %1014, ptr noundef %1015)
          to label %1016 unwind label %1051

1016:                                             ; preds = %1012
  %1017 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %110, ptr noundef nonnull align 8 dereferenceable(16) %131) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %131) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %131) #7
  %1018 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %110) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %132) #7
  %1019 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %133) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %134) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %134) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %133, ptr noundef nonnull @.str.150, ptr noundef nonnull align 1 dereferenceable(1) %134)
          to label %1020 unwind label %1053

1020:                                             ; preds = %1016
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %132, ptr noundef nonnull align 8 dereferenceable(33088) %1019, ptr noundef nonnull align 8 dereferenceable(32) %133)
          to label %1021 unwind label %1055

1021:                                             ; preds = %1020
  %1022 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %132) #7
  %1023 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %1018, ptr noundef nonnull align 8 dereferenceable(72) %1022)
          to label %1024 unwind label %1057

1024:                                             ; preds = %1021
  %1025 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1023)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %132) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %134) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %134) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %133) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %132) #7
  br i1 %1025, label %1075, label %1026

1026:                                             ; preds = %1024
  %1027 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1028 unwind label %1061

1028:                                             ; preds = %1026
  %1029 = load ptr, ptr %1027, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %135) #7
  %1030 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1031 unwind label %1063

1031:                                             ; preds = %1028
  %1032 = load ptr, ptr %1030, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %135, ptr noundef nonnull align 8 dereferenceable(30) %1032, i32 noundef 503)
          to label %1033 unwind label %1063

1033:                                             ; preds = %1031
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1029, ptr noundef nonnull align 8 dereferenceable(30) %135, ptr noundef nonnull @.str.151)
          to label %1034 unwind label %1063

1034:                                             ; preds = %1033
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %135) #7
  br label %1075

1035:                                             ; preds = %997
  %1036 = landingpad { ptr, i32 }
          cleanup
  br label %1041

1037:                                             ; preds = %1005, %1003, %1000
  %1038 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %123) #7
  br label %1041

1039:                                             ; preds = %1424, %1338, %1272, %1206, %1140, %1074, %1006
  %1040 = landingpad { ptr, i32 }
          cleanup
  br label %1431

1041:                                             ; preds = %1037, %1035
  %.pn317 = phi { ptr, i32 } [ %1038, %1037 ], [ %1036, %1035 ]
  invoke void @__cxa_end_catch()
          to label %1431 unwind label %1438

1042:                                             ; preds = %1007
  %1043 = landingpad { ptr, i32 }
          cleanup
  br label %1050

1044:                                             ; preds = %1009
  %1045 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit412

1046:                                             ; preds = %1010
  %1047 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit412.loopexit

1048:                                             ; preds = %1011
  %1049 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %127) #7
  br label %.loopexit412.loopexit

.loopexit412.loopexit:                            ; preds = %1048, %1046
  %.pn319 = phi { ptr, i32 } [ %1049, %1048 ], [ %1047, %1046 ]
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %130) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #7
  br label %.loopexit412

.loopexit412:                                     ; preds = %.loopexit412.loopexit, %1044
  %.pn319.pn = phi { ptr, i32 } [ %1045, %1044 ], [ %.pn319, %.loopexit412.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %129) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %129) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %128) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #7
  br label %1050

1050:                                             ; preds = %.loopexit412, %1042
  %.pn319.pn.pn = phi { ptr, i32 } [ %.pn319.pn, %.loopexit412 ], [ %1043, %1042 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %126) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %125) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %124) #7
  br label %1431

1051:                                             ; preds = %1012
  %1052 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %131) #7
  br label %1431

1053:                                             ; preds = %1016
  %1054 = landingpad { ptr, i32 }
          catch ptr null
  br label %1060

1055:                                             ; preds = %1020
  %1056 = landingpad { ptr, i32 }
          catch ptr null
  br label %1059

1057:                                             ; preds = %1021
  %1058 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %132) #7
  br label %1059

1059:                                             ; preds = %1057, %1055
  %.pn323 = phi { ptr, i32 } [ %1058, %1057 ], [ %1056, %1055 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #7
  br label %1060

1060:                                             ; preds = %1059, %1053
  %.pn323.pn = phi { ptr, i32 } [ %.pn323, %1059 ], [ %1054, %1053 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %134) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %134) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %133) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %132) #7
  br label %1065

1061:                                             ; preds = %1026
  %1062 = landingpad { ptr, i32 }
          catch ptr null
  br label %1065

1063:                                             ; preds = %1033, %1031, %1028
  %1064 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %135) #7
  br label %1065

1065:                                             ; preds = %1063, %1061, %1060
  %.pn324 = phi { ptr, i32 } [ %1064, %1063 ], [ %1062, %1061 ], [ %.pn323.pn, %1060 ]
  %.88 = extractvalue { ptr, i32 } %.pn324, 0
  %1066 = call ptr @__cxa_begin_catch(ptr %.88) #7
  %1067 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1068 unwind label %1103

1068:                                             ; preds = %1065
  %1069 = load ptr, ptr %1067, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %136) #7
  %1070 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1071 unwind label %1105

1071:                                             ; preds = %1068
  %1072 = load ptr, ptr %1070, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %136, ptr noundef nonnull align 8 dereferenceable(30) %1072, i32 noundef 503)
          to label %1073 unwind label %1105

1073:                                             ; preds = %1071
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1069, ptr noundef nonnull align 8 dereferenceable(30) %136, ptr noundef nonnull @.str.152)
          to label %1074 unwind label %1105

1074:                                             ; preds = %1073
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %136) #7
  invoke void @__cxa_end_catch()
          to label %1075 unwind label %1039

1075:                                             ; preds = %1024, %1034, %1074
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %137) #7
  %1076 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %138) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %139) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %139) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef nonnull @.str.153, ptr noundef nonnull align 1 dereferenceable(1) %139)
          to label %1077 unwind label %1108

1077:                                             ; preds = %1075
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %141) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %142) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %142) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %141, ptr noundef nonnull @.str.117, ptr noundef nonnull align 1 dereferenceable(1) %142)
          to label %1078 unwind label %1110

1078:                                             ; preds = %1077
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %143) #7
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #7
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %140, ptr nonnull %141, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %143)
          to label %1079 unwind label %1112

1079:                                             ; preds = %1078
  invoke void @_ZN14HtnTermFactory21CreateConstantFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS5_SaIS5_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %137, ptr noundef nonnull align 8 dereferenceable(33088) %1076, ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef nonnull %140)
          to label %1080 unwind label %1114

1080:                                             ; preds = %1079
  %1081 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %137) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %137) #7
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %140) #7
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %143) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %142) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %142) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %141) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %139) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %139) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %138) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %137) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %144) #7
  %1082 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %58) #7
  %1083 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %144, ptr noundef nonnull align 8 dereferenceable(72) %1082, ptr noundef %1083)
          to label %1084 unwind label %1117

1084:                                             ; preds = %1080
  %1085 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %110, ptr noundef nonnull align 8 dereferenceable(16) %144) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %144) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %144) #7
  %1086 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %110) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %145) #7
  %1087 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %146) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %147) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %147) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef nonnull @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %147)
          to label %1088 unwind label %1119

1088:                                             ; preds = %1084
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %145, ptr noundef nonnull align 8 dereferenceable(33088) %1087, ptr noundef nonnull align 8 dereferenceable(32) %146)
          to label %1089 unwind label %1121

1089:                                             ; preds = %1088
  %1090 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %145) #7
  %1091 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %1086, ptr noundef nonnull align 8 dereferenceable(72) %1090)
          to label %1092 unwind label %1123

1092:                                             ; preds = %1089
  %1093 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1091)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %145) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %147) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %147) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %146) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %145) #7
  br i1 %1093, label %1141, label %1094

1094:                                             ; preds = %1092
  %1095 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1096 unwind label %1127

1096:                                             ; preds = %1094
  %1097 = load ptr, ptr %1095, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %148) #7
  %1098 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1099 unwind label %1129

1099:                                             ; preds = %1096
  %1100 = load ptr, ptr %1098, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %148, ptr noundef nonnull align 8 dereferenceable(30) %1100, i32 noundef 508)
          to label %1101 unwind label %1129

1101:                                             ; preds = %1099
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1097, ptr noundef nonnull align 8 dereferenceable(30) %148, ptr noundef nonnull @.str.154)
          to label %1102 unwind label %1129

1102:                                             ; preds = %1101
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %148) #7
  br label %1141

1103:                                             ; preds = %1065
  %1104 = landingpad { ptr, i32 }
          cleanup
  br label %1107

1105:                                             ; preds = %1073, %1071, %1068
  %1106 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %136) #7
  br label %1107

1107:                                             ; preds = %1105, %1103
  %.pn325 = phi { ptr, i32 } [ %1106, %1105 ], [ %1104, %1103 ]
  invoke void @__cxa_end_catch()
          to label %1431 unwind label %1438

1108:                                             ; preds = %1075
  %1109 = landingpad { ptr, i32 }
          cleanup
  br label %1116

1110:                                             ; preds = %1077
  %1111 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit411

1112:                                             ; preds = %1078
  %1113 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit411.loopexit

1114:                                             ; preds = %1079
  %1115 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %140) #7
  br label %.loopexit411.loopexit

.loopexit411.loopexit:                            ; preds = %1114, %1112
  %.pn327 = phi { ptr, i32 } [ %1115, %1114 ], [ %1113, %1112 ]
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %143) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #7
  br label %.loopexit411

.loopexit411:                                     ; preds = %.loopexit411.loopexit, %1110
  %.pn327.pn = phi { ptr, i32 } [ %1111, %1110 ], [ %.pn327, %.loopexit411.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %142) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %142) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %141) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #7
  br label %1116

1116:                                             ; preds = %.loopexit411, %1108
  %.pn327.pn.pn = phi { ptr, i32 } [ %.pn327.pn, %.loopexit411 ], [ %1109, %1108 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %139) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %139) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %138) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %137) #7
  br label %1431

1117:                                             ; preds = %1080
  %1118 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %144) #7
  br label %1431

1119:                                             ; preds = %1084
  %1120 = landingpad { ptr, i32 }
          catch ptr null
  br label %1126

1121:                                             ; preds = %1088
  %1122 = landingpad { ptr, i32 }
          catch ptr null
  br label %1125

1123:                                             ; preds = %1089
  %1124 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %145) #7
  br label %1125

1125:                                             ; preds = %1123, %1121
  %.pn331 = phi { ptr, i32 } [ %1124, %1123 ], [ %1122, %1121 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #7
  br label %1126

1126:                                             ; preds = %1125, %1119
  %.pn331.pn = phi { ptr, i32 } [ %.pn331, %1125 ], [ %1120, %1119 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %147) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %147) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %146) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %145) #7
  br label %1131

1127:                                             ; preds = %1094
  %1128 = landingpad { ptr, i32 }
          catch ptr null
  br label %1131

1129:                                             ; preds = %1101, %1099, %1096
  %1130 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %148) #7
  br label %1131

1131:                                             ; preds = %1129, %1127, %1126
  %.pn332 = phi { ptr, i32 } [ %1130, %1129 ], [ %1128, %1127 ], [ %.pn331.pn, %1126 ]
  %.95 = extractvalue { ptr, i32 } %.pn332, 0
  %1132 = call ptr @__cxa_begin_catch(ptr %.95) #7
  %1133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1134 unwind label %1169

1134:                                             ; preds = %1131
  %1135 = load ptr, ptr %1133, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %149) #7
  %1136 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1137 unwind label %1171

1137:                                             ; preds = %1134
  %1138 = load ptr, ptr %1136, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %149, ptr noundef nonnull align 8 dereferenceable(30) %1138, i32 noundef 508)
          to label %1139 unwind label %1171

1139:                                             ; preds = %1137
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1135, ptr noundef nonnull align 8 dereferenceable(30) %149, ptr noundef nonnull @.str.155)
          to label %1140 unwind label %1171

1140:                                             ; preds = %1139
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %149) #7
  invoke void @__cxa_end_catch()
          to label %1141 unwind label %1039

1141:                                             ; preds = %1092, %1102, %1140
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %150) #7
  %1142 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %151) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %152) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %152) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %151, ptr noundef nonnull @.str.153, ptr noundef nonnull align 1 dereferenceable(1) %152)
          to label %1143 unwind label %1174

1143:                                             ; preds = %1141
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %154) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %155) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %155) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %154, ptr noundef nonnull @.str.149, ptr noundef nonnull align 1 dereferenceable(1) %155)
          to label %1144 unwind label %1176

1144:                                             ; preds = %1143
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %156) #7
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %156) #7
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %153, ptr nonnull %154, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %156)
          to label %1145 unwind label %1178

1145:                                             ; preds = %1144
  invoke void @_ZN14HtnTermFactory21CreateConstantFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS5_SaIS5_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %150, ptr noundef nonnull align 8 dereferenceable(33088) %1142, ptr noundef nonnull align 8 dereferenceable(32) %151, ptr noundef nonnull %153)
          to label %1146 unwind label %1180

1146:                                             ; preds = %1145
  %1147 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %150) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %150) #7
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %153) #7
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %156) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %156) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %155) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %155) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %154) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %152) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %152) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %151) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %150) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %157) #7
  %1148 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %58) #7
  %1149 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %157, ptr noundef nonnull align 8 dereferenceable(72) %1148, ptr noundef %1149)
          to label %1150 unwind label %1183

1150:                                             ; preds = %1146
  %1151 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %110, ptr noundef nonnull align 8 dereferenceable(16) %157) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %157) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %157) #7
  %1152 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %110) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %158) #7
  %1153 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %159) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %160) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %160) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %159, ptr noundef nonnull @.str.156, ptr noundef nonnull align 1 dereferenceable(1) %160)
          to label %1154 unwind label %1185

1154:                                             ; preds = %1150
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %158, ptr noundef nonnull align 8 dereferenceable(33088) %1153, ptr noundef nonnull align 8 dereferenceable(32) %159)
          to label %1155 unwind label %1187

1155:                                             ; preds = %1154
  %1156 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %158) #7
  %1157 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %1152, ptr noundef nonnull align 8 dereferenceable(72) %1156)
          to label %1158 unwind label %1189

1158:                                             ; preds = %1155
  %1159 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1157)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %158) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %160) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %160) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %159) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %158) #7
  br i1 %1159, label %1207, label %1160

1160:                                             ; preds = %1158
  %1161 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1162 unwind label %1193

1162:                                             ; preds = %1160
  %1163 = load ptr, ptr %1161, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %161) #7
  %1164 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1165 unwind label %1195

1165:                                             ; preds = %1162
  %1166 = load ptr, ptr %1164, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %161, ptr noundef nonnull align 8 dereferenceable(30) %1166, i32 noundef 512)
          to label %1167 unwind label %1195

1167:                                             ; preds = %1165
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1163, ptr noundef nonnull align 8 dereferenceable(30) %161, ptr noundef nonnull @.str.157)
          to label %1168 unwind label %1195

1168:                                             ; preds = %1167
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %161) #7
  br label %1207

1169:                                             ; preds = %1131
  %1170 = landingpad { ptr, i32 }
          cleanup
  br label %1173

1171:                                             ; preds = %1139, %1137, %1134
  %1172 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %149) #7
  br label %1173

1173:                                             ; preds = %1171, %1169
  %.pn333 = phi { ptr, i32 } [ %1172, %1171 ], [ %1170, %1169 ]
  invoke void @__cxa_end_catch()
          to label %1431 unwind label %1438

1174:                                             ; preds = %1141
  %1175 = landingpad { ptr, i32 }
          cleanup
  br label %1182

1176:                                             ; preds = %1143
  %1177 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit410

1178:                                             ; preds = %1144
  %1179 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit410.loopexit

1180:                                             ; preds = %1145
  %1181 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %153) #7
  br label %.loopexit410.loopexit

.loopexit410.loopexit:                            ; preds = %1180, %1178
  %.pn335 = phi { ptr, i32 } [ %1181, %1180 ], [ %1179, %1178 ]
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %156) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %156) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #7
  br label %.loopexit410

.loopexit410:                                     ; preds = %.loopexit410.loopexit, %1176
  %.pn335.pn = phi { ptr, i32 } [ %1177, %1176 ], [ %.pn335, %.loopexit410.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %155) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %155) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %154) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #7
  br label %1182

1182:                                             ; preds = %.loopexit410, %1174
  %.pn335.pn.pn = phi { ptr, i32 } [ %.pn335.pn, %.loopexit410 ], [ %1175, %1174 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %152) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %152) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %151) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %150) #7
  br label %1431

1183:                                             ; preds = %1146
  %1184 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %157) #7
  br label %1431

1185:                                             ; preds = %1150
  %1186 = landingpad { ptr, i32 }
          catch ptr null
  br label %1192

1187:                                             ; preds = %1154
  %1188 = landingpad { ptr, i32 }
          catch ptr null
  br label %1191

1189:                                             ; preds = %1155
  %1190 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %158) #7
  br label %1191

1191:                                             ; preds = %1189, %1187
  %.pn339 = phi { ptr, i32 } [ %1190, %1189 ], [ %1188, %1187 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #7
  br label %1192

1192:                                             ; preds = %1191, %1185
  %.pn339.pn = phi { ptr, i32 } [ %.pn339, %1191 ], [ %1186, %1185 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %160) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %160) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %159) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %158) #7
  br label %1197

1193:                                             ; preds = %1160
  %1194 = landingpad { ptr, i32 }
          catch ptr null
  br label %1197

1195:                                             ; preds = %1167, %1165, %1162
  %1196 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %161) #7
  br label %1197

1197:                                             ; preds = %1195, %1193, %1192
  %.pn340 = phi { ptr, i32 } [ %1196, %1195 ], [ %1194, %1193 ], [ %.pn339.pn, %1192 ]
  %.102 = extractvalue { ptr, i32 } %.pn340, 0
  %1198 = call ptr @__cxa_begin_catch(ptr %.102) #7
  %1199 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1200 unwind label %1235

1200:                                             ; preds = %1197
  %1201 = load ptr, ptr %1199, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %162) #7
  %1202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1203 unwind label %1237

1203:                                             ; preds = %1200
  %1204 = load ptr, ptr %1202, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %162, ptr noundef nonnull align 8 dereferenceable(30) %1204, i32 noundef 512)
          to label %1205 unwind label %1237

1205:                                             ; preds = %1203
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1201, ptr noundef nonnull align 8 dereferenceable(30) %162, ptr noundef nonnull @.str.158)
          to label %1206 unwind label %1237

1206:                                             ; preds = %1205
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %162) #7
  invoke void @__cxa_end_catch()
          to label %1207 unwind label %1039

1207:                                             ; preds = %1158, %1168, %1206
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %163) #7
  %1208 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %164) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %165) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %165) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %164, ptr noundef nonnull @.str.159, ptr noundef nonnull align 1 dereferenceable(1) %165)
          to label %1209 unwind label %1240

1209:                                             ; preds = %1207
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %167) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %168) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %168) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %167, ptr noundef nonnull @.str.117, ptr noundef nonnull align 1 dereferenceable(1) %168)
          to label %1210 unwind label %1242

1210:                                             ; preds = %1209
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %169) #7
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %169) #7
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %166, ptr nonnull %167, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %169)
          to label %1211 unwind label %1244

1211:                                             ; preds = %1210
  invoke void @_ZN14HtnTermFactory21CreateConstantFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS5_SaIS5_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %163, ptr noundef nonnull align 8 dereferenceable(33088) %1208, ptr noundef nonnull align 8 dereferenceable(32) %164, ptr noundef nonnull %166)
          to label %1212 unwind label %1246

1212:                                             ; preds = %1211
  %1213 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %163) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %163) #7
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %166) #7
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %169) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %169) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %168) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %168) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %167) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %165) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %165) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %164) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %163) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %170) #7
  %1214 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %58) #7
  %1215 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %170, ptr noundef nonnull align 8 dereferenceable(72) %1214, ptr noundef %1215)
          to label %1216 unwind label %1249

1216:                                             ; preds = %1212
  %1217 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %110, ptr noundef nonnull align 8 dereferenceable(16) %170) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %170) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %170) #7
  %1218 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %110) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %171) #7
  %1219 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %172) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %173) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %173) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %172, ptr noundef nonnull @.str.146, ptr noundef nonnull align 1 dereferenceable(1) %173)
          to label %1220 unwind label %1251

1220:                                             ; preds = %1216
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %171, ptr noundef nonnull align 8 dereferenceable(33088) %1219, ptr noundef nonnull align 8 dereferenceable(32) %172)
          to label %1221 unwind label %1253

1221:                                             ; preds = %1220
  %1222 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %171) #7
  %1223 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %1218, ptr noundef nonnull align 8 dereferenceable(72) %1222)
          to label %1224 unwind label %1255

1224:                                             ; preds = %1221
  %1225 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1223)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %171) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %173) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %173) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %172) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %171) #7
  br i1 %1225, label %1273, label %1226

1226:                                             ; preds = %1224
  %1227 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1228 unwind label %1259

1228:                                             ; preds = %1226
  %1229 = load ptr, ptr %1227, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %174) #7
  %1230 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1231 unwind label %1261

1231:                                             ; preds = %1228
  %1232 = load ptr, ptr %1230, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %174, ptr noundef nonnull align 8 dereferenceable(30) %1232, i32 noundef 517)
          to label %1233 unwind label %1261

1233:                                             ; preds = %1231
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1229, ptr noundef nonnull align 8 dereferenceable(30) %174, ptr noundef nonnull @.str.147)
          to label %1234 unwind label %1261

1234:                                             ; preds = %1233
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %174) #7
  br label %1273

1235:                                             ; preds = %1197
  %1236 = landingpad { ptr, i32 }
          cleanup
  br label %1239

1237:                                             ; preds = %1205, %1203, %1200
  %1238 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %162) #7
  br label %1239

1239:                                             ; preds = %1237, %1235
  %.pn341 = phi { ptr, i32 } [ %1238, %1237 ], [ %1236, %1235 ]
  invoke void @__cxa_end_catch()
          to label %1431 unwind label %1438

1240:                                             ; preds = %1207
  %1241 = landingpad { ptr, i32 }
          cleanup
  br label %1248

1242:                                             ; preds = %1209
  %1243 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit409

1244:                                             ; preds = %1210
  %1245 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit409.loopexit

1246:                                             ; preds = %1211
  %1247 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %166) #7
  br label %.loopexit409.loopexit

.loopexit409.loopexit:                            ; preds = %1246, %1244
  %.pn343 = phi { ptr, i32 } [ %1247, %1246 ], [ %1245, %1244 ]
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %169) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %169) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #7
  br label %.loopexit409

.loopexit409:                                     ; preds = %.loopexit409.loopexit, %1242
  %.pn343.pn = phi { ptr, i32 } [ %1243, %1242 ], [ %.pn343, %.loopexit409.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %168) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %168) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %167) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #7
  br label %1248

1248:                                             ; preds = %.loopexit409, %1240
  %.pn343.pn.pn = phi { ptr, i32 } [ %.pn343.pn, %.loopexit409 ], [ %1241, %1240 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %165) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %165) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %164) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %163) #7
  br label %1431

1249:                                             ; preds = %1212
  %1250 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %170) #7
  br label %1431

1251:                                             ; preds = %1216
  %1252 = landingpad { ptr, i32 }
          catch ptr null
  br label %1258

1253:                                             ; preds = %1220
  %1254 = landingpad { ptr, i32 }
          catch ptr null
  br label %1257

1255:                                             ; preds = %1221
  %1256 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %171) #7
  br label %1257

1257:                                             ; preds = %1255, %1253
  %.pn347 = phi { ptr, i32 } [ %1256, %1255 ], [ %1254, %1253 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #7
  br label %1258

1258:                                             ; preds = %1257, %1251
  %.pn347.pn = phi { ptr, i32 } [ %.pn347, %1257 ], [ %1252, %1251 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %173) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %173) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %172) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %171) #7
  br label %1263

1259:                                             ; preds = %1226
  %1260 = landingpad { ptr, i32 }
          catch ptr null
  br label %1263

1261:                                             ; preds = %1233, %1231, %1228
  %1262 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %174) #7
  br label %1263

1263:                                             ; preds = %1261, %1259, %1258
  %.pn348 = phi { ptr, i32 } [ %1262, %1261 ], [ %1260, %1259 ], [ %.pn347.pn, %1258 ]
  %.109 = extractvalue { ptr, i32 } %.pn348, 0
  %1264 = call ptr @__cxa_begin_catch(ptr %.109) #7
  %1265 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1266 unwind label %1301

1266:                                             ; preds = %1263
  %1267 = load ptr, ptr %1265, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %175) #7
  %1268 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1269 unwind label %1303

1269:                                             ; preds = %1266
  %1270 = load ptr, ptr %1268, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %175, ptr noundef nonnull align 8 dereferenceable(30) %1270, i32 noundef 517)
          to label %1271 unwind label %1303

1271:                                             ; preds = %1269
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1267, ptr noundef nonnull align 8 dereferenceable(30) %175, ptr noundef nonnull @.str.148)
          to label %1272 unwind label %1303

1272:                                             ; preds = %1271
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %175) #7
  invoke void @__cxa_end_catch()
          to label %1273 unwind label %1039

1273:                                             ; preds = %1224, %1234, %1272
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %176) #7
  %1274 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %177) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %178) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %178) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %177, ptr noundef nonnull @.str.159, ptr noundef nonnull align 1 dereferenceable(1) %178)
          to label %1275 unwind label %1306

1275:                                             ; preds = %1273
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %180) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %181) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %181) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %180, ptr noundef nonnull @.str.149, ptr noundef nonnull align 1 dereferenceable(1) %181)
          to label %1276 unwind label %1308

1276:                                             ; preds = %1275
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %182) #7
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %182) #7
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %179, ptr nonnull %180, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %182)
          to label %1277 unwind label %1310

1277:                                             ; preds = %1276
  invoke void @_ZN14HtnTermFactory21CreateConstantFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS5_SaIS5_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %176, ptr noundef nonnull align 8 dereferenceable(33088) %1274, ptr noundef nonnull align 8 dereferenceable(32) %177, ptr noundef nonnull %179)
          to label %1278 unwind label %1312

1278:                                             ; preds = %1277
  %1279 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %176) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %176) #7
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %179) #7
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %182) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %182) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %180) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %181) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %181) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %180) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %177) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %178) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %178) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %177) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %176) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %183) #7
  %1280 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %58) #7
  %1281 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %183, ptr noundef nonnull align 8 dereferenceable(72) %1280, ptr noundef %1281)
          to label %1282 unwind label %1315

1282:                                             ; preds = %1278
  %1283 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %110, ptr noundef nonnull align 8 dereferenceable(16) %183) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %183) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %183) #7
  %1284 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %110) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %184) #7
  %1285 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %185) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %186) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %186) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %185, ptr noundef nonnull @.str.146, ptr noundef nonnull align 1 dereferenceable(1) %186)
          to label %1286 unwind label %1317

1286:                                             ; preds = %1282
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %184, ptr noundef nonnull align 8 dereferenceable(33088) %1285, ptr noundef nonnull align 8 dereferenceable(32) %185)
          to label %1287 unwind label %1319

1287:                                             ; preds = %1286
  %1288 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %184) #7
  %1289 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %1284, ptr noundef nonnull align 8 dereferenceable(72) %1288)
          to label %1290 unwind label %1321

1290:                                             ; preds = %1287
  %1291 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1289)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %184) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %185) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %186) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %186) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %185) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %184) #7
  br i1 %1291, label %1339, label %1292

1292:                                             ; preds = %1290
  %1293 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1294 unwind label %1325

1294:                                             ; preds = %1292
  %1295 = load ptr, ptr %1293, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %187) #7
  %1296 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1297 unwind label %1327

1297:                                             ; preds = %1294
  %1298 = load ptr, ptr %1296, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %187, ptr noundef nonnull align 8 dereferenceable(30) %1298, i32 noundef 520)
          to label %1299 unwind label %1327

1299:                                             ; preds = %1297
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1295, ptr noundef nonnull align 8 dereferenceable(30) %187, ptr noundef nonnull @.str.147)
          to label %1300 unwind label %1327

1300:                                             ; preds = %1299
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %187) #7
  br label %1339

1301:                                             ; preds = %1263
  %1302 = landingpad { ptr, i32 }
          cleanup
  br label %1305

1303:                                             ; preds = %1271, %1269, %1266
  %1304 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %175) #7
  br label %1305

1305:                                             ; preds = %1303, %1301
  %.pn349 = phi { ptr, i32 } [ %1304, %1303 ], [ %1302, %1301 ]
  invoke void @__cxa_end_catch()
          to label %1431 unwind label %1438

1306:                                             ; preds = %1273
  %1307 = landingpad { ptr, i32 }
          cleanup
  br label %1314

1308:                                             ; preds = %1275
  %1309 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit408

1310:                                             ; preds = %1276
  %1311 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit408.loopexit

1312:                                             ; preds = %1277
  %1313 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %179) #7
  br label %.loopexit408.loopexit

.loopexit408.loopexit:                            ; preds = %1312, %1310
  %.pn351 = phi { ptr, i32 } [ %1313, %1312 ], [ %1311, %1310 ]
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %182) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %182) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %180) #7
  br label %.loopexit408

.loopexit408:                                     ; preds = %.loopexit408.loopexit, %1308
  %.pn351.pn = phi { ptr, i32 } [ %1309, %1308 ], [ %.pn351, %.loopexit408.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %181) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %181) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %180) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %177) #7
  br label %1314

1314:                                             ; preds = %.loopexit408, %1306
  %.pn351.pn.pn = phi { ptr, i32 } [ %.pn351.pn, %.loopexit408 ], [ %1307, %1306 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %178) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %178) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %177) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %176) #7
  br label %1431

1315:                                             ; preds = %1278
  %1316 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %183) #7
  br label %1431

1317:                                             ; preds = %1282
  %1318 = landingpad { ptr, i32 }
          catch ptr null
  br label %1324

1319:                                             ; preds = %1286
  %1320 = landingpad { ptr, i32 }
          catch ptr null
  br label %1323

1321:                                             ; preds = %1287
  %1322 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %184) #7
  br label %1323

1323:                                             ; preds = %1321, %1319
  %.pn355 = phi { ptr, i32 } [ %1322, %1321 ], [ %1320, %1319 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %185) #7
  br label %1324

1324:                                             ; preds = %1323, %1317
  %.pn355.pn = phi { ptr, i32 } [ %.pn355, %1323 ], [ %1318, %1317 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %186) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %186) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %185) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %184) #7
  br label %1329

1325:                                             ; preds = %1292
  %1326 = landingpad { ptr, i32 }
          catch ptr null
  br label %1329

1327:                                             ; preds = %1299, %1297, %1294
  %1328 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %187) #7
  br label %1329

1329:                                             ; preds = %1327, %1325, %1324
  %.pn356 = phi { ptr, i32 } [ %1328, %1327 ], [ %1326, %1325 ], [ %.pn355.pn, %1324 ]
  %.116 = extractvalue { ptr, i32 } %.pn356, 0
  %1330 = call ptr @__cxa_begin_catch(ptr %.116) #7
  %1331 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1332 unwind label %1374

1332:                                             ; preds = %1329
  %1333 = load ptr, ptr %1331, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %188) #7
  %1334 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1335 unwind label %1376

1335:                                             ; preds = %1332
  %1336 = load ptr, ptr %1334, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %188, ptr noundef nonnull align 8 dereferenceable(30) %1336, i32 noundef 520)
          to label %1337 unwind label %1376

1337:                                             ; preds = %1335
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1333, ptr noundef nonnull align 8 dereferenceable(30) %188, ptr noundef nonnull @.str.148)
          to label %1338 unwind label %1376

1338:                                             ; preds = %1337
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %188) #7
  invoke void @__cxa_end_catch()
          to label %1339 unwind label %1039

1339:                                             ; preds = %1290, %1300, %1338
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %189) #7
  %1340 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %190) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %191) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %191) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %190, ptr noundef nonnull @.str.160, ptr noundef nonnull align 1 dereferenceable(1) %191)
          to label %1341 unwind label %1379

1341:                                             ; preds = %1339
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %193) #7
  %1342 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %194) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %195) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %195) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %194, ptr noundef nonnull @.str.161, ptr noundef nonnull align 1 dereferenceable(1) %195)
          to label %1343 unwind label %.thread401

1343:                                             ; preds = %1341
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %193, ptr noundef nonnull align 8 dereferenceable(33088) %1342, ptr noundef nonnull align 8 dereferenceable(32) %194)
          to label %1344 unwind label %1382

1344:                                             ; preds = %1343
  %1345 = getelementptr inbounds i8, ptr %193, i64 16
  %1346 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %196) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %197) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %197) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %196, ptr noundef nonnull @.str.162, ptr noundef nonnull align 1 dereferenceable(1) %197)
          to label %1347 unwind label %1384

1347:                                             ; preds = %1344
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1345, ptr noundef nonnull align 8 dereferenceable(33088) %1346, ptr noundef nonnull align 8 dereferenceable(32) %196)
          to label %1348 unwind label %1386

1348:                                             ; preds = %1347
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %198) #7
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %198) #7
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %192, ptr nonnull %193, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %198)
          to label %1349 unwind label %1388

1349:                                             ; preds = %1348
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %189, ptr noundef nonnull align 8 dereferenceable(33088) %1340, ptr noundef nonnull align 8 dereferenceable(32) %190, ptr noundef nonnull %192)
          to label %1350 unwind label %1390

1350:                                             ; preds = %1349
  %1351 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %189) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %189) #7
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %192) #7
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %198) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %198) #7
  %1352 = getelementptr inbounds i8, ptr %193, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1352) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %193) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %197) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %197) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %196) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %194) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %195) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %195) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %194) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %193) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %191) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %191) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %190) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %189) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %199) #7
  %1353 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %58) #7
  %1354 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  invoke void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %199, ptr noundef nonnull align 8 dereferenceable(72) %1353, ptr noundef %1354)
          to label %1355 unwind label %1401

1355:                                             ; preds = %1350
  %1356 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %110, ptr noundef nonnull align 8 dereferenceable(16) %199) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %199) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %199) #7
  %1357 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %110) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %200) #7
  %1358 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %201) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %202) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %202) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %201, ptr noundef nonnull @.str.163, ptr noundef nonnull align 1 dereferenceable(1) %202)
          to label %1359 unwind label %1403

1359:                                             ; preds = %1355
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %200, ptr noundef nonnull align 8 dereferenceable(33088) %1358, ptr noundef nonnull align 8 dereferenceable(32) %201)
          to label %1360 unwind label %1405

1360:                                             ; preds = %1359
  %1361 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %200) #7
  %1362 = invoke noundef zeroext i1 @_ZNK7HtnTermeqERKS_(ptr noundef nonnull align 8 dereferenceable(72) %1357, ptr noundef nonnull align 8 dereferenceable(72) %1361)
          to label %1363 unwind label %1407

1363:                                             ; preds = %1360
  %1364 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1362)
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %200) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %201) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %202) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %202) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %201) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %200) #7
  br i1 %1364, label %1425, label %1365

1365:                                             ; preds = %1363
  %1366 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1367 unwind label %1411

1367:                                             ; preds = %1365
  %1368 = load ptr, ptr %1366, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %203) #7
  %1369 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1370 unwind label %1413

1370:                                             ; preds = %1367
  %1371 = load ptr, ptr %1369, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %203, ptr noundef nonnull align 8 dereferenceable(30) %1371, i32 noundef 525)
          to label %1372 unwind label %1413

1372:                                             ; preds = %1370
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1368, ptr noundef nonnull align 8 dereferenceable(30) %203, ptr noundef nonnull @.str.164)
          to label %1373 unwind label %1413

1373:                                             ; preds = %1372
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %203) #7
  br label %1425

1374:                                             ; preds = %1329
  %1375 = landingpad { ptr, i32 }
          cleanup
  br label %1378

1376:                                             ; preds = %1337, %1335, %1332
  %1377 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %188) #7
  br label %1378

1378:                                             ; preds = %1376, %1374
  %.pn357 = phi { ptr, i32 } [ %1377, %1376 ], [ %1375, %1374 ]
  invoke void @__cxa_end_catch()
          to label %1431 unwind label %1438

1379:                                             ; preds = %1339
  %1380 = landingpad { ptr, i32 }
          cleanup
  br label %1400

.thread401:                                       ; preds = %1341
  %1381 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %195) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %195) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %194) #7
  br label %.loopexit

1382:                                             ; preds = %1343
  %1383 = landingpad { ptr, i32 }
          cleanup
  br label %1395

1384:                                             ; preds = %1344
  %1385 = landingpad { ptr, i32 }
          cleanup
  br label %1394

1386:                                             ; preds = %1347
  %1387 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit407

1388:                                             ; preds = %1348
  %1389 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit407.loopexit

1390:                                             ; preds = %1349
  %1391 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %192) #7
  br label %.loopexit407.loopexit

.loopexit407.loopexit:                            ; preds = %1390, %1388
  %.pn359 = phi { ptr, i32 } [ %1391, %1390 ], [ %1389, %1388 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %198) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %198) #7
  %1392 = getelementptr inbounds i8, ptr %193, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1392) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %193) #7
  br label %.loopexit407

.loopexit407:                                     ; preds = %.loopexit407.loopexit, %1386
  %.pn359.pn = phi { ptr, i32 } [ %1387, %1386 ], [ %.pn359, %.loopexit407.loopexit ]
  %1393 = phi i1 [ false, %1386 ], [ true, %.loopexit407.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #7
  br label %1394

1394:                                             ; preds = %.loopexit407, %1384
  %.pn359.pn.pn = phi { ptr, i32 } [ %.pn359.pn, %.loopexit407 ], [ %1385, %1384 ]
  %.1 = phi i1 [ %1393, %.loopexit407 ], [ false, %1384 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %197) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %197) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %196) #7
  br label %1395

1395:                                             ; preds = %1382, %1394
  %.pn359.pn.pn.pn = phi { ptr, i32 } [ %.pn359.pn.pn, %1394 ], [ %1383, %1382 ]
  %.0102 = phi ptr [ %1345, %1394 ], [ %193, %1382 ]
  %.2 = phi i1 [ %.1, %1394 ], [ false, %1382 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %194) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %195) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %195) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %194) #7
  %1396 = icmp eq ptr %193, %.0102
  %or.cond34 = select i1 %.2, i1 true, i1 %1396
  br i1 %or.cond34, label %.loopexit, label %.preheader

.preheader:                                       ; preds = %1395, %.preheader
  %1397 = phi ptr [ %1398, %.preheader ], [ %.0102, %1395 ]
  %1398 = getelementptr inbounds i8, ptr %1397, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1398) #7
  %1399 = icmp eq ptr %1398, %193
  br i1 %1399, label %.loopexit, label %.preheader

.loopexit:                                        ; preds = %.preheader, %.thread401, %1395
  %.pn359.pn.pn.pn.pn406 = phi { ptr, i32 } [ %1381, %.thread401 ], [ %.pn359.pn.pn.pn, %1395 ], [ %.pn359.pn.pn.pn, %.preheader ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %193) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #7
  br label %1400

1400:                                             ; preds = %.loopexit, %1379
  %.pn359.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn359.pn.pn.pn.pn406, %.loopexit ], [ %1380, %1379 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %191) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %191) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %190) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %189) #7
  br label %1431

1401:                                             ; preds = %1350
  %1402 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %199) #7
  br label %1431

1403:                                             ; preds = %1355
  %1404 = landingpad { ptr, i32 }
          catch ptr null
  br label %1410

1405:                                             ; preds = %1359
  %1406 = landingpad { ptr, i32 }
          catch ptr null
  br label %1409

1407:                                             ; preds = %1360
  %1408 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %200) #7
  br label %1409

1409:                                             ; preds = %1407, %1405
  %.pn366 = phi { ptr, i32 } [ %1408, %1407 ], [ %1406, %1405 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %201) #7
  br label %1410

1410:                                             ; preds = %1409, %1403
  %.pn366.pn = phi { ptr, i32 } [ %.pn366, %1409 ], [ %1404, %1403 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %202) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %202) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %201) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %200) #7
  br label %1415

1411:                                             ; preds = %1365
  %1412 = landingpad { ptr, i32 }
          catch ptr null
  br label %1415

1413:                                             ; preds = %1372, %1370, %1367
  %1414 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %203) #7
  br label %1415

1415:                                             ; preds = %1413, %1411, %1410
  %.pn367 = phi { ptr, i32 } [ %1414, %1413 ], [ %1412, %1411 ], [ %.pn366.pn, %1410 ]
  %.126 = extractvalue { ptr, i32 } %.pn367, 0
  %1416 = call ptr @__cxa_begin_catch(ptr %.126) #7
  %1417 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1418 unwind label %1426

1418:                                             ; preds = %1415
  %1419 = load ptr, ptr %1417, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %204) #7
  %1420 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1421 unwind label %1428

1421:                                             ; preds = %1418
  %1422 = load ptr, ptr %1420, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %204, ptr noundef nonnull align 8 dereferenceable(30) %1422, i32 noundef 525)
          to label %1423 unwind label %1428

1423:                                             ; preds = %1421
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1419, ptr noundef nonnull align 8 dereferenceable(30) %204, ptr noundef nonnull @.str.165)
          to label %1424 unwind label %1428

1424:                                             ; preds = %1423
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %204) #7
  invoke void @__cxa_end_catch()
          to label %1425 unwind label %1039

1425:                                             ; preds = %1363, %1373, %1424
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %110) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #7
  call void @_ZNSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  ret void

1426:                                             ; preds = %1415
  %1427 = landingpad { ptr, i32 }
          cleanup
  br label %1430

1428:                                             ; preds = %1423, %1421, %1418
  %1429 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %204) #7
  br label %1430

1430:                                             ; preds = %1428, %1426
  %.pn368 = phi { ptr, i32 } [ %1429, %1428 ], [ %1427, %1426 ]
  invoke void @__cxa_end_catch()
          to label %1431 unwind label %1438

1431:                                             ; preds = %1430, %1378, %1305, %1239, %1173, %1107, %1041, %1401, %1400, %1315, %1314, %1249, %1248, %1183, %1182, %1117, %1116, %1051, %1050, %1039, %983, %982
  %.pn370 = phi { ptr, i32 } [ %1040, %1039 ], [ %.pn368, %1430 ], [ %1402, %1401 ], [ %.pn359.pn.pn.pn.pn.pn, %1400 ], [ %.pn357, %1378 ], [ %1316, %1315 ], [ %.pn351.pn.pn, %1314 ], [ %.pn349, %1305 ], [ %1250, %1249 ], [ %.pn343.pn.pn, %1248 ], [ %.pn341, %1239 ], [ %1184, %1183 ], [ %.pn335.pn.pn, %1182 ], [ %.pn333, %1173 ], [ %1118, %1117 ], [ %.pn327.pn.pn, %1116 ], [ %.pn325, %1107 ], [ %1052, %1051 ], [ %.pn319.pn.pn, %1050 ], [ %.pn317, %1041 ], [ %984, %983 ], [ %.pn311.pn.pn, %982 ]
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %110) #7
  br label %1432

1432:                                             ; preds = %973, %899, %822, %745, %1431, %921, %844, %767, %743
  %.pn370.pn = phi { ptr, i32 } [ %.pn370, %1431 ], [ %744, %743 ], [ %.pn309, %973 ], [ %.pn300.pn.pn.pn.pn.pn, %921 ], [ %.pn298, %899 ], [ %.pn289.pn.pn.pn.pn.pn, %844 ], [ %.pn287, %822 ], [ %.pn278.pn.pn.pn.pn.pn, %767 ], [ %.pn276, %745 ]
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #7
  br label %1433

1433:                                             ; preds = %1432, %688
  %.pn370.pn.pn = phi { ptr, i32 } [ %.pn370.pn, %1432 ], [ %.pn267.pn.pn.pn.pn.pn, %688 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #7
  br label %1434

1434:                                             ; preds = %666, %605, %558, %513, %468, %423, %378, %333, %288, %1433, %286
  %.pn370.pn.pn.pn = phi { ptr, i32 } [ %.pn370.pn.pn, %1433 ], [ %287, %286 ], [ %.pn265, %666 ], [ %.pn261, %605 ], [ %.pn257, %558 ], [ %.pn253, %513 ], [ %.pn249, %468 ], [ %.pn245, %423 ], [ %.pn241, %378 ], [ %.pn237, %333 ], [ %.pn233, %288 ]
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #7
  br label %1435

1435:                                             ; preds = %1434, %241
  %.pn370.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn370.pn.pn.pn, %1434 ], [ %.pn229, %241 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  br label %1436

1436:                                             ; preds = %1435, %236
  %.pn370.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn370.pn.pn.pn.pn, %1435 ], [ %.pn, %236 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #7
  call void @_ZNSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  br label %1437

1437:                                             ; preds = %1436, %230
  %.pn370.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn370.pn.pn.pn.pn.pn, %1436 ], [ %231, %230 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  resume { ptr, i32 } %.pn370.pn.pn.pn.pn.pn.pn

1438:                                             ; preds = %1430, %1378, %1305, %1239, %1173, %1107, %1041, %973, %899, %822, %745, %666, %605, %558, %513, %468, %423, %378, %333, %288
  %1439 = landingpad { ptr, i32 }
          catch ptr null
  %1440 = extractvalue { ptr, i32 } %1439, 0
  call void @__clang_call_terminate(ptr %1440) #10
  unreachable
}

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

declare noundef i32 @_ZNK7HtnTerm11GetTermTypeEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #2

declare void @_ZN14HtnTermFactory21CreateConstantFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS5_SaIS5_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(33088), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24), ptr, i64, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

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

declare void @_ZN7HtnTerm4EvalEP14HtnTermFactory(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(72), ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10shared_ptrI7HtnTermEC2Ev(ptr noundef nonnull align 8 dereferenceable(16)) 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 nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

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

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

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


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass