; 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.21" = type { %"class.std::__shared_ptr.22" }
%"class.std::__shared_ptr.22" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.91" = type { %"class.std::__shared_ptr.92" }
%"class.std::__shared_ptr.92" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.UnitTest::TestDetails" = type <{ ptr, ptr, ptr, i32, i8, i8, [2 x i8] }>
%"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.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>, std::allocator<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>, std::allocator<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>, std::allocator<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>, std::allocator<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"struct.std::pair" = type { %"class.std::shared_ptr", %"class.std::shared_ptr" }
%"class.std::allocator" = 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.70 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [137 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [167 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [139 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [169 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [243 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [273 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [477 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [507 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [35 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef, ptr noundef) #0

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10shared_ptrI14HtnTermFactoryEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #0 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)) #3 align 2

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

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

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

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

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

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

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) #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 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 #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN25SuiteHtnGoalResolverTests31TestHtnGoalResolverUnifierTests7RunImplEv(ptr noundef nonnull align 8 dereferenceable(49) %0) unnamed_addr #0 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.91", align 8
  %7 = alloca %"class.std::shared_ptr", align 8
  %8 = alloca %"class.std::shared_ptr", align 8
  %9 = alloca %"class.UnitTest::TestDetails", align 8
  %10 = alloca %"class.UnitTest::TestDetails", align 8
  %11 = alloca %"class.std::shared_ptr.91", align 8
  %12 = alloca %"class.std::shared_ptr", align 8
  %13 = alloca %"class.std::shared_ptr", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator.88", align 1
  %16 = alloca %"class.UnitTest::TestDetails", align 8
  %17 = alloca %"class.UnitTest::TestDetails", align 8
  %18 = alloca %"class.std::shared_ptr.91", 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.std::shared_ptr", align 8
  %23 = alloca %"class.UnitTest::TestDetails", align 8
  %24 = alloca %"class.UnitTest::TestDetails", align 8
  %25 = alloca %"class.std::shared_ptr.91", align 8
  %26 = alloca %"class.std::shared_ptr", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator.88", align 1
  %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.std::vector", align 8
  %33 = alloca %"class.std::vector", align 8
  %34 = alloca %"class.UnitTest::TestDetails", align 8
  %35 = alloca %"class.UnitTest::TestDetails", align 8
  %36 = alloca %"class.std::shared_ptr.91", 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.std::shared_ptr", align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::allocator.88", align 1
  %43 = alloca %"class.UnitTest::TestDetails", align 8
  %44 = alloca %"class.UnitTest::TestDetails", align 8
  %45 = alloca %"class.std::shared_ptr.91", align 8
  %46 = alloca %"class.std::shared_ptr", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator.88", align 1
  %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", align 8
  %53 = alloca %"class.std::vector", align 8
  %54 = alloca %"class.std::initializer_list", align 8
  %55 = alloca [1 x %"struct.std::pair"], align 8
  %56 = alloca ptr, align 8
  %57 = alloca %"class.std::shared_ptr", align 8
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::allocator.88", align 1
  %60 = alloca %"class.std::shared_ptr", align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::allocator.88", align 1
  %63 = alloca i1, align 1
  %64 = alloca %"class.std::allocator", align 1
  %65 = alloca %"class.UnitTest::TestDetails", align 8
  %66 = alloca %"class.UnitTest::TestDetails", align 8
  %67 = alloca %"class.std::shared_ptr.91", align 8
  %68 = alloca %"class.std::shared_ptr", align 8
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::allocator.88", align 1
  %71 = alloca %"class.std::vector.0", align 8
  %72 = alloca %"class.std::initializer_list.94", align 8
  %73 = alloca [1 x %"class.std::shared_ptr"], align 8
  %74 = alloca ptr, align 8
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.std::allocator.88", align 1
  %77 = alloca i1, align 1
  %78 = alloca %"class.std::allocator.2", align 1
  %79 = alloca %"class.std::shared_ptr", align 8
  %80 = alloca %"class.std::__cxx11::basic_string", align 8
  %81 = alloca %"class.std::allocator.88", align 1
  %82 = alloca %"class.std::vector.0", align 8
  %83 = alloca %"class.std::initializer_list.94", align 8
  %84 = alloca [1 x %"class.std::shared_ptr"], align 8
  %85 = alloca ptr, align 8
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca %"class.std::allocator.88", align 1
  %88 = alloca i1, align 1
  %89 = alloca %"class.std::allocator.2", align 1
  %90 = alloca %"class.std::vector", align 8
  %91 = alloca %"class.std::vector", align 8
  %92 = alloca %"class.std::initializer_list", align 8
  %93 = alloca [1 x %"struct.std::pair"], align 8
  %94 = alloca ptr, align 8
  %95 = alloca %"class.std::shared_ptr", align 8
  %96 = alloca %"class.std::__cxx11::basic_string", align 8
  %97 = alloca %"class.std::allocator.88", align 1
  %98 = alloca %"class.std::shared_ptr", align 8
  %99 = alloca %"class.std::__cxx11::basic_string", align 8
  %100 = alloca %"class.std::allocator.88", align 1
  %101 = alloca i1, align 1
  %102 = alloca %"class.std::allocator", align 1
  %103 = alloca %"class.UnitTest::TestDetails", align 8
  %104 = alloca %"class.UnitTest::TestDetails", align 8
  %105 = alloca %"class.std::shared_ptr.91", align 8
  %106 = alloca %"class.std::shared_ptr", align 8
  %107 = alloca %"class.std::__cxx11::basic_string", align 8
  %108 = alloca %"class.std::allocator.88", align 1
  %109 = alloca %"class.std::vector.0", align 8
  %110 = alloca %"class.std::initializer_list.94", align 8
  %111 = alloca [2 x %"class.std::shared_ptr"], align 8
  %112 = alloca ptr, align 8
  %113 = alloca %"class.std::__cxx11::basic_string", align 8
  %114 = alloca %"class.std::allocator.88", align 1
  %115 = alloca %"class.std::__cxx11::basic_string", align 8
  %116 = alloca %"class.std::allocator.88", align 1
  %117 = alloca i1, align 1
  %118 = alloca %"class.std::allocator.2", align 1
  %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.std::vector.0", align 8
  %123 = alloca %"class.std::initializer_list.94", align 8
  %124 = alloca [2 x %"class.std::shared_ptr"], align 8
  %125 = alloca ptr, align 8
  %126 = alloca %"class.std::__cxx11::basic_string", align 8
  %127 = alloca %"class.std::allocator.88", align 1
  %128 = alloca %"class.std::__cxx11::basic_string", align 8
  %129 = alloca %"class.std::allocator.88", align 1
  %130 = alloca i1, align 1
  %131 = alloca %"class.std::allocator.2", align 1
  %132 = alloca %"class.std::vector", align 8
  %133 = alloca %"class.std::vector", align 8
  %134 = alloca %"class.UnitTest::TestDetails", align 8
  %135 = alloca %"class.UnitTest::TestDetails", align 8
  %136 = alloca %"class.std::shared_ptr.91", 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.0", align 8
  %141 = alloca %"class.std::initializer_list.94", align 8
  %142 = alloca [2 x %"class.std::shared_ptr"], align 8
  %143 = alloca ptr, align 8
  %144 = alloca %"class.std::__cxx11::basic_string", align 8
  %145 = alloca %"class.std::allocator.88", align 1
  %146 = alloca %"class.std::__cxx11::basic_string", align 8
  %147 = alloca %"class.std::allocator.88", align 1
  %148 = alloca i1, align 1
  %149 = alloca %"class.std::allocator.2", align 1
  %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.0", align 8
  %154 = alloca %"class.std::initializer_list.94", align 8
  %155 = alloca [2 x %"class.std::shared_ptr"], align 8
  %156 = alloca ptr, align 8
  %157 = alloca %"class.std::__cxx11::basic_string", align 8
  %158 = alloca %"class.std::allocator.88", align 1
  %159 = alloca %"class.std::__cxx11::basic_string", align 8
  %160 = alloca %"class.std::allocator.88", align 1
  %161 = alloca i1, align 1
  %162 = alloca %"class.std::allocator.2", align 1
  %163 = alloca %"class.std::vector", align 8
  %164 = alloca %"class.std::vector", align 8
  %165 = alloca %"class.std::initializer_list", align 8
  %166 = alloca [2 x %"struct.std::pair"], align 8
  %167 = alloca ptr, align 8
  %168 = alloca %"class.std::shared_ptr", align 8
  %169 = alloca %"class.std::__cxx11::basic_string", align 8
  %170 = alloca %"class.std::allocator.88", align 1
  %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.std::shared_ptr", align 8
  %175 = alloca %"class.std::__cxx11::basic_string", align 8
  %176 = alloca %"class.std::allocator.88", align 1
  %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 i1, align 1
  %181 = alloca %"class.std::allocator", align 1
  %182 = alloca %"class.UnitTest::TestDetails", align 8
  %183 = alloca %"class.UnitTest::TestDetails", align 8
  %184 = alloca %"class.std::shared_ptr.91", align 8
  %185 = alloca %"class.std::shared_ptr", align 8
  %186 = alloca %"class.std::__cxx11::basic_string", align 8
  %187 = alloca %"class.std::allocator.88", align 1
  %188 = alloca %"class.std::vector.0", align 8
  %189 = alloca %"class.std::initializer_list.94", align 8
  %190 = alloca [2 x %"class.std::shared_ptr"], align 8
  %191 = alloca ptr, align 8
  %192 = alloca %"class.std::__cxx11::basic_string", align 8
  %193 = alloca %"class.std::allocator.88", align 1
  %194 = alloca %"class.std::__cxx11::basic_string", align 8
  %195 = alloca %"class.std::allocator.88", align 1
  %196 = alloca i1, align 1
  %197 = alloca %"class.std::allocator.2", align 1
  %198 = alloca %"class.std::shared_ptr", align 8
  %199 = alloca %"class.std::__cxx11::basic_string", align 8
  %200 = alloca %"class.std::allocator.88", align 1
  %201 = alloca %"class.std::vector.0", align 8
  %202 = alloca %"class.std::initializer_list.94", align 8
  %203 = alloca [2 x %"class.std::shared_ptr"], align 8
  %204 = alloca ptr, align 8
  %205 = alloca %"class.std::__cxx11::basic_string", align 8
  %206 = alloca %"class.std::allocator.88", align 1
  %207 = alloca %"class.std::__cxx11::basic_string", align 8
  %208 = alloca %"class.std::allocator.88", align 1
  %209 = alloca i1, align 1
  %210 = alloca %"class.std::allocator.2", align 1
  %211 = alloca %"class.std::vector", align 8
  %212 = alloca %"class.std::vector", align 8
  %213 = alloca %"class.std::initializer_list", align 8
  %214 = alloca [2 x %"struct.std::pair"], align 8
  %215 = alloca ptr, align 8
  %216 = alloca %"class.std::shared_ptr", align 8
  %217 = alloca %"class.std::__cxx11::basic_string", align 8
  %218 = alloca %"class.std::allocator.88", align 1
  %219 = alloca %"class.std::shared_ptr", align 8
  %220 = alloca %"class.std::__cxx11::basic_string", align 8
  %221 = alloca %"class.std::allocator.88", align 1
  %222 = alloca %"class.std::shared_ptr", align 8
  %223 = alloca %"class.std::__cxx11::basic_string", align 8
  %224 = alloca %"class.std::allocator.88", align 1
  %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 i1, align 1
  %229 = alloca %"class.std::allocator", align 1
  %230 = alloca %"class.UnitTest::TestDetails", align 8
  %231 = alloca %"class.UnitTest::TestDetails", align 8
  %232 = alloca %"class.std::shared_ptr", align 8
  %233 = alloca %"class.std::__cxx11::basic_string", align 8
  %234 = alloca %"class.std::allocator.88", align 1
  %235 = alloca %"class.std::shared_ptr.91", align 8
  %236 = alloca %"class.std::shared_ptr", align 8
  %237 = alloca %"class.std::__cxx11::basic_string", align 8
  %238 = alloca %"class.std::allocator.88", align 1
  %239 = alloca %"class.std::vector.0", align 8
  %240 = alloca %"class.std::initializer_list.94", align 8
  %241 = alloca [2 x %"class.std::shared_ptr"], align 8
  %242 = alloca ptr, align 8
  %243 = alloca %"class.std::__cxx11::basic_string", align 8
  %244 = alloca %"class.std::allocator.88", align 1
  %245 = alloca %"class.std::__cxx11::basic_string", align 8
  %246 = alloca %"class.std::allocator.88", align 1
  %247 = alloca i1, align 1
  %248 = alloca %"class.std::allocator.2", align 1
  %249 = alloca %"class.std::shared_ptr", align 8
  %250 = alloca %"class.std::__cxx11::basic_string", align 8
  %251 = alloca %"class.std::allocator.88", align 1
  %252 = alloca %"class.std::vector.0", align 8
  %253 = alloca %"class.std::initializer_list.94", align 8
  %254 = alloca [2 x %"class.std::shared_ptr"], align 8
  %255 = alloca %"class.std::allocator.2", align 1
  %256 = alloca %"class.UnitTest::TestDetails", align 8
  %257 = alloca %"class.UnitTest::TestDetails", align 8
  %258 = alloca %"class.std::shared_ptr", align 8
  %259 = alloca %"class.std::__cxx11::basic_string", align 8
  %260 = alloca %"class.std::allocator.88", align 1
  %261 = alloca %"class.std::shared_ptr", align 8
  %262 = alloca %"class.std::__cxx11::basic_string", align 8
  %263 = alloca %"class.std::allocator.88", align 1
  %264 = alloca %"class.std::shared_ptr.91", align 8
  %265 = alloca %"class.std::shared_ptr", align 8
  %266 = alloca %"class.std::shared_ptr", align 8
  %267 = alloca %"class.std::vector", align 8
  %268 = alloca %"class.std::vector", align 8
  %269 = alloca %"class.std::initializer_list", align 8
  %270 = alloca [1 x %"struct.std::pair"], align 8
  %271 = alloca ptr, align 8
  %272 = alloca %"class.std::allocator", align 1
  %273 = alloca %"class.UnitTest::TestDetails", align 8
  %274 = alloca %"class.UnitTest::TestDetails", align 8
  %275 = alloca %"class.std::shared_ptr", align 8
  %276 = alloca %"class.std::__cxx11::basic_string", align 8
  %277 = alloca %"class.std::allocator.88", align 1
  %278 = alloca %"class.std::shared_ptr.91", align 8
  %279 = alloca %"class.std::shared_ptr", align 8
  %280 = alloca %"class.std::__cxx11::basic_string", align 8
  %281 = alloca %"class.std::allocator.88", align 1
  %282 = alloca %"class.std::vector.0", align 8
  %283 = alloca %"class.std::initializer_list.94", align 8
  %284 = alloca [1 x %"class.std::shared_ptr"], align 8
  %285 = alloca %"class.std::allocator.2", align 1
  %286 = alloca %"class.std::shared_ptr", align 8
  %287 = alloca %"class.UnitTest::TestDetails", align 8
  %288 = alloca %"class.UnitTest::TestDetails", align 8
  %289 = alloca %"class.std::shared_ptr", align 8
  %290 = alloca %"class.std::__cxx11::basic_string", align 8
  %291 = alloca %"class.std::allocator.88", align 1
  %292 = alloca %"class.std::shared_ptr", align 8
  %293 = alloca %"class.std::__cxx11::basic_string", align 8
  %294 = alloca %"class.std::allocator.88", align 1
  %295 = alloca %"class.std::shared_ptr", align 8
  %296 = alloca %"class.std::__cxx11::basic_string", align 8
  %297 = alloca %"class.std::allocator.88", align 1
  %298 = alloca %"class.std::shared_ptr.91", align 8
  %299 = alloca %"class.std::shared_ptr", align 8
  %300 = alloca %"class.std::__cxx11::basic_string", align 8
  %301 = alloca %"class.std::allocator.88", align 1
  %302 = alloca %"class.std::vector.0", align 8
  %303 = alloca %"class.std::initializer_list.94", align 8
  %304 = alloca [2 x %"class.std::shared_ptr"], align 8
  %305 = alloca ptr, align 8
  %306 = alloca %"class.std::__cxx11::basic_string", align 8
  %307 = alloca %"class.std::allocator.88", align 1
  %308 = alloca %"class.std::vector.0", align 8
  %309 = alloca %"class.std::initializer_list.94", align 8
  %310 = alloca [2 x %"class.std::shared_ptr"], align 8
  %311 = alloca ptr, align 8
  %312 = alloca %"class.std::__cxx11::basic_string", align 8
  %313 = alloca %"class.std::allocator.88", align 1
  %314 = alloca %"class.std::vector.0", align 8
  %315 = alloca %"class.std::initializer_list.94", align 8
  %316 = alloca [2 x %"class.std::shared_ptr"], align 8
  %317 = alloca ptr, align 8
  %318 = alloca %"class.std::__cxx11::basic_string", align 8
  %319 = alloca %"class.std::allocator.88", align 1
  %320 = alloca i1, align 1
  %321 = alloca %"class.std::allocator.2", align 1
  %322 = alloca i1, align 1
  %323 = alloca %"class.std::allocator.2", align 1
  %324 = alloca i1, align 1
  %325 = alloca %"class.std::allocator.2", align 1
  %326 = alloca %"class.std::shared_ptr", align 8
  %327 = alloca %"class.std::__cxx11::basic_string", align 8
  %328 = alloca %"class.std::allocator.88", align 1
  %329 = alloca %"class.std::vector.0", align 8
  %330 = alloca %"class.std::initializer_list.94", align 8
  %331 = alloca [2 x %"class.std::shared_ptr"], align 8
  %332 = alloca ptr, align 8
  %333 = alloca %"class.std::__cxx11::basic_string", align 8
  %334 = alloca %"class.std::allocator.88", align 1
  %335 = alloca %"class.std::vector.0", align 8
  %336 = alloca %"class.std::initializer_list.94", align 8
  %337 = alloca [2 x %"class.std::shared_ptr"], align 8
  %338 = alloca ptr, align 8
  %339 = alloca %"class.std::__cxx11::basic_string", align 8
  %340 = alloca %"class.std::allocator.88", align 1
  %341 = alloca i1, align 1
  %342 = alloca %"class.std::allocator.2", align 1
  %343 = alloca i1, align 1
  %344 = alloca %"class.std::allocator.2", align 1
  %345 = alloca %"class.std::vector", align 8
  %346 = alloca %"class.std::vector", align 8
  %347 = alloca %"class.std::initializer_list", align 8
  %348 = alloca [3 x %"struct.std::pair"], align 8
  %349 = alloca ptr, align 8
  %350 = alloca %"class.std::shared_ptr", align 8
  %351 = alloca %"class.std::__cxx11::basic_string", align 8
  %352 = alloca %"class.std::allocator.88", align 1
  %353 = alloca %"class.std::shared_ptr", align 8
  %354 = alloca %"class.std::__cxx11::basic_string", align 8
  %355 = alloca %"class.std::allocator.88", align 1
  %356 = alloca %"class.std::shared_ptr", align 8
  %357 = alloca %"class.std::__cxx11::basic_string", align 8
  %358 = alloca %"class.std::allocator.88", align 1
  %359 = alloca %"class.std::shared_ptr", align 8
  %360 = alloca %"class.std::__cxx11::basic_string", align 8
  %361 = alloca %"class.std::allocator.88", align 1
  %362 = alloca %"class.std::vector.0", align 8
  %363 = alloca %"class.std::initializer_list.94", align 8
  %364 = alloca [2 x %"class.std::shared_ptr"], align 8
  %365 = alloca ptr, align 8
  %366 = alloca %"class.std::__cxx11::basic_string", align 8
  %367 = alloca %"class.std::allocator.88", align 1
  %368 = alloca %"class.std::__cxx11::basic_string", align 8
  %369 = alloca %"class.std::allocator.88", align 1
  %370 = alloca i1, align 1
  %371 = alloca %"class.std::allocator.2", align 1
  %372 = alloca %"class.std::shared_ptr", align 8
  %373 = alloca %"class.std::__cxx11::basic_string", align 8
  %374 = alloca %"class.std::allocator.88", align 1
  %375 = alloca %"class.std::shared_ptr", align 8
  %376 = alloca %"class.std::__cxx11::basic_string", align 8
  %377 = alloca %"class.std::allocator.88", align 1
  %378 = alloca %"class.std::vector.0", align 8
  %379 = alloca %"class.std::initializer_list.94", align 8
  %380 = alloca [2 x %"class.std::shared_ptr"], align 8
  %381 = alloca ptr, align 8
  %382 = alloca %"class.std::__cxx11::basic_string", align 8
  %383 = alloca %"class.std::allocator.88", align 1
  %384 = alloca %"class.std::__cxx11::basic_string", align 8
  %385 = alloca %"class.std::allocator.88", align 1
  %386 = alloca i1, align 1
  %387 = alloca %"class.std::allocator.2", align 1
  %388 = alloca i1, align 1
  %389 = alloca %"class.std::allocator", align 1
  %390 = alloca %"class.UnitTest::TestDetails", align 8
  %391 = alloca %"class.UnitTest::TestDetails", align 8
  %392 = alloca %"class.UnitTest::TestDetails", align 8
  %393 = alloca %"class.UnitTest::TestDetails", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %394 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %3) #9
  %395 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 33088) #10
  invoke void @_ZN14HtnTermFactoryC1Ev(ptr noundef nonnull align 8 dereferenceable(33088) %395)
          to label %396 unwind label %413

396:                                              ; preds = %1
  call void @_ZNSt10shared_ptrI14HtnTermFactoryEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef %395)
  br label %397

397:                                              ; preds = %396
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #9
  %398 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr null) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr null) #9
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.91") align 8 %6, ptr noundef %398, ptr noundef %7, ptr noundef %8)
          to label %399 unwind label %417

399:                                              ; preds = %397
  %400 = call noundef zeroext i1 @_ZSteqISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr null) #9
  %401 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %400)
          to label %402 unwind label %421

402:                                              ; preds = %399
  %403 = xor i1 %401, true
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #9
  br i1 %403, label %404, label %468

404:                                              ; preds = %402
  %405 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %406 unwind label %426

406:                                              ; preds = %404
  %407 = load ptr, ptr %405, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #9
  %408 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %409 unwind label %430

409:                                              ; preds = %406
  %410 = load ptr, ptr %408, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %9, ptr noundef nonnull align 8 dereferenceable(30) %410, i32 noundef 304)
          to label %411 unwind label %430

411:                                              ; preds = %409
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %407, ptr noundef nonnull align 8 dereferenceable(30) %9, ptr noundef @.str.70)
          to label %412 unwind label %430

412:                                              ; preds = %411
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #9
  br label %468

413:                                              ; preds = %1
  %414 = landingpad { ptr, i32 }
          cleanup
  %415 = extractvalue { ptr, i32 } %414, 0
  store ptr %415, ptr %4, align 8
  %416 = extractvalue { ptr, i32 } %414, 1
  store i32 %416, ptr %5, align 4
  call void @_ZdlPvm(ptr noundef %395, i64 noundef 33088) #11
  br label %3150

417:                                              ; preds = %397
  %418 = landingpad { ptr, i32 }
          catch ptr null
  %419 = extractvalue { ptr, i32 } %418, 0
  store ptr %419, ptr %4, align 8
  %420 = extractvalue { ptr, i32 } %418, 1
  store i32 %420, ptr %5, align 4
  br label %425

421:                                              ; preds = %399
  %422 = landingpad { ptr, i32 }
          catch ptr null
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %4, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %5, align 4
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  br label %425

425:                                              ; preds = %421, %417
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #9
  br label %434

426:                                              ; preds = %404
  %427 = landingpad { ptr, i32 }
          catch ptr null
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %4, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %5, align 4
  br label %434

430:                                              ; preds = %411, %409, %406
  %431 = landingpad { ptr, i32 }
          catch ptr null
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %4, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #9
  br label %434

434:                                              ; preds = %430, %426, %425
  %435 = load ptr, ptr %4, align 8
  %436 = call ptr @__cxa_begin_catch(ptr %435) #9
  %437 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %438 unwind label %469

438:                                              ; preds = %434
  %439 = load ptr, ptr %437, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #9
  %440 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %441 unwind label %473

441:                                              ; preds = %438
  %442 = load ptr, ptr %440, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %10, ptr noundef nonnull align 8 dereferenceable(30) %442, i32 noundef 304)
          to label %443 unwind label %473

443:                                              ; preds = %441
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %439, ptr noundef nonnull align 8 dereferenceable(30) %10, ptr noundef @.str.71)
          to label %444 unwind label %473

444:                                              ; preds = %443
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #9
  invoke void @__cxa_end_catch()
          to label %445 unwind label %477

445:                                              ; preds = %444
  br label %446

446:                                              ; preds = %468, %445
  br label %447

447:                                              ; preds = %446
  br label %448

448:                                              ; preds = %447
  br label %449

449:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #9
  %450 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr null) #9
  %451 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %452 unwind label %483

452:                                              ; preds = %449
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %13, ptr noundef nonnull align 8 dereferenceable(33088) %451, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %453 unwind label %487

453:                                              ; preds = %452
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.91") align 8 %11, ptr noundef %450, ptr noundef %12, ptr noundef %13)
          to label %454 unwind label %491

454:                                              ; preds = %453
  %455 = call noundef zeroext i1 @_ZSteqISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr null) #9
  %456 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %455)
          to label %457 unwind label %495

457:                                              ; preds = %454
  %458 = xor i1 %456, true
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #9
  br i1 %458, label %459, label %544

459:                                              ; preds = %457
  %460 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %461 unwind label %502

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

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

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

467:                                              ; preds = %466
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #9
  br label %544

468:                                              ; preds = %412, %402
  br label %446

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

473:                                              ; preds = %443, %441, %438
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %4, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #9
  br label %481

477:                                              ; preds = %592, %520, %444
  %478 = landingpad { ptr, i32 }
          cleanup
  %479 = extractvalue { ptr, i32 } %478, 0
  store ptr %479, ptr %4, align 8
  %480 = extractvalue { ptr, i32 } %478, 1
  store i32 %480, ptr %5, align 4
  br label %3149

481:                                              ; preds = %473, %469
  invoke void @__cxa_end_catch()
          to label %482 unwind label %3156

482:                                              ; preds = %481
  br label %3149

483:                                              ; preds = %449
  %484 = landingpad { ptr, i32 }
          catch ptr null
  %485 = extractvalue { ptr, i32 } %484, 0
  store ptr %485, ptr %4, align 8
  %486 = extractvalue { ptr, i32 } %484, 1
  store i32 %486, ptr %5, align 4
  br label %501

487:                                              ; preds = %452
  %488 = landingpad { ptr, i32 }
          catch ptr null
  %489 = extractvalue { ptr, i32 } %488, 0
  store ptr %489, ptr %4, align 8
  %490 = extractvalue { ptr, i32 } %488, 1
  store i32 %490, ptr %5, align 4
  br label %500

491:                                              ; preds = %453
  %492 = landingpad { ptr, i32 }
          catch ptr null
  %493 = extractvalue { ptr, i32 } %492, 0
  store ptr %493, ptr %4, align 8
  %494 = extractvalue { ptr, i32 } %492, 1
  store i32 %494, ptr %5, align 4
  br label %499

495:                                              ; preds = %454
  %496 = landingpad { ptr, i32 }
          catch ptr null
  %497 = extractvalue { ptr, i32 } %496, 0
  store ptr %497, ptr %4, align 8
  %498 = extractvalue { ptr, i32 } %496, 1
  store i32 %498, ptr %5, align 4
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #9
  br label %499

499:                                              ; preds = %495, %491
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #9
  br label %500

500:                                              ; preds = %499, %487
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  br label %501

501:                                              ; preds = %500, %483
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #9
  br label %510

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

506:                                              ; preds = %466, %464, %461
  %507 = landingpad { ptr, i32 }
          catch ptr null
  %508 = extractvalue { ptr, i32 } %507, 0
  store ptr %508, ptr %4, align 8
  %509 = extractvalue { ptr, i32 } %507, 1
  store i32 %509, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #9
  br label %510

510:                                              ; preds = %506, %502, %501
  %511 = load ptr, ptr %4, align 8
  %512 = call ptr @__cxa_begin_catch(ptr %511) #9
  %513 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %514 unwind label %545

514:                                              ; preds = %510
  %515 = load ptr, ptr %513, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #9
  %516 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %517 unwind label %549

517:                                              ; preds = %514
  %518 = load ptr, ptr %516, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %17, ptr noundef nonnull align 8 dereferenceable(30) %518, i32 noundef 305)
          to label %519 unwind label %549

519:                                              ; preds = %517
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %515, ptr noundef nonnull align 8 dereferenceable(30) %17, ptr noundef @.str.74)
          to label %520 unwind label %549

520:                                              ; preds = %519
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #9
  invoke void @__cxa_end_catch()
          to label %521 unwind label %477

521:                                              ; preds = %520
  br label %522

522:                                              ; preds = %544, %521
  br label %523

523:                                              ; preds = %522
  br label %524

524:                                              ; preds = %523
  br label %525

525:                                              ; preds = %524
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #9
  %526 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %527 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %528 unwind label %555

528:                                              ; preds = %525
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %19, ptr noundef nonnull align 8 dereferenceable(33088) %527, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %529 unwind label %559

529:                                              ; preds = %528
  call void @_ZNSt10shared_ptrI7HtnTermEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr null) #9
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.91") align 8 %18, ptr noundef %526, ptr noundef %19, ptr noundef %22)
          to label %530 unwind label %563

530:                                              ; preds = %529
  %531 = call noundef zeroext i1 @_ZSteqISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr null) #9
  %532 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %531)
          to label %533 unwind label %567

533:                                              ; preds = %530
  %534 = xor i1 %532, true
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #9
  br i1 %534, label %535, label %622

535:                                              ; preds = %533
  %536 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %537 unwind label %574

537:                                              ; preds = %535
  %538 = load ptr, ptr %536, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #9
  %539 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %540 unwind label %578

540:                                              ; preds = %537
  %541 = load ptr, ptr %539, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %23, ptr noundef nonnull align 8 dereferenceable(30) %541, i32 noundef 306)
          to label %542 unwind label %578

542:                                              ; preds = %540
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %538, ptr noundef nonnull align 8 dereferenceable(30) %23, ptr noundef @.str.75)
          to label %543 unwind label %578

543:                                              ; preds = %542
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #9
  br label %622

544:                                              ; preds = %467, %457
  br label %522

545:                                              ; preds = %510
  %546 = landingpad { ptr, i32 }
          cleanup
  %547 = extractvalue { ptr, i32 } %546, 0
  store ptr %547, ptr %4, align 8
  %548 = extractvalue { ptr, i32 } %546, 1
  store i32 %548, ptr %5, align 4
  br label %553

549:                                              ; preds = %519, %517, %514
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %4, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #9
  br label %553

553:                                              ; preds = %549, %545
  invoke void @__cxa_end_catch()
          to label %554 unwind label %3156

554:                                              ; preds = %553
  br label %3149

555:                                              ; preds = %525
  %556 = landingpad { ptr, i32 }
          catch ptr null
  %557 = extractvalue { ptr, i32 } %556, 0
  store ptr %557, ptr %4, align 8
  %558 = extractvalue { ptr, i32 } %556, 1
  store i32 %558, ptr %5, align 4
  br label %573

559:                                              ; preds = %528
  %560 = landingpad { ptr, i32 }
          catch ptr null
  %561 = extractvalue { ptr, i32 } %560, 0
  store ptr %561, ptr %4, align 8
  %562 = extractvalue { ptr, i32 } %560, 1
  store i32 %562, ptr %5, align 4
  br label %572

563:                                              ; preds = %529
  %564 = landingpad { ptr, i32 }
          catch ptr null
  %565 = extractvalue { ptr, i32 } %564, 0
  store ptr %565, ptr %4, align 8
  %566 = extractvalue { ptr, i32 } %564, 1
  store i32 %566, ptr %5, align 4
  br label %571

567:                                              ; preds = %530
  %568 = landingpad { ptr, i32 }
          catch ptr null
  %569 = extractvalue { ptr, i32 } %568, 0
  store ptr %569, ptr %4, align 8
  %570 = extractvalue { ptr, i32 } %568, 1
  store i32 %570, ptr %5, align 4
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  br label %571

571:                                              ; preds = %567, %563
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  br label %572

572:                                              ; preds = %571, %559
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  br label %573

573:                                              ; preds = %572, %555
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #9
  br label %582

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

578:                                              ; preds = %542, %540, %537
  %579 = landingpad { ptr, i32 }
          catch ptr null
  %580 = extractvalue { ptr, i32 } %579, 0
  store ptr %580, ptr %4, align 8
  %581 = extractvalue { ptr, i32 } %579, 1
  store i32 %581, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #9
  br label %582

582:                                              ; preds = %578, %574, %573
  %583 = load ptr, ptr %4, align 8
  %584 = call ptr @__cxa_begin_catch(ptr %583) #9
  %585 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %586 unwind label %623

586:                                              ; preds = %582
  %587 = load ptr, ptr %585, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #9
  %588 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %589 unwind label %627

589:                                              ; preds = %586
  %590 = load ptr, ptr %588, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %24, ptr noundef nonnull align 8 dereferenceable(30) %590, i32 noundef 306)
          to label %591 unwind label %627

591:                                              ; preds = %589
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %587, ptr noundef nonnull align 8 dereferenceable(30) %24, ptr noundef @.str.76)
          to label %592 unwind label %627

592:                                              ; preds = %591
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #9
  invoke void @__cxa_end_catch()
          to label %593 unwind label %477

593:                                              ; preds = %592
  br label %594

594:                                              ; preds = %622, %593
  br label %595

595:                                              ; preds = %594
  br label %596

596:                                              ; preds = %595
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #9
  %597 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %598 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %599 unwind label %633

599:                                              ; preds = %596
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %26, ptr noundef nonnull align 8 dereferenceable(33088) %598, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %600 unwind label %637

600:                                              ; preds = %599
  %601 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %602 unwind label %641

602:                                              ; preds = %600
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %29, ptr noundef nonnull align 8 dereferenceable(33088) %601, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %603 unwind label %645

603:                                              ; preds = %602
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.91") align 8 %25, ptr noundef %597, ptr noundef %26, ptr noundef %29)
          to label %604 unwind label %649

604:                                              ; preds = %603
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #9
  br label %605

605:                                              ; preds = %604
  %606 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(24) %606)
          to label %607 unwind label %657

607:                                              ; preds = %605
  call void @llvm.memset.p0.i64(ptr align 8 %33, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  %608 = invoke noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef %32, ptr noundef %33)
          to label %609 unwind label %661

609:                                              ; preds = %607
  %610 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %608)
          to label %611 unwind label %661

611:                                              ; preds = %609
  %612 = xor i1 %610, true
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #9
  br i1 %612, label %613, label %706

613:                                              ; preds = %611
  %614 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %615 unwind label %657

615:                                              ; preds = %613
  %616 = load ptr, ptr %614, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #9
  %617 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %618 unwind label %665

618:                                              ; preds = %615
  %619 = load ptr, ptr %617, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %34, ptr noundef nonnull align 8 dereferenceable(30) %619, i32 noundef 311)
          to label %620 unwind label %665

620:                                              ; preds = %618
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %616, ptr noundef nonnull align 8 dereferenceable(30) %34, ptr noundef @.str.78)
          to label %621 unwind label %665

621:                                              ; preds = %620
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #9
  br label %706

622:                                              ; preds = %543, %533
  br label %594

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

627:                                              ; preds = %591, %589, %586
  %628 = landingpad { ptr, i32 }
          cleanup
  %629 = extractvalue { ptr, i32 } %628, 0
  store ptr %629, ptr %4, align 8
  %630 = extractvalue { ptr, i32 } %628, 1
  store i32 %630, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #9
  br label %631

631:                                              ; preds = %627, %623
  invoke void @__cxa_end_catch()
          to label %632 unwind label %3156

632:                                              ; preds = %631
  br label %3149

633:                                              ; preds = %596
  %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
  br label %656

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

641:                                              ; preds = %600
  %642 = landingpad { ptr, i32 }
          cleanup
  %643 = extractvalue { ptr, i32 } %642, 0
  store ptr %643, ptr %4, align 8
  %644 = extractvalue { ptr, i32 } %642, 1
  store i32 %644, ptr %5, align 4
  br label %654

645:                                              ; preds = %602
  %646 = landingpad { ptr, i32 }
          cleanup
  %647 = extractvalue { ptr, i32 } %646, 0
  store ptr %647, ptr %4, align 8
  %648 = extractvalue { ptr, i32 } %646, 1
  store i32 %648, ptr %5, align 4
  br label %653

649:                                              ; preds = %603
  %650 = landingpad { ptr, i32 }
          cleanup
  %651 = extractvalue { ptr, i32 } %650, 0
  store ptr %651, ptr %4, align 8
  %652 = extractvalue { ptr, i32 } %650, 1
  store i32 %652, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #9
  br label %653

653:                                              ; preds = %649, %645
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  br label %654

654:                                              ; preds = %653, %641
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #9
  br label %655

655:                                              ; preds = %654, %637
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  br label %656

656:                                              ; preds = %655, %633
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #9
  br label %3148

657:                                              ; preds = %613, %605
  %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
  br label %669

661:                                              ; preds = %609, %607
  %662 = landingpad { ptr, i32 }
          catch ptr null
  %663 = extractvalue { ptr, i32 } %662, 0
  store ptr %663, ptr %4, align 8
  %664 = extractvalue { ptr, i32 } %662, 1
  store i32 %664, ptr %5, align 4
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #9
  br label %669

665:                                              ; preds = %620, %618, %615
  %666 = landingpad { ptr, i32 }
          catch ptr null
  %667 = extractvalue { ptr, i32 } %666, 0
  store ptr %667, ptr %4, align 8
  %668 = extractvalue { ptr, i32 } %666, 1
  store i32 %668, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #9
  br label %669

669:                                              ; preds = %665, %661, %657
  %670 = load ptr, ptr %4, align 8
  %671 = call ptr @__cxa_begin_catch(ptr %670) #9
  %672 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %673 unwind label %707

673:                                              ; preds = %669
  %674 = load ptr, ptr %672, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #9
  %675 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %676 unwind label %711

676:                                              ; preds = %673
  %677 = load ptr, ptr %675, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %35, ptr noundef nonnull align 8 dereferenceable(30) %677, i32 noundef 311)
          to label %678 unwind label %711

678:                                              ; preds = %676
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %674, ptr noundef nonnull align 8 dereferenceable(30) %35, ptr noundef @.str.79)
          to label %679 unwind label %711

679:                                              ; preds = %678
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #9
  invoke void @__cxa_end_catch()
          to label %680 unwind label %715

680:                                              ; preds = %679
  br label %681

681:                                              ; preds = %706, %680
  br label %682

682:                                              ; preds = %681
  br label %683

683:                                              ; preds = %682
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #9
  %684 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %685 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %686 unwind label %721

686:                                              ; preds = %683
  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) %685, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %687 unwind label %725

687:                                              ; preds = %686
  %688 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %689 unwind label %729

689:                                              ; preds = %687
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %40, ptr noundef nonnull align 8 dereferenceable(33088) %688, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %690 unwind label %733

690:                                              ; preds = %689
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.91") align 8 %36, ptr noundef %684, ptr noundef %37, ptr noundef %40)
          to label %691 unwind label %737

691:                                              ; preds = %690
  %692 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %36) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #9
  br label %693

693:                                              ; preds = %691
  %694 = call noundef zeroext i1 @_ZSteqISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr null) #9
  %695 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %694)
          to label %696 unwind label %745

696:                                              ; preds = %693
  br i1 %695, label %815, label %697

697:                                              ; preds = %696
  %698 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %699 unwind label %745

699:                                              ; preds = %697
  %700 = load ptr, ptr %698, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #9
  %701 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %702 unwind label %749

702:                                              ; preds = %699
  %703 = load ptr, ptr %701, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %43, ptr noundef nonnull align 8 dereferenceable(30) %703, i32 noundef 315)
          to label %704 unwind label %749

704:                                              ; preds = %702
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %700, ptr noundef nonnull align 8 dereferenceable(30) %43, ptr noundef @.str.81)
          to label %705 unwind label %749

705:                                              ; preds = %704
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #9
  br label %815

706:                                              ; preds = %621, %611
  br label %681

707:                                              ; preds = %669
  %708 = landingpad { ptr, i32 }
          cleanup
  %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 %719

711:                                              ; preds = %678, %676, %673
  %712 = landingpad { ptr, i32 }
          cleanup
  %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
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #9
  br label %719

715:                                              ; preds = %2017, %1702, %1387, %1173, %919, %763, %679
  %716 = landingpad { ptr, i32 }
          cleanup
  %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
  br label %3147

719:                                              ; preds = %711, %707
  invoke void @__cxa_end_catch()
          to label %720 unwind label %3156

720:                                              ; preds = %719
  br label %3147

721:                                              ; preds = %683
  %722 = landingpad { ptr, i32 }
          cleanup
  %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 %744

725:                                              ; preds = %686
  %726 = landingpad { ptr, i32 }
          cleanup
  %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
  br label %743

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

733:                                              ; preds = %689
  %734 = landingpad { ptr, i32 }
          cleanup
  %735 = extractvalue { ptr, i32 } %734, 0
  store ptr %735, ptr %4, align 8
  %736 = extractvalue { ptr, i32 } %734, 1
  store i32 %736, ptr %5, align 4
  br label %741

737:                                              ; preds = %690
  %738 = landingpad { ptr, i32 }
          cleanup
  %739 = extractvalue { ptr, i32 } %738, 0
  store ptr %739, ptr %4, align 8
  %740 = extractvalue { ptr, i32 } %738, 1
  store i32 %740, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #9
  br label %741

741:                                              ; preds = %737, %733
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #9
  br label %742

742:                                              ; preds = %741, %729
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #9
  br label %743

743:                                              ; preds = %742, %725
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  br label %744

744:                                              ; preds = %743, %721
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #9
  br label %3147

745:                                              ; preds = %697, %693
  %746 = landingpad { ptr, i32 }
          catch ptr null
  %747 = extractvalue { ptr, i32 } %746, 0
  store ptr %747, ptr %4, align 8
  %748 = extractvalue { ptr, i32 } %746, 1
  store i32 %748, ptr %5, align 4
  br label %753

749:                                              ; preds = %704, %702, %699
  %750 = landingpad { ptr, i32 }
          catch ptr null
  %751 = extractvalue { ptr, i32 } %750, 0
  store ptr %751, ptr %4, align 8
  %752 = extractvalue { ptr, i32 } %750, 1
  store i32 %752, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #9
  br label %753

753:                                              ; preds = %749, %745
  %754 = load ptr, ptr %4, align 8
  %755 = call ptr @__cxa_begin_catch(ptr %754) #9
  %756 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %757 unwind label %816

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

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

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

763:                                              ; preds = %762
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #9
  invoke void @__cxa_end_catch()
          to label %764 unwind label %715

764:                                              ; preds = %763
  br label %765

765:                                              ; preds = %815, %764
  br label %766

766:                                              ; preds = %765
  br label %767

767:                                              ; preds = %766
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #9
  %768 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %769 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %770 unwind label %826

770:                                              ; preds = %767
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %46, ptr noundef nonnull align 8 dereferenceable(33088) %769, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %771 unwind label %830

771:                                              ; preds = %770
  %772 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %773 unwind label %834

773:                                              ; preds = %771
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %49, ptr noundef nonnull align 8 dereferenceable(33088) %772, ptr noundef nonnull align 8 dereferenceable(32) %50)
          to label %774 unwind label %838

774:                                              ; preds = %773
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.91") align 8 %45, ptr noundef %768, ptr noundef %46, ptr noundef %49)
          to label %775 unwind label %842

775:                                              ; preds = %774
  %776 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %45) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #9
  br label %777

777:                                              ; preds = %775
  %778 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %52, ptr noundef nonnull align 8 dereferenceable(24) %778)
          to label %779 unwind label %850

779:                                              ; preds = %777
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #9
  store i1 true, ptr %63, align 1
  store ptr %55, ptr %56, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #9
  %780 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %781 unwind label %854

781:                                              ; preds = %779
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %57, ptr noundef nonnull align 8 dereferenceable(33088) %780, ptr noundef nonnull align 8 dereferenceable(32) %58)
          to label %782 unwind label %858

782:                                              ; preds = %781
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #9
  %783 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %784 unwind label %862

784:                                              ; preds = %782
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %60, ptr noundef nonnull align 8 dereferenceable(33088) %783, ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %785 unwind label %866

785:                                              ; preds = %784
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 8 dereferenceable(16) %57, ptr noundef nonnull align 8 dereferenceable(16) %60)
          to label %786 unwind label %870

786:                                              ; preds = %785
  store i1 false, ptr %63, align 1
  %787 = getelementptr inbounds %"class.std::initializer_list", ptr %54, i32 0, i32 0
  store ptr %55, ptr %787, align 8, !tbaa !9
  %788 = getelementptr inbounds %"class.std::initializer_list", ptr %54, i32 0, i32 1
  store i64 1, ptr %788, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #9
  %789 = getelementptr inbounds { ptr, i64 }, ptr %54, i32 0, i32 0
  %790 = load ptr, ptr %789, align 8
  %791 = getelementptr inbounds { ptr, i64 }, ptr %54, i32 0, i32 1
  %792 = load i64, ptr %791, align 8
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %53, ptr %790, i64 %792, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %793 unwind label %874

793:                                              ; preds = %786
  %794 = invoke noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef %52, ptr noundef %53)
          to label %795 unwind label %878

795:                                              ; preds = %793
  %796 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %794)
          to label %797 unwind label %878

797:                                              ; preds = %795
  %798 = xor i1 %796, true
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #9
  %799 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %55, i32 0, i32 0
  %800 = getelementptr inbounds %"struct.std::pair", ptr %799, i64 1
  br label %801

801:                                              ; preds = %801, %797
  %802 = phi ptr [ %800, %797 ], [ %803, %801 ]
  %803 = getelementptr inbounds %"struct.std::pair", ptr %802, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %803) #9
  %804 = icmp eq ptr %803, %799
  br i1 %804, label %805, label %801

805:                                              ; preds = %801
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #9
  br i1 %798, label %806, label %1005

806:                                              ; preds = %805
  %807 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %808 unwind label %850

808:                                              ; preds = %806
  %809 = load ptr, ptr %807, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #9
  %810 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %811 unwind label %905

811:                                              ; preds = %808
  %812 = load ptr, ptr %810, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %65, ptr noundef nonnull align 8 dereferenceable(30) %812, i32 noundef 319)
          to label %813 unwind label %905

813:                                              ; preds = %811
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %809, ptr noundef nonnull align 8 dereferenceable(30) %65, ptr noundef @.str.84)
          to label %814 unwind label %905

814:                                              ; preds = %813
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #9
  br label %1005

815:                                              ; preds = %705, %696
  br label %765

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

820:                                              ; preds = %762, %760, %757
  %821 = landingpad { ptr, i32 }
          cleanup
  %822 = extractvalue { ptr, i32 } %821, 0
  store ptr %822, ptr %4, align 8
  %823 = extractvalue { ptr, i32 } %821, 1
  store i32 %823, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #9
  br label %824

824:                                              ; preds = %820, %816
  invoke void @__cxa_end_catch()
          to label %825 unwind label %3156

825:                                              ; preds = %824
  br label %3147

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

830:                                              ; preds = %770
  %831 = landingpad { ptr, i32 }
          cleanup
  %832 = extractvalue { ptr, i32 } %831, 0
  store ptr %832, ptr %4, align 8
  %833 = extractvalue { ptr, i32 } %831, 1
  store i32 %833, ptr %5, align 4
  br label %848

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

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

842:                                              ; preds = %774
  %843 = landingpad { ptr, i32 }
          cleanup
  %844 = extractvalue { ptr, i32 } %843, 0
  store ptr %844, ptr %4, align 8
  %845 = extractvalue { ptr, i32 } %843, 1
  store i32 %845, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #9
  br label %846

846:                                              ; preds = %842, %838
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  br label %847

847:                                              ; preds = %846, %834
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #9
  br label %848

848:                                              ; preds = %847, %830
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  br label %849

849:                                              ; preds = %848, %826
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #9
  br label %3147

850:                                              ; preds = %806, %777
  %851 = landingpad { ptr, i32 }
          catch ptr null
  %852 = extractvalue { ptr, i32 } %851, 0
  store ptr %852, ptr %4, align 8
  %853 = extractvalue { ptr, i32 } %851, 1
  store i32 %853, ptr %5, align 4
  br label %909

854:                                              ; preds = %779
  %855 = landingpad { ptr, i32 }
          catch ptr null
  %856 = extractvalue { ptr, i32 } %855, 0
  store ptr %856, ptr %4, align 8
  %857 = extractvalue { ptr, i32 } %855, 1
  store i32 %857, ptr %5, align 4
  br label %894

858:                                              ; preds = %781
  %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 %893

862:                                              ; preds = %782
  %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 %892

866:                                              ; preds = %784
  %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 %891

870:                                              ; preds = %785
  %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 %890

874:                                              ; preds = %786
  %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
  br label %882

878:                                              ; preds = %795, %793
  %879 = landingpad { ptr, i32 }
          catch ptr null
  %880 = extractvalue { ptr, i32 } %879, 0
  store ptr %880, ptr %4, align 8
  %881 = extractvalue { ptr, i32 } %879, 1
  store i32 %881, ptr %5, align 4
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #9
  br label %882

882:                                              ; preds = %878, %874
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #9
  %883 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %55, i32 0, i32 0
  %884 = getelementptr inbounds %"struct.std::pair", ptr %883, i64 1
  br label %885

885:                                              ; preds = %885, %882
  %886 = phi ptr [ %884, %882 ], [ %887, %885 ]
  %887 = getelementptr inbounds %"struct.std::pair", ptr %886, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %887) #9
  %888 = icmp eq ptr %887, %883
  br i1 %888, label %889, label %885

889:                                              ; preds = %885
  br label %890

890:                                              ; preds = %889, %870
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #9
  br label %891

891:                                              ; preds = %890, %866
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  br label %892

892:                                              ; preds = %891, %862
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #9
  br label %893

893:                                              ; preds = %892, %858
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #9
  br label %894

894:                                              ; preds = %893, %854
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #9
  %895 = load i1, ptr %63, align 1
  br i1 %895, label %896, label %904

896:                                              ; preds = %894
  %897 = load ptr, ptr %56, align 8
  %898 = icmp eq ptr %55, %897
  br i1 %898, label %903, label %899

899:                                              ; preds = %899, %896
  %900 = phi ptr [ %897, %896 ], [ %901, %899 ]
  %901 = getelementptr inbounds %"struct.std::pair", ptr %900, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %901) #9
  %902 = icmp eq ptr %901, %55
  br i1 %902, label %903, label %899

903:                                              ; preds = %899, %896
  br label %904

904:                                              ; preds = %903, %894
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #9
  br label %909

905:                                              ; preds = %813, %811, %808
  %906 = landingpad { ptr, i32 }
          catch ptr null
  %907 = extractvalue { ptr, i32 } %906, 0
  store ptr %907, ptr %4, align 8
  %908 = extractvalue { ptr, i32 } %906, 1
  store i32 %908, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #9
  br label %909

909:                                              ; preds = %905, %904, %850
  %910 = load ptr, ptr %4, align 8
  %911 = call ptr @__cxa_begin_catch(ptr %910) #9
  %912 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %913 unwind label %1006

913:                                              ; preds = %909
  %914 = load ptr, ptr %912, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #9
  %915 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %916 unwind label %1010

916:                                              ; preds = %913
  %917 = load ptr, ptr %915, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %66, ptr noundef nonnull align 8 dereferenceable(30) %917, i32 noundef 319)
          to label %918 unwind label %1010

918:                                              ; preds = %916
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %914, ptr noundef nonnull align 8 dereferenceable(30) %66, ptr noundef @.str.85)
          to label %919 unwind label %1010

919:                                              ; preds = %918
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #9
  invoke void @__cxa_end_catch()
          to label %920 unwind label %715

920:                                              ; preds = %919
  br label %921

921:                                              ; preds = %1005, %920
  br label %922

922:                                              ; preds = %921
  br label %923

923:                                              ; preds = %922
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #9
  %924 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %925 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef @.str.86, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %926 unwind label %1016

926:                                              ; preds = %923
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #9
  store i1 true, ptr %77, align 1
  store ptr %73, ptr %74, align 8
  %927 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %75) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef @.str.87, ptr noundef nonnull align 1 dereferenceable(1) %76)
          to label %928 unwind label %1020

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

929:                                              ; preds = %928
  store i1 false, ptr %77, align 1
  %930 = getelementptr inbounds %"class.std::initializer_list.94", ptr %72, i32 0, i32 0
  store ptr %73, ptr %930, align 8, !tbaa !13
  %931 = getelementptr inbounds %"class.std::initializer_list.94", ptr %72, i32 0, i32 1
  store i64 1, ptr %931, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #9
  %932 = getelementptr inbounds { ptr, i64 }, ptr %72, i32 0, i32 0
  %933 = load ptr, ptr %932, align 8
  %934 = getelementptr inbounds { ptr, i64 }, ptr %72, i32 0, i32 1
  %935 = load i64, ptr %934, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %71, ptr %933, i64 %935, ptr noundef nonnull align 1 dereferenceable(1) %78)
          to label %936 unwind label %1028

936:                                              ; preds = %929
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %68, ptr noundef nonnull align 8 dereferenceable(33088) %925, ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef %71)
          to label %937 unwind label %1032

937:                                              ; preds = %936
  %938 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %80) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef @.str.86, ptr noundef nonnull align 1 dereferenceable(1) %81)
          to label %939 unwind label %1036

939:                                              ; preds = %937
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #9
  store i1 true, ptr %88, align 1
  store ptr %84, ptr %85, align 8
  %940 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %86) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %87)
          to label %941 unwind label %1040

941:                                              ; preds = %939
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %84, ptr noundef nonnull align 8 dereferenceable(33088) %940, ptr noundef nonnull align 8 dereferenceable(32) %86)
          to label %942 unwind label %1044

942:                                              ; preds = %941
  store i1 false, ptr %88, align 1
  %943 = getelementptr inbounds %"class.std::initializer_list.94", ptr %83, i32 0, i32 0
  store ptr %84, ptr %943, align 8, !tbaa !13
  %944 = getelementptr inbounds %"class.std::initializer_list.94", ptr %83, i32 0, i32 1
  store i64 1, ptr %944, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #9
  %945 = getelementptr inbounds { ptr, i64 }, ptr %83, i32 0, i32 0
  %946 = load ptr, ptr %945, align 8
  %947 = getelementptr inbounds { ptr, i64 }, ptr %83, i32 0, i32 1
  %948 = load i64, ptr %947, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %82, ptr %946, i64 %948, ptr noundef nonnull align 1 dereferenceable(1) %89)
          to label %949 unwind label %1048

949:                                              ; preds = %942
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %79, ptr noundef nonnull align 8 dereferenceable(33088) %938, ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef %82)
          to label %950 unwind label %1052

950:                                              ; preds = %949
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.91") align 8 %67, ptr noundef %924, ptr noundef %68, ptr noundef %79)
          to label %951 unwind label %1056

951:                                              ; preds = %950
  %952 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %67) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %82) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #9
  %953 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %84, i32 0, i32 0
  %954 = getelementptr inbounds %"class.std::shared_ptr", ptr %953, i64 1
  br label %955

955:                                              ; preds = %955, %951
  %956 = phi ptr [ %954, %951 ], [ %957, %955 ]
  %957 = getelementptr inbounds %"class.std::shared_ptr", ptr %956, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %957) #9
  %958 = icmp eq ptr %957, %953
  br i1 %958, label %959, label %955

959:                                              ; preds = %955
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %68) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %71) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #9
  %960 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %73, i32 0, i32 0
  %961 = getelementptr inbounds %"class.std::shared_ptr", ptr %960, i64 1
  br label %962

962:                                              ; preds = %962, %959
  %963 = phi ptr [ %961, %959 ], [ %964, %962 ]
  %964 = getelementptr inbounds %"class.std::shared_ptr", ptr %963, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %964) #9
  %965 = icmp eq ptr %964, %960
  br i1 %965, label %966, label %962

966:                                              ; preds = %962
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #9
  br label %967

967:                                              ; preds = %966
  %968 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %90, ptr noundef nonnull align 8 dereferenceable(24) %968)
          to label %969 unwind label %1104

969:                                              ; preds = %967
  call void @llvm.lifetime.start.p0(i64 32, ptr %93) #9
  store i1 true, ptr %101, align 1
  store ptr %93, ptr %94, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %95) #9
  %970 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %96) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %97)
          to label %971 unwind label %1108

971:                                              ; preds = %969
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %95, ptr noundef nonnull align 8 dereferenceable(33088) %970, ptr noundef nonnull align 8 dereferenceable(32) %96)
          to label %972 unwind label %1112

972:                                              ; preds = %971
  call void @llvm.lifetime.start.p0(i64 16, ptr %98) #9
  %973 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %99) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %99, ptr noundef @.str.87, ptr noundef nonnull align 1 dereferenceable(1) %100)
          to label %974 unwind label %1116

974:                                              ; preds = %972
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %98, ptr noundef nonnull align 8 dereferenceable(33088) %973, ptr noundef nonnull align 8 dereferenceable(32) %99)
          to label %975 unwind label %1120

975:                                              ; preds = %974
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef nonnull align 8 dereferenceable(16) %95, ptr noundef nonnull align 8 dereferenceable(16) %98)
          to label %976 unwind label %1124

976:                                              ; preds = %975
  store i1 false, ptr %101, align 1
  %977 = getelementptr inbounds %"class.std::initializer_list", ptr %92, i32 0, i32 0
  store ptr %93, ptr %977, align 8, !tbaa !9
  %978 = getelementptr inbounds %"class.std::initializer_list", ptr %92, i32 0, i32 1
  store i64 1, ptr %978, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #9
  %979 = getelementptr inbounds { ptr, i64 }, ptr %92, i32 0, i32 0
  %980 = load ptr, ptr %979, align 8
  %981 = getelementptr inbounds { ptr, i64 }, ptr %92, i32 0, i32 1
  %982 = load i64, ptr %981, align 8
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %91, ptr %980, i64 %982, ptr noundef nonnull align 1 dereferenceable(1) %102)
          to label %983 unwind label %1128

983:                                              ; preds = %976
  %984 = invoke noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef %90, ptr noundef %91)
          to label %985 unwind label %1132

985:                                              ; preds = %983
  %986 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %984)
          to label %987 unwind label %1132

987:                                              ; preds = %985
  %988 = xor i1 %986, true
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %91) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #9
  %989 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %93, i32 0, i32 0
  %990 = getelementptr inbounds %"struct.std::pair", ptr %989, i64 1
  br label %991

991:                                              ; preds = %991, %987
  %992 = phi ptr [ %990, %987 ], [ %993, %991 ]
  %993 = getelementptr inbounds %"struct.std::pair", ptr %992, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %993) #9
  %994 = icmp eq ptr %993, %989
  br i1 %994, label %995, label %991

995:                                              ; preds = %991
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %98) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %99) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %96) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #9
  br i1 %988, label %996, label %1246

996:                                              ; preds = %995
  %997 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %998 unwind label %1104

998:                                              ; preds = %996
  %999 = load ptr, ptr %997, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %103) #9
  %1000 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1001 unwind label %1159

1001:                                             ; preds = %998
  %1002 = load ptr, ptr %1000, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %103, ptr noundef nonnull align 8 dereferenceable(30) %1002, i32 noundef 324)
          to label %1003 unwind label %1159

1003:                                             ; preds = %1001
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %999, ptr noundef nonnull align 8 dereferenceable(30) %103, ptr noundef @.str.88)
          to label %1004 unwind label %1159

1004:                                             ; preds = %1003
  call void @llvm.lifetime.end.p0(i64 32, ptr %103) #9
  br label %1246

1005:                                             ; preds = %814, %805
  br label %921

1006:                                             ; preds = %909
  %1007 = landingpad { ptr, i32 }
          cleanup
  %1008 = extractvalue { ptr, i32 } %1007, 0
  store ptr %1008, ptr %4, align 8
  %1009 = extractvalue { ptr, i32 } %1007, 1
  store i32 %1009, ptr %5, align 4
  br label %1014

1010:                                             ; preds = %918, %916, %913
  %1011 = landingpad { ptr, i32 }
          cleanup
  %1012 = extractvalue { ptr, i32 } %1011, 0
  store ptr %1012, ptr %4, align 8
  %1013 = extractvalue { ptr, i32 } %1011, 1
  store i32 %1013, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #9
  br label %1014

1014:                                             ; preds = %1010, %1006
  invoke void @__cxa_end_catch()
          to label %1015 unwind label %3156

1015:                                             ; preds = %1014
  br label %3147

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

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

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

1028:                                             ; preds = %929
  %1029 = landingpad { ptr, i32 }
          cleanup
  %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 %1083

1032:                                             ; preds = %936
  %1033 = landingpad { ptr, i32 }
          cleanup
  %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
  br label %1082

1036:                                             ; preds = %937
  %1037 = landingpad { ptr, i32 }
          cleanup
  %1038 = extractvalue { ptr, i32 } %1037, 0
  store ptr %1038, ptr %4, align 8
  %1039 = extractvalue { ptr, i32 } %1037, 1
  store i32 %1039, ptr %5, align 4
  br label %1081

1040:                                             ; preds = %939
  %1041 = landingpad { ptr, i32 }
          cleanup
  %1042 = extractvalue { ptr, i32 } %1041, 0
  store ptr %1042, ptr %4, align 8
  %1043 = extractvalue { ptr, i32 } %1041, 1
  store i32 %1043, ptr %5, align 4
  br label %1070

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

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

1052:                                             ; preds = %949
  %1053 = landingpad { ptr, i32 }
          cleanup
  %1054 = extractvalue { ptr, i32 } %1053, 0
  store ptr %1054, ptr %4, align 8
  %1055 = extractvalue { ptr, i32 } %1053, 1
  store i32 %1055, ptr %5, align 4
  br label %1060

1056:                                             ; preds = %950
  %1057 = landingpad { ptr, i32 }
          cleanup
  %1058 = extractvalue { ptr, i32 } %1057, 0
  store ptr %1058, ptr %4, align 8
  %1059 = extractvalue { ptr, i32 } %1057, 1
  store i32 %1059, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #9
  br label %1060

1060:                                             ; preds = %1056, %1052
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %82) #9
  br label %1061

1061:                                             ; preds = %1060, %1048
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #9
  %1062 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %84, i32 0, i32 0
  %1063 = getelementptr inbounds %"class.std::shared_ptr", ptr %1062, i64 1
  br label %1064

1064:                                             ; preds = %1064, %1061
  %1065 = phi ptr [ %1063, %1061 ], [ %1066, %1064 ]
  %1066 = getelementptr inbounds %"class.std::shared_ptr", ptr %1065, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1066) #9
  %1067 = icmp eq ptr %1066, %1062
  br i1 %1067, label %1068, label %1064

1068:                                             ; preds = %1064
  br label %1069

1069:                                             ; preds = %1068, %1044
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #9
  br label %1070

1070:                                             ; preds = %1069, %1040
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #9
  %1071 = load i1, ptr %88, align 1
  br i1 %1071, label %1072, label %1080

1072:                                             ; preds = %1070
  %1073 = load ptr, ptr %85, align 8
  %1074 = icmp eq ptr %84, %1073
  br i1 %1074, label %1079, label %1075

1075:                                             ; preds = %1075, %1072
  %1076 = phi ptr [ %1073, %1072 ], [ %1077, %1075 ]
  %1077 = getelementptr inbounds %"class.std::shared_ptr", ptr %1076, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1077) #9
  %1078 = icmp eq ptr %1077, %84
  br i1 %1078, label %1079, label %1075

1079:                                             ; preds = %1075, %1072
  br label %1080

1080:                                             ; preds = %1079, %1070
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #9
  br label %1081

1081:                                             ; preds = %1080, %1036
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %68) #9
  br label %1082

1082:                                             ; preds = %1081, %1032
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %71) #9
  br label %1083

1083:                                             ; preds = %1082, %1028
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #9
  %1084 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %73, i32 0, i32 0
  %1085 = getelementptr inbounds %"class.std::shared_ptr", ptr %1084, i64 1
  br label %1086

1086:                                             ; preds = %1086, %1083
  %1087 = phi ptr [ %1085, %1083 ], [ %1088, %1086 ]
  %1088 = getelementptr inbounds %"class.std::shared_ptr", ptr %1087, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1088) #9
  %1089 = icmp eq ptr %1088, %1084
  br i1 %1089, label %1090, label %1086

1090:                                             ; preds = %1086
  br label %1091

1091:                                             ; preds = %1090, %1024
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #9
  br label %1092

1092:                                             ; preds = %1091, %1020
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #9
  %1093 = load i1, ptr %77, align 1
  br i1 %1093, label %1094, label %1102

1094:                                             ; preds = %1092
  %1095 = load ptr, ptr %74, align 8
  %1096 = icmp eq ptr %73, %1095
  br i1 %1096, label %1101, label %1097

1097:                                             ; preds = %1097, %1094
  %1098 = phi ptr [ %1095, %1094 ], [ %1099, %1097 ]
  %1099 = getelementptr inbounds %"class.std::shared_ptr", ptr %1098, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1099) #9
  %1100 = icmp eq ptr %1099, %73
  br i1 %1100, label %1101, label %1097

1101:                                             ; preds = %1097, %1094
  br label %1102

1102:                                             ; preds = %1101, %1092
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #9
  br label %1103

1103:                                             ; preds = %1102, %1016
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #9
  br label %3147

1104:                                             ; preds = %996, %967
  %1105 = landingpad { ptr, i32 }
          catch ptr null
  %1106 = extractvalue { ptr, i32 } %1105, 0
  store ptr %1106, ptr %4, align 8
  %1107 = extractvalue { ptr, i32 } %1105, 1
  store i32 %1107, ptr %5, align 4
  br label %1163

1108:                                             ; preds = %969
  %1109 = landingpad { ptr, i32 }
          catch ptr null
  %1110 = extractvalue { ptr, i32 } %1109, 0
  store ptr %1110, ptr %4, align 8
  %1111 = extractvalue { ptr, i32 } %1109, 1
  store i32 %1111, ptr %5, align 4
  br label %1148

1112:                                             ; preds = %971
  %1113 = landingpad { ptr, i32 }
          catch ptr null
  %1114 = extractvalue { ptr, i32 } %1113, 0
  store ptr %1114, ptr %4, align 8
  %1115 = extractvalue { ptr, i32 } %1113, 1
  store i32 %1115, ptr %5, align 4
  br label %1147

1116:                                             ; preds = %972
  %1117 = landingpad { ptr, i32 }
          catch ptr null
  %1118 = extractvalue { ptr, i32 } %1117, 0
  store ptr %1118, ptr %4, align 8
  %1119 = extractvalue { ptr, i32 } %1117, 1
  store i32 %1119, ptr %5, align 4
  br label %1146

1120:                                             ; preds = %974
  %1121 = landingpad { ptr, i32 }
          catch ptr null
  %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 %1145

1124:                                             ; preds = %975
  %1125 = landingpad { ptr, i32 }
          catch ptr null
  %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 %1144

1128:                                             ; preds = %976
  %1129 = landingpad { ptr, i32 }
          catch ptr null
  %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 %1136

1132:                                             ; preds = %985, %983
  %1133 = landingpad { ptr, i32 }
          catch ptr null
  %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
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %91) #9
  br label %1136

1136:                                             ; preds = %1132, %1128
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #9
  %1137 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %93, i32 0, i32 0
  %1138 = getelementptr inbounds %"struct.std::pair", ptr %1137, i64 1
  br label %1139

1139:                                             ; preds = %1139, %1136
  %1140 = phi ptr [ %1138, %1136 ], [ %1141, %1139 ]
  %1141 = getelementptr inbounds %"struct.std::pair", ptr %1140, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1141) #9
  %1142 = icmp eq ptr %1141, %1137
  br i1 %1142, label %1143, label %1139

1143:                                             ; preds = %1139
  br label %1144

1144:                                             ; preds = %1143, %1124
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %98) #9
  br label %1145

1145:                                             ; preds = %1144, %1120
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #9
  br label %1146

1146:                                             ; preds = %1145, %1116
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %99) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #9
  br label %1147

1147:                                             ; preds = %1146, %1112
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #9
  br label %1148

1148:                                             ; preds = %1147, %1108
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %96) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #9
  %1149 = load i1, ptr %101, align 1
  br i1 %1149, label %1150, label %1158

1150:                                             ; preds = %1148
  %1151 = load ptr, ptr %94, align 8
  %1152 = icmp eq ptr %93, %1151
  br i1 %1152, label %1157, label %1153

1153:                                             ; preds = %1153, %1150
  %1154 = phi ptr [ %1151, %1150 ], [ %1155, %1153 ]
  %1155 = getelementptr inbounds %"struct.std::pair", ptr %1154, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1155) #9
  %1156 = icmp eq ptr %1155, %93
  br i1 %1156, label %1157, label %1153

1157:                                             ; preds = %1153, %1150
  br label %1158

1158:                                             ; preds = %1157, %1148
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #9
  br label %1163

1159:                                             ; preds = %1003, %1001, %998
  %1160 = landingpad { ptr, i32 }
          catch ptr null
  %1161 = extractvalue { ptr, i32 } %1160, 0
  store ptr %1161, ptr %4, align 8
  %1162 = extractvalue { ptr, i32 } %1160, 1
  store i32 %1162, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %103) #9
  br label %1163

1163:                                             ; preds = %1159, %1158, %1104
  %1164 = load ptr, ptr %4, align 8
  %1165 = call ptr @__cxa_begin_catch(ptr %1164) #9
  %1166 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1167 unwind label %1247

1167:                                             ; preds = %1163
  %1168 = load ptr, ptr %1166, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %104) #9
  %1169 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1170 unwind label %1251

1170:                                             ; preds = %1167
  %1171 = load ptr, ptr %1169, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %104, ptr noundef nonnull align 8 dereferenceable(30) %1171, i32 noundef 324)
          to label %1172 unwind label %1251

1172:                                             ; preds = %1170
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1168, ptr noundef nonnull align 8 dereferenceable(30) %104, ptr noundef @.str.89)
          to label %1173 unwind label %1251

1173:                                             ; preds = %1172
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #9
  invoke void @__cxa_end_catch()
          to label %1174 unwind label %715

1174:                                             ; preds = %1173
  br label %1175

1175:                                             ; preds = %1246, %1174
  br label %1176

1176:                                             ; preds = %1175
  br label %1177

1177:                                             ; preds = %1176
  call void @llvm.lifetime.start.p0(i64 16, ptr %105) #9
  %1178 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %1179 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %107) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %108) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %108)
          to label %1180 unwind label %1257

1180:                                             ; preds = %1177
  call void @llvm.lifetime.start.p0(i64 32, ptr %111) #9
  store i1 true, ptr %117, align 1
  store ptr %111, ptr %112, align 8
  %1181 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %113) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %114) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %113, ptr noundef @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %114)
          to label %1182 unwind label %1261

1182:                                             ; preds = %1180
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %111, ptr noundef nonnull align 8 dereferenceable(33088) %1181, ptr noundef nonnull align 8 dereferenceable(32) %113)
          to label %1183 unwind label %1265

1183:                                             ; preds = %1182
  %1184 = getelementptr inbounds %"class.std::shared_ptr", ptr %111, i64 1
  store ptr %1184, ptr %112, align 8
  %1185 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %115) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %116) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %116)
          to label %1186 unwind label %1269

1186:                                             ; preds = %1183
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %1184, ptr noundef nonnull align 8 dereferenceable(33088) %1185, ptr noundef nonnull align 8 dereferenceable(32) %115)
          to label %1187 unwind label %1273

1187:                                             ; preds = %1186
  store i1 false, ptr %117, align 1
  %1188 = getelementptr inbounds %"class.std::initializer_list.94", ptr %110, i32 0, i32 0
  store ptr %111, ptr %1188, align 8, !tbaa !13
  %1189 = getelementptr inbounds %"class.std::initializer_list.94", ptr %110, i32 0, i32 1
  store i64 2, ptr %1189, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %118) #9
  %1190 = getelementptr inbounds { ptr, i64 }, ptr %110, i32 0, i32 0
  %1191 = load ptr, ptr %1190, align 8
  %1192 = getelementptr inbounds { ptr, i64 }, ptr %110, i32 0, i32 1
  %1193 = load i64, ptr %1192, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %109, ptr %1191, i64 %1193, ptr noundef nonnull align 1 dereferenceable(1) %118)
          to label %1194 unwind label %1277

1194:                                             ; preds = %1187
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %106, ptr noundef nonnull align 8 dereferenceable(33088) %1179, ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef %109)
          to label %1195 unwind label %1281

1195:                                             ; preds = %1194
  %1196 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %120) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %121) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %121) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %121)
          to label %1197 unwind label %1285

1197:                                             ; preds = %1195
  call void @llvm.lifetime.start.p0(i64 32, ptr %124) #9
  store i1 true, ptr %130, align 1
  store ptr %124, ptr %125, align 8
  %1198 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %126) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %127) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %127)
          to label %1199 unwind label %1289

1199:                                             ; preds = %1197
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %124, ptr noundef nonnull align 8 dereferenceable(33088) %1198, ptr noundef nonnull align 8 dereferenceable(32) %126)
          to label %1200 unwind label %1293

1200:                                             ; preds = %1199
  %1201 = getelementptr inbounds %"class.std::shared_ptr", ptr %124, i64 1
  store ptr %1201, ptr %125, align 8
  %1202 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %128) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %129) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %129) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %128, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %129)
          to label %1203 unwind label %1297

1203:                                             ; preds = %1200
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %1201, ptr noundef nonnull align 8 dereferenceable(33088) %1202, ptr noundef nonnull align 8 dereferenceable(32) %128)
          to label %1204 unwind label %1301

1204:                                             ; preds = %1203
  store i1 false, ptr %130, align 1
  %1205 = getelementptr inbounds %"class.std::initializer_list.94", ptr %123, i32 0, i32 0
  store ptr %124, ptr %1205, align 8, !tbaa !13
  %1206 = getelementptr inbounds %"class.std::initializer_list.94", ptr %123, i32 0, i32 1
  store i64 2, ptr %1206, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %131) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #9
  %1207 = getelementptr inbounds { ptr, i64 }, ptr %123, i32 0, i32 0
  %1208 = load ptr, ptr %1207, align 8
  %1209 = getelementptr inbounds { ptr, i64 }, ptr %123, i32 0, i32 1
  %1210 = load i64, ptr %1209, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %122, ptr %1208, i64 %1210, ptr noundef nonnull align 1 dereferenceable(1) %131)
          to label %1211 unwind label %1305

1211:                                             ; preds = %1204
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %119, ptr noundef nonnull align 8 dereferenceable(33088) %1196, ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef %122)
          to label %1212 unwind label %1309

1212:                                             ; preds = %1211
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.91") align 8 %105, ptr noundef %1178, ptr noundef %106, ptr noundef %119)
          to label %1213 unwind label %1313

1213:                                             ; preds = %1212
  %1214 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %105) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %105) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %119) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %122) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %131) #9
  %1215 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %124, i32 0, i32 0
  %1216 = getelementptr inbounds %"class.std::shared_ptr", ptr %1215, i64 2
  br label %1217

1217:                                             ; preds = %1217, %1213
  %1218 = phi ptr [ %1216, %1213 ], [ %1219, %1217 ]
  %1219 = getelementptr inbounds %"class.std::shared_ptr", ptr %1218, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1219) #9
  %1220 = icmp eq ptr %1219, %1215
  br i1 %1220, label %1221, label %1217

1221:                                             ; preds = %1217
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %129) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %129) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %126) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %124) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %121) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %120) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %118) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #9
  %1222 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %111, i32 0, i32 0
  %1223 = getelementptr inbounds %"class.std::shared_ptr", ptr %1222, i64 2
  br label %1224

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

1228:                                             ; preds = %1224
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %115) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %113) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %111) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %107) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %105) #9
  br label %1229

1229:                                             ; preds = %1228
  %1230 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %132, ptr noundef nonnull align 8 dereferenceable(24) %1230)
          to label %1231 unwind label %1365

1231:                                             ; preds = %1229
  call void @llvm.memset.p0.i64(ptr align 8 %133, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #9
  %1232 = invoke noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef %132, ptr noundef %133)
          to label %1233 unwind label %1369

1233:                                             ; preds = %1231
  %1234 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1232)
          to label %1235 unwind label %1369

1235:                                             ; preds = %1233
  %1236 = xor i1 %1234, true
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %132) #9
  br i1 %1236, label %1237, label %1489

1237:                                             ; preds = %1235
  %1238 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1239 unwind label %1365

1239:                                             ; preds = %1237
  %1240 = load ptr, ptr %1238, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %134) #9
  %1241 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1242 unwind label %1373

1242:                                             ; preds = %1239
  %1243 = load ptr, ptr %1241, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %134, ptr noundef nonnull align 8 dereferenceable(30) %1243, i32 noundef 329)
          to label %1244 unwind label %1373

1244:                                             ; preds = %1242
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1240, ptr noundef nonnull align 8 dereferenceable(30) %134, ptr noundef @.str.78)
          to label %1245 unwind label %1373

1245:                                             ; preds = %1244
  call void @llvm.lifetime.end.p0(i64 32, ptr %134) #9
  br label %1489

1246:                                             ; preds = %1004, %995
  br label %1175

1247:                                             ; preds = %1163
  %1248 = landingpad { ptr, i32 }
          cleanup
  %1249 = extractvalue { ptr, i32 } %1248, 0
  store ptr %1249, ptr %4, align 8
  %1250 = extractvalue { ptr, i32 } %1248, 1
  store i32 %1250, ptr %5, align 4
  br label %1255

1251:                                             ; preds = %1172, %1170, %1167
  %1252 = landingpad { ptr, i32 }
          cleanup
  %1253 = extractvalue { ptr, i32 } %1252, 0
  store ptr %1253, ptr %4, align 8
  %1254 = extractvalue { ptr, i32 } %1252, 1
  store i32 %1254, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #9
  br label %1255

1255:                                             ; preds = %1251, %1247
  invoke void @__cxa_end_catch()
          to label %1256 unwind label %3156

1256:                                             ; preds = %1255
  br label %3147

1257:                                             ; preds = %1177
  %1258 = landingpad { ptr, i32 }
          cleanup
  %1259 = extractvalue { ptr, i32 } %1258, 0
  store ptr %1259, ptr %4, align 8
  %1260 = extractvalue { ptr, i32 } %1258, 1
  store i32 %1260, ptr %5, align 4
  br label %1364

1261:                                             ; preds = %1180
  %1262 = landingpad { ptr, i32 }
          cleanup
  %1263 = extractvalue { ptr, i32 } %1262, 0
  store ptr %1263, ptr %4, align 8
  %1264 = extractvalue { ptr, i32 } %1262, 1
  store i32 %1264, ptr %5, align 4
  br label %1353

1265:                                             ; preds = %1182
  %1266 = landingpad { ptr, i32 }
          cleanup
  %1267 = extractvalue { ptr, i32 } %1266, 0
  store ptr %1267, ptr %4, align 8
  %1268 = extractvalue { ptr, i32 } %1266, 1
  store i32 %1268, ptr %5, align 4
  br label %1352

1269:                                             ; preds = %1183
  %1270 = landingpad { ptr, i32 }
          cleanup
  %1271 = extractvalue { ptr, i32 } %1270, 0
  store ptr %1271, ptr %4, align 8
  %1272 = extractvalue { ptr, i32 } %1270, 1
  store i32 %1272, ptr %5, align 4
  br label %1351

1273:                                             ; preds = %1186
  %1274 = landingpad { ptr, i32 }
          cleanup
  %1275 = extractvalue { ptr, i32 } %1274, 0
  store ptr %1275, ptr %4, align 8
  %1276 = extractvalue { ptr, i32 } %1274, 1
  store i32 %1276, ptr %5, align 4
  br label %1350

1277:                                             ; preds = %1187
  %1278 = landingpad { ptr, i32 }
          cleanup
  %1279 = extractvalue { ptr, i32 } %1278, 0
  store ptr %1279, ptr %4, align 8
  %1280 = extractvalue { ptr, i32 } %1278, 1
  store i32 %1280, ptr %5, align 4
  br label %1342

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

1285:                                             ; preds = %1195
  %1286 = landingpad { ptr, i32 }
          cleanup
  %1287 = extractvalue { ptr, i32 } %1286, 0
  store ptr %1287, ptr %4, align 8
  %1288 = extractvalue { ptr, i32 } %1286, 1
  store i32 %1288, ptr %5, align 4
  br label %1340

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

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

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

1301:                                             ; preds = %1203
  %1302 = landingpad { ptr, i32 }
          cleanup
  %1303 = extractvalue { ptr, i32 } %1302, 0
  store ptr %1303, ptr %4, align 8
  %1304 = extractvalue { ptr, i32 } %1302, 1
  store i32 %1304, ptr %5, align 4
  br label %1326

1305:                                             ; preds = %1204
  %1306 = landingpad { ptr, i32 }
          cleanup
  %1307 = extractvalue { ptr, i32 } %1306, 0
  store ptr %1307, ptr %4, align 8
  %1308 = extractvalue { ptr, i32 } %1306, 1
  store i32 %1308, ptr %5, align 4
  br label %1318

1309:                                             ; preds = %1211
  %1310 = landingpad { ptr, i32 }
          cleanup
  %1311 = extractvalue { ptr, i32 } %1310, 0
  store ptr %1311, ptr %4, align 8
  %1312 = extractvalue { ptr, i32 } %1310, 1
  store i32 %1312, ptr %5, align 4
  br label %1317

1313:                                             ; preds = %1212
  %1314 = landingpad { ptr, i32 }
          cleanup
  %1315 = extractvalue { ptr, i32 } %1314, 0
  store ptr %1315, ptr %4, align 8
  %1316 = extractvalue { ptr, i32 } %1314, 1
  store i32 %1316, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %119) #9
  br label %1317

1317:                                             ; preds = %1313, %1309
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %122) #9
  br label %1318

1318:                                             ; preds = %1317, %1305
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %131) #9
  %1319 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %124, i32 0, i32 0
  %1320 = getelementptr inbounds %"class.std::shared_ptr", ptr %1319, i64 2
  br label %1321

1321:                                             ; preds = %1321, %1318
  %1322 = phi ptr [ %1320, %1318 ], [ %1323, %1321 ]
  %1323 = getelementptr inbounds %"class.std::shared_ptr", ptr %1322, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1323) #9
  %1324 = icmp eq ptr %1323, %1319
  br i1 %1324, label %1325, label %1321

1325:                                             ; preds = %1321
  br label %1326

1326:                                             ; preds = %1325, %1301
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #9
  br label %1327

1327:                                             ; preds = %1326, %1297
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %129) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %129) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #9
  br label %1328

1328:                                             ; preds = %1327, %1293
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #9
  br label %1329

1329:                                             ; preds = %1328, %1289
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %126) #9
  %1330 = load i1, ptr %130, align 1
  br i1 %1330, label %1331, label %1339

1331:                                             ; preds = %1329
  %1332 = load ptr, ptr %125, align 8
  %1333 = icmp eq ptr %124, %1332
  br i1 %1333, label %1338, label %1334

1334:                                             ; preds = %1334, %1331
  %1335 = phi ptr [ %1332, %1331 ], [ %1336, %1334 ]
  %1336 = getelementptr inbounds %"class.std::shared_ptr", ptr %1335, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1336) #9
  %1337 = icmp eq ptr %1336, %124
  br i1 %1337, label %1338, label %1334

1338:                                             ; preds = %1334, %1331
  br label %1339

1339:                                             ; preds = %1338, %1329
  call void @llvm.lifetime.end.p0(i64 32, ptr %124) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #9
  br label %1340

1340:                                             ; preds = %1339, %1285
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %121) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %120) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #9
  br label %1341

1341:                                             ; preds = %1340, %1281
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #9
  br label %1342

1342:                                             ; preds = %1341, %1277
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %118) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #9
  %1343 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %111, i32 0, i32 0
  %1344 = getelementptr inbounds %"class.std::shared_ptr", ptr %1343, i64 2
  br label %1345

1345:                                             ; preds = %1345, %1342
  %1346 = phi ptr [ %1344, %1342 ], [ %1347, %1345 ]
  %1347 = getelementptr inbounds %"class.std::shared_ptr", ptr %1346, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1347) #9
  %1348 = icmp eq ptr %1347, %1343
  br i1 %1348, label %1349, label %1345

1349:                                             ; preds = %1345
  br label %1350

1350:                                             ; preds = %1349, %1273
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #9
  br label %1351

1351:                                             ; preds = %1350, %1269
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %115) #9
  br label %1352

1352:                                             ; preds = %1351, %1265
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #9
  br label %1353

1353:                                             ; preds = %1352, %1261
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %113) #9
  %1354 = load i1, ptr %117, align 1
  br i1 %1354, label %1355, label %1363

1355:                                             ; preds = %1353
  %1356 = load ptr, ptr %112, align 8
  %1357 = icmp eq ptr %111, %1356
  br i1 %1357, label %1362, label %1358

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

1362:                                             ; preds = %1358, %1355
  br label %1363

1363:                                             ; preds = %1362, %1353
  call void @llvm.lifetime.end.p0(i64 32, ptr %111) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #9
  br label %1364

1364:                                             ; preds = %1363, %1257
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %107) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %105) #9
  br label %3147

1365:                                             ; preds = %1237, %1229
  %1366 = landingpad { ptr, i32 }
          catch ptr null
  %1367 = extractvalue { ptr, i32 } %1366, 0
  store ptr %1367, ptr %4, align 8
  %1368 = extractvalue { ptr, i32 } %1366, 1
  store i32 %1368, ptr %5, align 4
  br label %1377

1369:                                             ; preds = %1233, %1231
  %1370 = landingpad { ptr, i32 }
          catch ptr null
  %1371 = extractvalue { ptr, i32 } %1370, 0
  store ptr %1371, ptr %4, align 8
  %1372 = extractvalue { ptr, i32 } %1370, 1
  store i32 %1372, ptr %5, align 4
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %132) #9
  br label %1377

1373:                                             ; preds = %1244, %1242, %1239
  %1374 = landingpad { ptr, i32 }
          catch ptr null
  %1375 = extractvalue { ptr, i32 } %1374, 0
  store ptr %1375, ptr %4, align 8
  %1376 = extractvalue { ptr, i32 } %1374, 1
  store i32 %1376, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %134) #9
  br label %1377

1377:                                             ; preds = %1373, %1369, %1365
  %1378 = load ptr, ptr %4, align 8
  %1379 = call ptr @__cxa_begin_catch(ptr %1378) #9
  %1380 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1381 unwind label %1490

1381:                                             ; preds = %1377
  %1382 = load ptr, ptr %1380, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %135) #9
  %1383 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1384 unwind label %1494

1384:                                             ; preds = %1381
  %1385 = load ptr, ptr %1383, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %135, ptr noundef nonnull align 8 dereferenceable(30) %1385, i32 noundef 329)
          to label %1386 unwind label %1494

1386:                                             ; preds = %1384
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1382, ptr noundef nonnull align 8 dereferenceable(30) %135, ptr noundef @.str.79)
          to label %1387 unwind label %1494

1387:                                             ; preds = %1386
  call void @llvm.lifetime.end.p0(i64 32, ptr %135) #9
  invoke void @__cxa_end_catch()
          to label %1388 unwind label %715

1388:                                             ; preds = %1387
  br label %1389

1389:                                             ; preds = %1489, %1388
  br label %1390

1390:                                             ; preds = %1389
  br label %1391

1391:                                             ; preds = %1390
  call void @llvm.lifetime.start.p0(i64 16, ptr %136) #9
  %1392 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %1393 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %138) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %139) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %139) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %139)
          to label %1394 unwind label %1500

1394:                                             ; preds = %1391
  call void @llvm.lifetime.start.p0(i64 32, ptr %142) #9
  store i1 true, ptr %148, align 1
  store ptr %142, ptr %143, align 8
  %1395 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %144) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %145) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %144, ptr noundef @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %145)
          to label %1396 unwind label %1504

1396:                                             ; preds = %1394
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %142, ptr noundef nonnull align 8 dereferenceable(33088) %1395, ptr noundef nonnull align 8 dereferenceable(32) %144)
          to label %1397 unwind label %1508

1397:                                             ; preds = %1396
  %1398 = getelementptr inbounds %"class.std::shared_ptr", ptr %142, i64 1
  store ptr %1398, ptr %143, align 8
  %1399 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %146) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %147) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %147) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %147)
          to label %1400 unwind label %1512

1400:                                             ; preds = %1397
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %1398, ptr noundef nonnull align 8 dereferenceable(33088) %1399, ptr noundef nonnull align 8 dereferenceable(32) %146)
          to label %1401 unwind label %1516

1401:                                             ; preds = %1400
  store i1 false, ptr %148, align 1
  %1402 = getelementptr inbounds %"class.std::initializer_list.94", ptr %141, i32 0, i32 0
  store ptr %142, ptr %1402, align 8, !tbaa !13
  %1403 = getelementptr inbounds %"class.std::initializer_list.94", ptr %141, i32 0, i32 1
  store i64 2, ptr %1403, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %149) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %149) #9
  %1404 = getelementptr inbounds { ptr, i64 }, ptr %141, i32 0, i32 0
  %1405 = load ptr, ptr %1404, align 8
  %1406 = getelementptr inbounds { ptr, i64 }, ptr %141, i32 0, i32 1
  %1407 = load i64, ptr %1406, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %140, ptr %1405, i64 %1407, ptr noundef nonnull align 1 dereferenceable(1) %149)
          to label %1408 unwind label %1520

1408:                                             ; preds = %1401
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %137, ptr noundef nonnull align 8 dereferenceable(33088) %1393, ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef %140)
          to label %1409 unwind label %1524

1409:                                             ; preds = %1408
  %1410 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %151) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %152) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %152) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %151, ptr noundef @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %152)
          to label %1411 unwind label %1528

1411:                                             ; preds = %1409
  call void @llvm.lifetime.start.p0(i64 32, ptr %155) #9
  store i1 true, ptr %161, align 1
  store ptr %155, ptr %156, align 8
  %1412 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %157) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %158) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %158) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %157, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %158)
          to label %1413 unwind label %1532

1413:                                             ; preds = %1411
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %155, ptr noundef nonnull align 8 dereferenceable(33088) %1412, ptr noundef nonnull align 8 dereferenceable(32) %157)
          to label %1414 unwind label %1536

1414:                                             ; preds = %1413
  %1415 = getelementptr inbounds %"class.std::shared_ptr", ptr %155, i64 1
  store ptr %1415, ptr %156, align 8
  %1416 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %159) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %160) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %160) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %159, ptr noundef @.str.91, ptr noundef nonnull align 1 dereferenceable(1) %160)
          to label %1417 unwind label %1540

1417:                                             ; preds = %1414
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %1415, ptr noundef nonnull align 8 dereferenceable(33088) %1416, ptr noundef nonnull align 8 dereferenceable(32) %159)
          to label %1418 unwind label %1544

1418:                                             ; preds = %1417
  store i1 false, ptr %161, align 1
  %1419 = getelementptr inbounds %"class.std::initializer_list.94", ptr %154, i32 0, i32 0
  store ptr %155, ptr %1419, align 8, !tbaa !13
  %1420 = getelementptr inbounds %"class.std::initializer_list.94", ptr %154, i32 0, i32 1
  store i64 2, ptr %1420, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %162) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %162) #9
  %1421 = getelementptr inbounds { ptr, i64 }, ptr %154, i32 0, i32 0
  %1422 = load ptr, ptr %1421, align 8
  %1423 = getelementptr inbounds { ptr, i64 }, ptr %154, i32 0, i32 1
  %1424 = load i64, ptr %1423, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %153, ptr %1422, i64 %1424, ptr noundef nonnull align 1 dereferenceable(1) %162)
          to label %1425 unwind label %1548

1425:                                             ; preds = %1418
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %150, ptr noundef nonnull align 8 dereferenceable(33088) %1410, ptr noundef nonnull align 8 dereferenceable(32) %151, ptr noundef %153)
          to label %1426 unwind label %1552

1426:                                             ; preds = %1425
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.91") align 8 %136, ptr noundef %1392, ptr noundef %137, ptr noundef %150)
          to label %1427 unwind label %1556

1427:                                             ; preds = %1426
  %1428 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %136) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %136) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %150) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %153) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %162) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %162) #9
  %1429 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %155, i32 0, i32 0
  %1430 = getelementptr inbounds %"class.std::shared_ptr", ptr %1429, i64 2
  br label %1431

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

1435:                                             ; preds = %1431
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %160) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %160) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %159) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %157) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %158) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %158) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %157) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %155) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %152) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %152) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %151) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %137) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %140) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %149) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %149) #9
  %1436 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %142, i32 0, i32 0
  %1437 = getelementptr inbounds %"class.std::shared_ptr", ptr %1436, i64 2
  br label %1438

1438:                                             ; preds = %1438, %1435
  %1439 = phi ptr [ %1437, %1435 ], [ %1440, %1438 ]
  %1440 = getelementptr inbounds %"class.std::shared_ptr", ptr %1439, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1440) #9
  %1441 = icmp eq ptr %1440, %1436
  br i1 %1441, label %1442, label %1438

1442:                                             ; preds = %1438
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %147) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %147) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %145) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %144) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %142) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %139) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %139) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %138) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %136) #9
  br label %1443

1443:                                             ; preds = %1442
  %1444 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %163, ptr noundef nonnull align 8 dereferenceable(24) %1444)
          to label %1445 unwind label %1608

1445:                                             ; preds = %1443
  call void @llvm.lifetime.start.p0(i64 64, ptr %166) #9
  store i1 true, ptr %180, align 1
  store ptr %166, ptr %167, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %168) #9
  %1446 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %169) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %170) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %170) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %169, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %170)
          to label %1447 unwind label %1612

1447:                                             ; preds = %1445
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %168, ptr noundef nonnull align 8 dereferenceable(33088) %1446, ptr noundef nonnull align 8 dereferenceable(32) %169)
          to label %1448 unwind label %1616

1448:                                             ; preds = %1447
  call void @llvm.lifetime.start.p0(i64 16, ptr %171) #9
  %1449 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %172) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %173) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %173) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %172, ptr noundef @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %173)
          to label %1450 unwind label %1620

1450:                                             ; preds = %1448
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %171, ptr noundef nonnull align 8 dereferenceable(33088) %1449, ptr noundef nonnull align 8 dereferenceable(32) %172)
          to label %1451 unwind label %1624

1451:                                             ; preds = %1450
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %166, ptr noundef nonnull align 8 dereferenceable(16) %168, ptr noundef nonnull align 8 dereferenceable(16) %171)
          to label %1452 unwind label %1628

1452:                                             ; preds = %1451
  %1453 = getelementptr inbounds %"struct.std::pair", ptr %166, i64 1
  store ptr %1453, ptr %167, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %174) #9
  %1454 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %175) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %176) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %176) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %175, ptr noundef @.str.91, ptr noundef nonnull align 1 dereferenceable(1) %176)
          to label %1455 unwind label %1632

1455:                                             ; preds = %1452
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %174, ptr noundef nonnull align 8 dereferenceable(33088) %1454, ptr noundef nonnull align 8 dereferenceable(32) %175)
          to label %1456 unwind label %1636

1456:                                             ; preds = %1455
  call void @llvm.lifetime.start.p0(i64 16, ptr %177) #9
  %1457 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %178) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %179) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %179) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %178, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %179)
          to label %1458 unwind label %1640

1458:                                             ; preds = %1456
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %177, ptr noundef nonnull align 8 dereferenceable(33088) %1457, ptr noundef nonnull align 8 dereferenceable(32) %178)
          to label %1459 unwind label %1644

1459:                                             ; preds = %1458
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %1453, ptr noundef nonnull align 8 dereferenceable(16) %174, ptr noundef nonnull align 8 dereferenceable(16) %177)
          to label %1460 unwind label %1648

1460:                                             ; preds = %1459
  store i1 false, ptr %180, align 1
  %1461 = getelementptr inbounds %"class.std::initializer_list", ptr %165, i32 0, i32 0
  store ptr %166, ptr %1461, align 8, !tbaa !9
  %1462 = getelementptr inbounds %"class.std::initializer_list", ptr %165, i32 0, i32 1
  store i64 2, ptr %1462, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %181) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %181) #9
  %1463 = getelementptr inbounds { ptr, i64 }, ptr %165, i32 0, i32 0
  %1464 = load ptr, ptr %1463, align 8
  %1465 = getelementptr inbounds { ptr, i64 }, ptr %165, i32 0, i32 1
  %1466 = load i64, ptr %1465, align 8
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %164, ptr %1464, i64 %1466, ptr noundef nonnull align 1 dereferenceable(1) %181)
          to label %1467 unwind label %1652

1467:                                             ; preds = %1460
  %1468 = invoke noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef %163, ptr noundef %164)
          to label %1469 unwind label %1656

1469:                                             ; preds = %1467
  %1470 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1468)
          to label %1471 unwind label %1656

1471:                                             ; preds = %1469
  %1472 = xor i1 %1470, true
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %164) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %181) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %181) #9
  %1473 = getelementptr inbounds [2 x %"struct.std::pair"], ptr %166, i32 0, i32 0
  %1474 = getelementptr inbounds %"struct.std::pair", ptr %1473, i64 2
  br label %1475

1475:                                             ; preds = %1475, %1471
  %1476 = phi ptr [ %1474, %1471 ], [ %1477, %1475 ]
  %1477 = getelementptr inbounds %"struct.std::pair", ptr %1476, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1477) #9
  %1478 = icmp eq ptr %1477, %1473
  br i1 %1478, label %1479, label %1475

1479:                                             ; preds = %1475
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %177) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %178) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %179) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %179) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %178) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %177) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %174) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %175) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %176) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %176) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %175) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %174) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %171) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %173) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %173) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %172) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %171) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %168) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %170) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %170) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %169) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %168) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %166) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %163) #9
  br i1 %1472, label %1480, label %1804

1480:                                             ; preds = %1479
  %1481 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1482 unwind label %1608

1482:                                             ; preds = %1480
  %1483 = load ptr, ptr %1481, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %182) #9
  %1484 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1485 unwind label %1688

1485:                                             ; preds = %1482
  %1486 = load ptr, ptr %1484, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %182, ptr noundef nonnull align 8 dereferenceable(30) %1486, i32 noundef 335)
          to label %1487 unwind label %1688

1487:                                             ; preds = %1485
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1483, ptr noundef nonnull align 8 dereferenceable(30) %182, ptr noundef @.str.92)
          to label %1488 unwind label %1688

1488:                                             ; preds = %1487
  call void @llvm.lifetime.end.p0(i64 32, ptr %182) #9
  br label %1804

1489:                                             ; preds = %1245, %1235
  br label %1389

1490:                                             ; preds = %1377
  %1491 = landingpad { ptr, i32 }
          cleanup
  %1492 = extractvalue { ptr, i32 } %1491, 0
  store ptr %1492, ptr %4, align 8
  %1493 = extractvalue { ptr, i32 } %1491, 1
  store i32 %1493, ptr %5, align 4
  br label %1498

1494:                                             ; preds = %1386, %1384, %1381
  %1495 = landingpad { ptr, i32 }
          cleanup
  %1496 = extractvalue { ptr, i32 } %1495, 0
  store ptr %1496, ptr %4, align 8
  %1497 = extractvalue { ptr, i32 } %1495, 1
  store i32 %1497, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %135) #9
  br label %1498

1498:                                             ; preds = %1494, %1490
  invoke void @__cxa_end_catch()
          to label %1499 unwind label %3156

1499:                                             ; preds = %1498
  br label %3147

1500:                                             ; preds = %1391
  %1501 = landingpad { ptr, i32 }
          cleanup
  %1502 = extractvalue { ptr, i32 } %1501, 0
  store ptr %1502, ptr %4, align 8
  %1503 = extractvalue { ptr, i32 } %1501, 1
  store i32 %1503, ptr %5, align 4
  br label %1607

1504:                                             ; preds = %1394
  %1505 = landingpad { ptr, i32 }
          cleanup
  %1506 = extractvalue { ptr, i32 } %1505, 0
  store ptr %1506, ptr %4, align 8
  %1507 = extractvalue { ptr, i32 } %1505, 1
  store i32 %1507, ptr %5, align 4
  br label %1596

1508:                                             ; preds = %1396
  %1509 = landingpad { ptr, i32 }
          cleanup
  %1510 = extractvalue { ptr, i32 } %1509, 0
  store ptr %1510, ptr %4, align 8
  %1511 = extractvalue { ptr, i32 } %1509, 1
  store i32 %1511, ptr %5, align 4
  br label %1595

1512:                                             ; preds = %1397
  %1513 = landingpad { ptr, i32 }
          cleanup
  %1514 = extractvalue { ptr, i32 } %1513, 0
  store ptr %1514, ptr %4, align 8
  %1515 = extractvalue { ptr, i32 } %1513, 1
  store i32 %1515, ptr %5, align 4
  br label %1594

1516:                                             ; preds = %1400
  %1517 = landingpad { ptr, i32 }
          cleanup
  %1518 = extractvalue { ptr, i32 } %1517, 0
  store ptr %1518, ptr %4, align 8
  %1519 = extractvalue { ptr, i32 } %1517, 1
  store i32 %1519, ptr %5, align 4
  br label %1593

1520:                                             ; preds = %1401
  %1521 = landingpad { ptr, i32 }
          cleanup
  %1522 = extractvalue { ptr, i32 } %1521, 0
  store ptr %1522, ptr %4, align 8
  %1523 = extractvalue { ptr, i32 } %1521, 1
  store i32 %1523, ptr %5, align 4
  br label %1585

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

1528:                                             ; preds = %1409
  %1529 = landingpad { ptr, i32 }
          cleanup
  %1530 = extractvalue { ptr, i32 } %1529, 0
  store ptr %1530, ptr %4, align 8
  %1531 = extractvalue { ptr, i32 } %1529, 1
  store i32 %1531, ptr %5, align 4
  br label %1583

1532:                                             ; preds = %1411
  %1533 = landingpad { ptr, i32 }
          cleanup
  %1534 = extractvalue { ptr, i32 } %1533, 0
  store ptr %1534, ptr %4, align 8
  %1535 = extractvalue { ptr, i32 } %1533, 1
  store i32 %1535, ptr %5, align 4
  br label %1572

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

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

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

1548:                                             ; preds = %1418
  %1549 = landingpad { ptr, i32 }
          cleanup
  %1550 = extractvalue { ptr, i32 } %1549, 0
  store ptr %1550, ptr %4, align 8
  %1551 = extractvalue { ptr, i32 } %1549, 1
  store i32 %1551, ptr %5, align 4
  br label %1561

1552:                                             ; preds = %1425
  %1553 = landingpad { ptr, i32 }
          cleanup
  %1554 = extractvalue { ptr, i32 } %1553, 0
  store ptr %1554, ptr %4, align 8
  %1555 = extractvalue { ptr, i32 } %1553, 1
  store i32 %1555, ptr %5, align 4
  br label %1560

1556:                                             ; preds = %1426
  %1557 = landingpad { ptr, i32 }
          cleanup
  %1558 = extractvalue { ptr, i32 } %1557, 0
  store ptr %1558, ptr %4, align 8
  %1559 = extractvalue { ptr, i32 } %1557, 1
  store i32 %1559, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %150) #9
  br label %1560

1560:                                             ; preds = %1556, %1552
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %153) #9
  br label %1561

1561:                                             ; preds = %1560, %1548
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %162) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %162) #9
  %1562 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %155, i32 0, i32 0
  %1563 = getelementptr inbounds %"class.std::shared_ptr", ptr %1562, i64 2
  br label %1564

1564:                                             ; preds = %1564, %1561
  %1565 = phi ptr [ %1563, %1561 ], [ %1566, %1564 ]
  %1566 = getelementptr inbounds %"class.std::shared_ptr", ptr %1565, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1566) #9
  %1567 = icmp eq ptr %1566, %1562
  br i1 %1567, label %1568, label %1564

1568:                                             ; preds = %1564
  br label %1569

1569:                                             ; preds = %1568, %1544
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #9
  br label %1570

1570:                                             ; preds = %1569, %1540
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %160) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %160) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %159) #9
  br label %1571

1571:                                             ; preds = %1570, %1536
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %157) #9
  br label %1572

1572:                                             ; preds = %1571, %1532
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %158) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %158) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %157) #9
  %1573 = load i1, ptr %161, align 1
  br i1 %1573, label %1574, label %1582

1574:                                             ; preds = %1572
  %1575 = load ptr, ptr %156, align 8
  %1576 = icmp eq ptr %155, %1575
  br i1 %1576, label %1581, label %1577

1577:                                             ; preds = %1577, %1574
  %1578 = phi ptr [ %1575, %1574 ], [ %1579, %1577 ]
  %1579 = getelementptr inbounds %"class.std::shared_ptr", ptr %1578, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1579) #9
  %1580 = icmp eq ptr %1579, %155
  br i1 %1580, label %1581, label %1577

1581:                                             ; preds = %1577, %1574
  br label %1582

1582:                                             ; preds = %1581, %1572
  call void @llvm.lifetime.end.p0(i64 32, ptr %155) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #9
  br label %1583

1583:                                             ; preds = %1582, %1528
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %152) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %152) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %151) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %137) #9
  br label %1584

1584:                                             ; preds = %1583, %1524
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %140) #9
  br label %1585

1585:                                             ; preds = %1584, %1520
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %149) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %149) #9
  %1586 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %142, i32 0, i32 0
  %1587 = getelementptr inbounds %"class.std::shared_ptr", ptr %1586, i64 2
  br label %1588

1588:                                             ; preds = %1588, %1585
  %1589 = phi ptr [ %1587, %1585 ], [ %1590, %1588 ]
  %1590 = getelementptr inbounds %"class.std::shared_ptr", ptr %1589, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1590) #9
  %1591 = icmp eq ptr %1590, %1586
  br i1 %1591, label %1592, label %1588

1592:                                             ; preds = %1588
  br label %1593

1593:                                             ; preds = %1592, %1516
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #9
  br label %1594

1594:                                             ; preds = %1593, %1512
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %147) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %147) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #9
  br label %1595

1595:                                             ; preds = %1594, %1508
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #9
  br label %1596

1596:                                             ; preds = %1595, %1504
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %145) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %144) #9
  %1597 = load i1, ptr %148, align 1
  br i1 %1597, label %1598, label %1606

1598:                                             ; preds = %1596
  %1599 = load ptr, ptr %143, align 8
  %1600 = icmp eq ptr %142, %1599
  br i1 %1600, label %1605, label %1601

1601:                                             ; preds = %1601, %1598
  %1602 = phi ptr [ %1599, %1598 ], [ %1603, %1601 ]
  %1603 = getelementptr inbounds %"class.std::shared_ptr", ptr %1602, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1603) #9
  %1604 = icmp eq ptr %1603, %142
  br i1 %1604, label %1605, label %1601

1605:                                             ; preds = %1601, %1598
  br label %1606

1606:                                             ; preds = %1605, %1596
  call void @llvm.lifetime.end.p0(i64 32, ptr %142) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #9
  br label %1607

1607:                                             ; preds = %1606, %1500
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %139) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %139) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %138) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %136) #9
  br label %3147

1608:                                             ; preds = %1480, %1443
  %1609 = landingpad { ptr, i32 }
          catch ptr null
  %1610 = extractvalue { ptr, i32 } %1609, 0
  store ptr %1610, ptr %4, align 8
  %1611 = extractvalue { ptr, i32 } %1609, 1
  store i32 %1611, ptr %5, align 4
  br label %1692

1612:                                             ; preds = %1445
  %1613 = landingpad { ptr, i32 }
          catch ptr null
  %1614 = extractvalue { ptr, i32 } %1613, 0
  store ptr %1614, ptr %4, align 8
  %1615 = extractvalue { ptr, i32 } %1613, 1
  store i32 %1615, ptr %5, align 4
  br label %1677

1616:                                             ; preds = %1447
  %1617 = landingpad { ptr, i32 }
          catch ptr null
  %1618 = extractvalue { ptr, i32 } %1617, 0
  store ptr %1618, ptr %4, align 8
  %1619 = extractvalue { ptr, i32 } %1617, 1
  store i32 %1619, ptr %5, align 4
  br label %1676

1620:                                             ; preds = %1448
  %1621 = landingpad { ptr, i32 }
          catch ptr null
  %1622 = extractvalue { ptr, i32 } %1621, 0
  store ptr %1622, ptr %4, align 8
  %1623 = extractvalue { ptr, i32 } %1621, 1
  store i32 %1623, ptr %5, align 4
  br label %1675

1624:                                             ; preds = %1450
  %1625 = landingpad { ptr, i32 }
          catch ptr null
  %1626 = extractvalue { ptr, i32 } %1625, 0
  store ptr %1626, ptr %4, align 8
  %1627 = extractvalue { ptr, i32 } %1625, 1
  store i32 %1627, ptr %5, align 4
  br label %1674

1628:                                             ; preds = %1451
  %1629 = landingpad { ptr, i32 }
          catch ptr null
  %1630 = extractvalue { ptr, i32 } %1629, 0
  store ptr %1630, ptr %4, align 8
  %1631 = extractvalue { ptr, i32 } %1629, 1
  store i32 %1631, ptr %5, align 4
  br label %1673

1632:                                             ; preds = %1452
  %1633 = landingpad { ptr, i32 }
          catch ptr null
  %1634 = extractvalue { ptr, i32 } %1633, 0
  store ptr %1634, ptr %4, align 8
  %1635 = extractvalue { ptr, i32 } %1633, 1
  store i32 %1635, ptr %5, align 4
  br label %1672

1636:                                             ; preds = %1455
  %1637 = landingpad { ptr, i32 }
          catch ptr null
  %1638 = extractvalue { ptr, i32 } %1637, 0
  store ptr %1638, ptr %4, align 8
  %1639 = extractvalue { ptr, i32 } %1637, 1
  store i32 %1639, ptr %5, align 4
  br label %1671

1640:                                             ; preds = %1456
  %1641 = landingpad { ptr, i32 }
          catch ptr null
  %1642 = extractvalue { ptr, i32 } %1641, 0
  store ptr %1642, ptr %4, align 8
  %1643 = extractvalue { ptr, i32 } %1641, 1
  store i32 %1643, ptr %5, align 4
  br label %1670

1644:                                             ; preds = %1458
  %1645 = landingpad { ptr, i32 }
          catch ptr null
  %1646 = extractvalue { ptr, i32 } %1645, 0
  store ptr %1646, ptr %4, align 8
  %1647 = extractvalue { ptr, i32 } %1645, 1
  store i32 %1647, ptr %5, align 4
  br label %1669

1648:                                             ; preds = %1459
  %1649 = landingpad { ptr, i32 }
          catch ptr null
  %1650 = extractvalue { ptr, i32 } %1649, 0
  store ptr %1650, ptr %4, align 8
  %1651 = extractvalue { ptr, i32 } %1649, 1
  store i32 %1651, ptr %5, align 4
  br label %1668

1652:                                             ; preds = %1460
  %1653 = landingpad { ptr, i32 }
          catch ptr null
  %1654 = extractvalue { ptr, i32 } %1653, 0
  store ptr %1654, ptr %4, align 8
  %1655 = extractvalue { ptr, i32 } %1653, 1
  store i32 %1655, ptr %5, align 4
  br label %1660

1656:                                             ; preds = %1469, %1467
  %1657 = landingpad { ptr, i32 }
          catch ptr null
  %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
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %164) #9
  br label %1660

1660:                                             ; preds = %1656, %1652
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %181) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %181) #9
  %1661 = getelementptr inbounds [2 x %"struct.std::pair"], ptr %166, i32 0, i32 0
  %1662 = getelementptr inbounds %"struct.std::pair", ptr %1661, i64 2
  br label %1663

1663:                                             ; preds = %1663, %1660
  %1664 = phi ptr [ %1662, %1660 ], [ %1665, %1663 ]
  %1665 = getelementptr inbounds %"struct.std::pair", ptr %1664, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1665) #9
  %1666 = icmp eq ptr %1665, %1661
  br i1 %1666, label %1667, label %1663

1667:                                             ; preds = %1663
  br label %1668

1668:                                             ; preds = %1667, %1648
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %177) #9
  br label %1669

1669:                                             ; preds = %1668, %1644
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %178) #9
  br label %1670

1670:                                             ; preds = %1669, %1640
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %179) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %179) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %178) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %177) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %174) #9
  br label %1671

1671:                                             ; preds = %1670, %1636
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %175) #9
  br label %1672

1672:                                             ; preds = %1671, %1632
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %176) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %176) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %175) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %174) #9
  br label %1673

1673:                                             ; preds = %1672, %1628
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %171) #9
  br label %1674

1674:                                             ; preds = %1673, %1624
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #9
  br label %1675

1675:                                             ; preds = %1674, %1620
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %173) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %173) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %172) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %171) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %168) #9
  br label %1676

1676:                                             ; preds = %1675, %1616
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #9
  br label %1677

1677:                                             ; preds = %1676, %1612
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %170) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %170) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %169) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %168) #9
  %1678 = load i1, ptr %180, align 1
  br i1 %1678, label %1679, label %1687

1679:                                             ; preds = %1677
  %1680 = load ptr, ptr %167, align 8
  %1681 = icmp eq ptr %166, %1680
  br i1 %1681, label %1686, label %1682

1682:                                             ; preds = %1682, %1679
  %1683 = phi ptr [ %1680, %1679 ], [ %1684, %1682 ]
  %1684 = getelementptr inbounds %"struct.std::pair", ptr %1683, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1684) #9
  %1685 = icmp eq ptr %1684, %166
  br i1 %1685, label %1686, label %1682

1686:                                             ; preds = %1682, %1679
  br label %1687

1687:                                             ; preds = %1686, %1677
  call void @llvm.lifetime.end.p0(i64 64, ptr %166) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %163) #9
  br label %1692

1688:                                             ; preds = %1487, %1485, %1482
  %1689 = landingpad { ptr, i32 }
          catch ptr null
  %1690 = extractvalue { ptr, i32 } %1689, 0
  store ptr %1690, ptr %4, align 8
  %1691 = extractvalue { ptr, i32 } %1689, 1
  store i32 %1691, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %182) #9
  br label %1692

1692:                                             ; preds = %1688, %1687, %1608
  %1693 = load ptr, ptr %4, align 8
  %1694 = call ptr @__cxa_begin_catch(ptr %1693) #9
  %1695 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1696 unwind label %1805

1696:                                             ; preds = %1692
  %1697 = load ptr, ptr %1695, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %183) #9
  %1698 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1699 unwind label %1809

1699:                                             ; preds = %1696
  %1700 = load ptr, ptr %1698, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %183, ptr noundef nonnull align 8 dereferenceable(30) %1700, i32 noundef 335)
          to label %1701 unwind label %1809

1701:                                             ; preds = %1699
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1697, ptr noundef nonnull align 8 dereferenceable(30) %183, ptr noundef @.str.93)
          to label %1702 unwind label %1809

1702:                                             ; preds = %1701
  call void @llvm.lifetime.end.p0(i64 32, ptr %183) #9
  invoke void @__cxa_end_catch()
          to label %1703 unwind label %715

1703:                                             ; preds = %1702
  br label %1704

1704:                                             ; preds = %1804, %1703
  br label %1705

1705:                                             ; preds = %1704
  br label %1706

1706:                                             ; preds = %1705
  call void @llvm.lifetime.start.p0(i64 16, ptr %184) #9
  %1707 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %1708 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %186) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %187) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %187) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %186, ptr noundef @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %187)
          to label %1709 unwind label %1815

1709:                                             ; preds = %1706
  call void @llvm.lifetime.start.p0(i64 32, ptr %190) #9
  store i1 true, ptr %196, align 1
  store ptr %190, ptr %191, align 8
  %1710 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %192) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %193) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %193) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %192, ptr noundef @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %193)
          to label %1711 unwind label %1819

1711:                                             ; preds = %1709
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %190, ptr noundef nonnull align 8 dereferenceable(33088) %1710, ptr noundef nonnull align 8 dereferenceable(32) %192)
          to label %1712 unwind label %1823

1712:                                             ; preds = %1711
  %1713 = getelementptr inbounds %"class.std::shared_ptr", ptr %190, i64 1
  store ptr %1713, ptr %191, align 8
  %1714 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %194) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %195) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %195) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %194, ptr noundef @.str.91, ptr noundef nonnull align 1 dereferenceable(1) %195)
          to label %1715 unwind label %1827

1715:                                             ; preds = %1712
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %1713, ptr noundef nonnull align 8 dereferenceable(33088) %1714, ptr noundef nonnull align 8 dereferenceable(32) %194)
          to label %1716 unwind label %1831

1716:                                             ; preds = %1715
  store i1 false, ptr %196, align 1
  %1717 = getelementptr inbounds %"class.std::initializer_list.94", ptr %189, i32 0, i32 0
  store ptr %190, ptr %1717, align 8, !tbaa !13
  %1718 = getelementptr inbounds %"class.std::initializer_list.94", ptr %189, i32 0, i32 1
  store i64 2, ptr %1718, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %197) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %197) #9
  %1719 = getelementptr inbounds { ptr, i64 }, ptr %189, i32 0, i32 0
  %1720 = load ptr, ptr %1719, align 8
  %1721 = getelementptr inbounds { ptr, i64 }, ptr %189, i32 0, i32 1
  %1722 = load i64, ptr %1721, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %188, ptr %1720, i64 %1722, ptr noundef nonnull align 1 dereferenceable(1) %197)
          to label %1723 unwind label %1835

1723:                                             ; preds = %1716
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %185, ptr noundef nonnull align 8 dereferenceable(33088) %1708, ptr noundef nonnull align 8 dereferenceable(32) %186, ptr noundef %188)
          to label %1724 unwind label %1839

1724:                                             ; preds = %1723
  %1725 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %199) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %200) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %200) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %199, ptr noundef @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %200)
          to label %1726 unwind label %1843

1726:                                             ; preds = %1724
  call void @llvm.lifetime.start.p0(i64 32, ptr %203) #9
  store i1 true, ptr %209, align 1
  store ptr %203, ptr %204, align 8
  %1727 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %205) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %206) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %206) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %205, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %206)
          to label %1728 unwind label %1847

1728:                                             ; preds = %1726
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %203, ptr noundef nonnull align 8 dereferenceable(33088) %1727, ptr noundef nonnull align 8 dereferenceable(32) %205)
          to label %1729 unwind label %1851

1729:                                             ; preds = %1728
  %1730 = getelementptr inbounds %"class.std::shared_ptr", ptr %203, i64 1
  store ptr %1730, ptr %204, align 8
  %1731 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %207) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %208) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %208) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %207, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %208)
          to label %1732 unwind label %1855

1732:                                             ; preds = %1729
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %1730, ptr noundef nonnull align 8 dereferenceable(33088) %1731, ptr noundef nonnull align 8 dereferenceable(32) %207)
          to label %1733 unwind label %1859

1733:                                             ; preds = %1732
  store i1 false, ptr %209, align 1
  %1734 = getelementptr inbounds %"class.std::initializer_list.94", ptr %202, i32 0, i32 0
  store ptr %203, ptr %1734, align 8, !tbaa !13
  %1735 = getelementptr inbounds %"class.std::initializer_list.94", ptr %202, i32 0, i32 1
  store i64 2, ptr %1735, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %210) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %210) #9
  %1736 = getelementptr inbounds { ptr, i64 }, ptr %202, i32 0, i32 0
  %1737 = load ptr, ptr %1736, align 8
  %1738 = getelementptr inbounds { ptr, i64 }, ptr %202, i32 0, i32 1
  %1739 = load i64, ptr %1738, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %201, ptr %1737, i64 %1739, ptr noundef nonnull align 1 dereferenceable(1) %210)
          to label %1740 unwind label %1863

1740:                                             ; preds = %1733
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %198, ptr noundef nonnull align 8 dereferenceable(33088) %1725, ptr noundef nonnull align 8 dereferenceable(32) %199, ptr noundef %201)
          to label %1741 unwind label %1867

1741:                                             ; preds = %1740
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.91") align 8 %184, ptr noundef %1707, ptr noundef %185, ptr noundef %198)
          to label %1742 unwind label %1871

1742:                                             ; preds = %1741
  %1743 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %184) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %184) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %198) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %201) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %210) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %210) #9
  %1744 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %203, i32 0, i32 0
  %1745 = getelementptr inbounds %"class.std::shared_ptr", ptr %1744, i64 2
  br label %1746

1746:                                             ; preds = %1746, %1742
  %1747 = phi ptr [ %1745, %1742 ], [ %1748, %1746 ]
  %1748 = getelementptr inbounds %"class.std::shared_ptr", ptr %1747, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1748) #9
  %1749 = icmp eq ptr %1748, %1744
  br i1 %1749, label %1750, label %1746

1750:                                             ; preds = %1746
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %207) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %208) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %208) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %207) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %206) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %206) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %205) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %203) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %199) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %200) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %200) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %199) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %185) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %188) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %197) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %197) #9
  %1751 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %190, i32 0, i32 0
  %1752 = getelementptr inbounds %"class.std::shared_ptr", ptr %1751, i64 2
  br label %1753

1753:                                             ; preds = %1753, %1750
  %1754 = phi ptr [ %1752, %1750 ], [ %1755, %1753 ]
  %1755 = getelementptr inbounds %"class.std::shared_ptr", ptr %1754, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1755) #9
  %1756 = icmp eq ptr %1755, %1751
  br i1 %1756, label %1757, label %1753

1757:                                             ; preds = %1753
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %194) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %195) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %195) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %194) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %192) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %193) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %193) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %192) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %190) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %186) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %187) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %187) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %186) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %184) #9
  br label %1758

1758:                                             ; preds = %1757
  %1759 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %211, ptr noundef nonnull align 8 dereferenceable(24) %1759)
          to label %1760 unwind label %1923

1760:                                             ; preds = %1758
  call void @llvm.lifetime.start.p0(i64 64, ptr %214) #9
  store i1 true, ptr %228, align 1
  store ptr %214, ptr %215, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %216) #9
  %1761 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %217) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %218) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %218) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %217, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %218)
          to label %1762 unwind label %1927

1762:                                             ; preds = %1760
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %216, ptr noundef nonnull align 8 dereferenceable(33088) %1761, ptr noundef nonnull align 8 dereferenceable(32) %217)
          to label %1763 unwind label %1931

1763:                                             ; preds = %1762
  call void @llvm.lifetime.start.p0(i64 16, ptr %219) #9
  %1764 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %220) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %221) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %221) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %220, ptr noundef @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %221)
          to label %1765 unwind label %1935

1765:                                             ; preds = %1763
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %219, ptr noundef nonnull align 8 dereferenceable(33088) %1764, ptr noundef nonnull align 8 dereferenceable(32) %220)
          to label %1766 unwind label %1939

1766:                                             ; preds = %1765
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %214, ptr noundef nonnull align 8 dereferenceable(16) %216, ptr noundef nonnull align 8 dereferenceable(16) %219)
          to label %1767 unwind label %1943

1767:                                             ; preds = %1766
  %1768 = getelementptr inbounds %"struct.std::pair", ptr %214, i64 1
  store ptr %1768, ptr %215, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %222) #9
  %1769 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %223) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %224) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %224) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %223, ptr noundef @.str.91, ptr noundef nonnull align 1 dereferenceable(1) %224)
          to label %1770 unwind label %1947

1770:                                             ; preds = %1767
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %222, ptr noundef nonnull align 8 dereferenceable(33088) %1769, ptr noundef nonnull align 8 dereferenceable(32) %223)
          to label %1771 unwind label %1951

1771:                                             ; preds = %1770
  call void @llvm.lifetime.start.p0(i64 16, ptr %225) #9
  %1772 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %226) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %227) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %227) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %226, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %227)
          to label %1773 unwind label %1955

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

1774:                                             ; preds = %1773
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %1768, ptr noundef nonnull align 8 dereferenceable(16) %222, ptr noundef nonnull align 8 dereferenceable(16) %225)
          to label %1775 unwind label %1963

1775:                                             ; preds = %1774
  store i1 false, ptr %228, align 1
  %1776 = getelementptr inbounds %"class.std::initializer_list", ptr %213, i32 0, i32 0
  store ptr %214, ptr %1776, align 8, !tbaa !9
  %1777 = getelementptr inbounds %"class.std::initializer_list", ptr %213, i32 0, i32 1
  store i64 2, ptr %1777, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %229) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %229) #9
  %1778 = getelementptr inbounds { ptr, i64 }, ptr %213, i32 0, i32 0
  %1779 = load ptr, ptr %1778, align 8
  %1780 = getelementptr inbounds { ptr, i64 }, ptr %213, i32 0, i32 1
  %1781 = load i64, ptr %1780, align 8
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %212, ptr %1779, i64 %1781, ptr noundef nonnull align 1 dereferenceable(1) %229)
          to label %1782 unwind label %1967

1782:                                             ; preds = %1775
  %1783 = invoke noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef %211, ptr noundef %212)
          to label %1784 unwind label %1971

1784:                                             ; preds = %1782
  %1785 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1783)
          to label %1786 unwind label %1971

1786:                                             ; preds = %1784
  %1787 = xor i1 %1785, true
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %212) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %229) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %229) #9
  %1788 = getelementptr inbounds [2 x %"struct.std::pair"], ptr %214, i32 0, i32 0
  %1789 = getelementptr inbounds %"struct.std::pair", ptr %1788, i64 2
  br label %1790

1790:                                             ; preds = %1790, %1786
  %1791 = phi ptr [ %1789, %1786 ], [ %1792, %1790 ]
  %1792 = getelementptr inbounds %"struct.std::pair", ptr %1791, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1792) #9
  %1793 = icmp eq ptr %1792, %1788
  br i1 %1793, label %1794, label %1790

1794:                                             ; preds = %1790
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %225) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %226) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %227) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %227) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %226) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %225) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %222) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %223) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %224) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %224) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %223) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %222) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %219) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %220) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %221) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %221) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %220) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %219) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %216) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %217) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %218) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %218) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %217) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %216) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %214) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %211) #9
  br i1 %1787, label %1795, label %2083

1795:                                             ; preds = %1794
  %1796 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1797 unwind label %1923

1797:                                             ; preds = %1795
  %1798 = load ptr, ptr %1796, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %230) #9
  %1799 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1800 unwind label %2003

1800:                                             ; preds = %1797
  %1801 = load ptr, ptr %1799, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %230, ptr noundef nonnull align 8 dereferenceable(30) %1801, i32 noundef 341)
          to label %1802 unwind label %2003

1802:                                             ; preds = %1800
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1798, ptr noundef nonnull align 8 dereferenceable(30) %230, ptr noundef @.str.92)
          to label %1803 unwind label %2003

1803:                                             ; preds = %1802
  call void @llvm.lifetime.end.p0(i64 32, ptr %230) #9
  br label %2083

1804:                                             ; preds = %1488, %1479
  br label %1704

1805:                                             ; preds = %1692
  %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 %1813

1809:                                             ; preds = %1701, %1699, %1696
  %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
  call void @llvm.lifetime.end.p0(i64 32, ptr %183) #9
  br label %1813

1813:                                             ; preds = %1809, %1805
  invoke void @__cxa_end_catch()
          to label %1814 unwind label %3156

1814:                                             ; preds = %1813
  br label %3147

1815:                                             ; preds = %1706
  %1816 = landingpad { ptr, i32 }
          cleanup
  %1817 = extractvalue { ptr, i32 } %1816, 0
  store ptr %1817, ptr %4, align 8
  %1818 = extractvalue { ptr, i32 } %1816, 1
  store i32 %1818, ptr %5, align 4
  br label %1922

1819:                                             ; preds = %1709
  %1820 = landingpad { ptr, i32 }
          cleanup
  %1821 = extractvalue { ptr, i32 } %1820, 0
  store ptr %1821, ptr %4, align 8
  %1822 = extractvalue { ptr, i32 } %1820, 1
  store i32 %1822, ptr %5, align 4
  br label %1911

1823:                                             ; preds = %1711
  %1824 = landingpad { ptr, i32 }
          cleanup
  %1825 = extractvalue { ptr, i32 } %1824, 0
  store ptr %1825, ptr %4, align 8
  %1826 = extractvalue { ptr, i32 } %1824, 1
  store i32 %1826, ptr %5, align 4
  br label %1910

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

1831:                                             ; preds = %1715
  %1832 = landingpad { ptr, i32 }
          cleanup
  %1833 = extractvalue { ptr, i32 } %1832, 0
  store ptr %1833, ptr %4, align 8
  %1834 = extractvalue { ptr, i32 } %1832, 1
  store i32 %1834, ptr %5, align 4
  br label %1908

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

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

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

1847:                                             ; preds = %1726
  %1848 = landingpad { ptr, i32 }
          cleanup
  %1849 = extractvalue { ptr, i32 } %1848, 0
  store ptr %1849, ptr %4, align 8
  %1850 = extractvalue { ptr, i32 } %1848, 1
  store i32 %1850, ptr %5, align 4
  br label %1887

1851:                                             ; preds = %1728
  %1852 = landingpad { ptr, i32 }
          cleanup
  %1853 = extractvalue { ptr, i32 } %1852, 0
  store ptr %1853, ptr %4, align 8
  %1854 = extractvalue { ptr, i32 } %1852, 1
  store i32 %1854, ptr %5, align 4
  br label %1886

1855:                                             ; preds = %1729
  %1856 = landingpad { ptr, i32 }
          cleanup
  %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 %1885

1859:                                             ; preds = %1732
  %1860 = landingpad { ptr, i32 }
          cleanup
  %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
  br label %1884

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

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

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

1875:                                             ; preds = %1871, %1867
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %201) #9
  br label %1876

1876:                                             ; preds = %1875, %1863
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %210) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %210) #9
  %1877 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %203, i32 0, i32 0
  %1878 = getelementptr inbounds %"class.std::shared_ptr", ptr %1877, i64 2
  br label %1879

1879:                                             ; preds = %1879, %1876
  %1880 = phi ptr [ %1878, %1876 ], [ %1881, %1879 ]
  %1881 = getelementptr inbounds %"class.std::shared_ptr", ptr %1880, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1881) #9
  %1882 = icmp eq ptr %1881, %1877
  br i1 %1882, label %1883, label %1879

1883:                                             ; preds = %1879
  br label %1884

1884:                                             ; preds = %1883, %1859
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %207) #9
  br label %1885

1885:                                             ; preds = %1884, %1855
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %208) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %208) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %207) #9
  br label %1886

1886:                                             ; preds = %1885, %1851
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #9
  br label %1887

1887:                                             ; preds = %1886, %1847
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %206) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %206) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %205) #9
  %1888 = load i1, ptr %209, align 1
  br i1 %1888, label %1889, label %1897

1889:                                             ; preds = %1887
  %1890 = load ptr, ptr %204, align 8
  %1891 = icmp eq ptr %203, %1890
  br i1 %1891, label %1896, label %1892

1892:                                             ; preds = %1892, %1889
  %1893 = phi ptr [ %1890, %1889 ], [ %1894, %1892 ]
  %1894 = getelementptr inbounds %"class.std::shared_ptr", ptr %1893, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1894) #9
  %1895 = icmp eq ptr %1894, %203
  br i1 %1895, label %1896, label %1892

1896:                                             ; preds = %1892, %1889
  br label %1897

1897:                                             ; preds = %1896, %1887
  call void @llvm.lifetime.end.p0(i64 32, ptr %203) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %199) #9
  br label %1898

1898:                                             ; preds = %1897, %1843
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %200) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %200) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %199) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %185) #9
  br label %1899

1899:                                             ; preds = %1898, %1839
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %188) #9
  br label %1900

1900:                                             ; preds = %1899, %1835
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %197) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %197) #9
  %1901 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %190, i32 0, i32 0
  %1902 = getelementptr inbounds %"class.std::shared_ptr", ptr %1901, i64 2
  br label %1903

1903:                                             ; preds = %1903, %1900
  %1904 = phi ptr [ %1902, %1900 ], [ %1905, %1903 ]
  %1905 = getelementptr inbounds %"class.std::shared_ptr", ptr %1904, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1905) #9
  %1906 = icmp eq ptr %1905, %1901
  br i1 %1906, label %1907, label %1903

1907:                                             ; preds = %1903
  br label %1908

1908:                                             ; preds = %1907, %1831
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %194) #9
  br label %1909

1909:                                             ; preds = %1908, %1827
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %195) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %195) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %194) #9
  br label %1910

1910:                                             ; preds = %1909, %1823
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %192) #9
  br label %1911

1911:                                             ; preds = %1910, %1819
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %193) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %193) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %192) #9
  %1912 = load i1, ptr %196, align 1
  br i1 %1912, label %1913, label %1921

1913:                                             ; preds = %1911
  %1914 = load ptr, ptr %191, align 8
  %1915 = icmp eq ptr %190, %1914
  br i1 %1915, label %1920, label %1916

1916:                                             ; preds = %1916, %1913
  %1917 = phi ptr [ %1914, %1913 ], [ %1918, %1916 ]
  %1918 = getelementptr inbounds %"class.std::shared_ptr", ptr %1917, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1918) #9
  %1919 = icmp eq ptr %1918, %190
  br i1 %1919, label %1920, label %1916

1920:                                             ; preds = %1916, %1913
  br label %1921

1921:                                             ; preds = %1920, %1911
  call void @llvm.lifetime.end.p0(i64 32, ptr %190) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %186) #9
  br label %1922

1922:                                             ; preds = %1921, %1815
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %187) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %187) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %186) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %184) #9
  br label %3147

1923:                                             ; preds = %1795, %1758
  %1924 = landingpad { ptr, i32 }
          catch ptr null
  %1925 = extractvalue { ptr, i32 } %1924, 0
  store ptr %1925, ptr %4, align 8
  %1926 = extractvalue { ptr, i32 } %1924, 1
  store i32 %1926, ptr %5, align 4
  br label %2007

1927:                                             ; preds = %1760
  %1928 = landingpad { ptr, i32 }
          catch ptr null
  %1929 = extractvalue { ptr, i32 } %1928, 0
  store ptr %1929, ptr %4, align 8
  %1930 = extractvalue { ptr, i32 } %1928, 1
  store i32 %1930, ptr %5, align 4
  br label %1992

1931:                                             ; preds = %1762
  %1932 = landingpad { ptr, i32 }
          catch ptr null
  %1933 = extractvalue { ptr, i32 } %1932, 0
  store ptr %1933, ptr %4, align 8
  %1934 = extractvalue { ptr, i32 } %1932, 1
  store i32 %1934, ptr %5, align 4
  br label %1991

1935:                                             ; preds = %1763
  %1936 = landingpad { ptr, i32 }
          catch ptr null
  %1937 = extractvalue { ptr, i32 } %1936, 0
  store ptr %1937, ptr %4, align 8
  %1938 = extractvalue { ptr, i32 } %1936, 1
  store i32 %1938, ptr %5, align 4
  br label %1990

1939:                                             ; preds = %1765
  %1940 = landingpad { ptr, i32 }
          catch ptr null
  %1941 = extractvalue { ptr, i32 } %1940, 0
  store ptr %1941, ptr %4, align 8
  %1942 = extractvalue { ptr, i32 } %1940, 1
  store i32 %1942, ptr %5, align 4
  br label %1989

1943:                                             ; preds = %1766
  %1944 = landingpad { ptr, i32 }
          catch ptr null
  %1945 = extractvalue { ptr, i32 } %1944, 0
  store ptr %1945, ptr %4, align 8
  %1946 = extractvalue { ptr, i32 } %1944, 1
  store i32 %1946, ptr %5, align 4
  br label %1988

1947:                                             ; preds = %1767
  %1948 = landingpad { ptr, i32 }
          catch ptr null
  %1949 = extractvalue { ptr, i32 } %1948, 0
  store ptr %1949, ptr %4, align 8
  %1950 = extractvalue { ptr, i32 } %1948, 1
  store i32 %1950, ptr %5, align 4
  br label %1987

1951:                                             ; preds = %1770
  %1952 = landingpad { ptr, i32 }
          catch ptr null
  %1953 = extractvalue { ptr, i32 } %1952, 0
  store ptr %1953, ptr %4, align 8
  %1954 = extractvalue { ptr, i32 } %1952, 1
  store i32 %1954, ptr %5, align 4
  br label %1986

1955:                                             ; preds = %1771
  %1956 = landingpad { ptr, i32 }
          catch ptr null
  %1957 = extractvalue { ptr, i32 } %1956, 0
  store ptr %1957, ptr %4, align 8
  %1958 = extractvalue { ptr, i32 } %1956, 1
  store i32 %1958, ptr %5, align 4
  br label %1985

1959:                                             ; preds = %1773
  %1960 = landingpad { ptr, i32 }
          catch ptr null
  %1961 = extractvalue { ptr, i32 } %1960, 0
  store ptr %1961, ptr %4, align 8
  %1962 = extractvalue { ptr, i32 } %1960, 1
  store i32 %1962, ptr %5, align 4
  br label %1984

1963:                                             ; preds = %1774
  %1964 = landingpad { ptr, i32 }
          catch ptr null
  %1965 = extractvalue { ptr, i32 } %1964, 0
  store ptr %1965, ptr %4, align 8
  %1966 = extractvalue { ptr, i32 } %1964, 1
  store i32 %1966, ptr %5, align 4
  br label %1983

1967:                                             ; preds = %1775
  %1968 = landingpad { ptr, i32 }
          catch ptr null
  %1969 = extractvalue { ptr, i32 } %1968, 0
  store ptr %1969, ptr %4, align 8
  %1970 = extractvalue { ptr, i32 } %1968, 1
  store i32 %1970, ptr %5, align 4
  br label %1975

1971:                                             ; preds = %1784, %1782
  %1972 = landingpad { ptr, i32 }
          catch ptr null
  %1973 = extractvalue { ptr, i32 } %1972, 0
  store ptr %1973, ptr %4, align 8
  %1974 = extractvalue { ptr, i32 } %1972, 1
  store i32 %1974, ptr %5, align 4
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %212) #9
  br label %1975

1975:                                             ; preds = %1971, %1967
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %229) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %229) #9
  %1976 = getelementptr inbounds [2 x %"struct.std::pair"], ptr %214, i32 0, i32 0
  %1977 = getelementptr inbounds %"struct.std::pair", ptr %1976, i64 2
  br label %1978

1978:                                             ; preds = %1978, %1975
  %1979 = phi ptr [ %1977, %1975 ], [ %1980, %1978 ]
  %1980 = getelementptr inbounds %"struct.std::pair", ptr %1979, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1980) #9
  %1981 = icmp eq ptr %1980, %1976
  br i1 %1981, label %1982, label %1978

1982:                                             ; preds = %1978
  br label %1983

1983:                                             ; preds = %1982, %1963
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %225) #9
  br label %1984

1984:                                             ; preds = %1983, %1959
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %226) #9
  br label %1985

1985:                                             ; preds = %1984, %1955
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %227) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %227) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %226) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %225) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %222) #9
  br label %1986

1986:                                             ; preds = %1985, %1951
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %223) #9
  br label %1987

1987:                                             ; preds = %1986, %1947
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %224) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %224) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %223) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %222) #9
  br label %1988

1988:                                             ; preds = %1987, %1943
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %219) #9
  br label %1989

1989:                                             ; preds = %1988, %1939
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %220) #9
  br label %1990

1990:                                             ; preds = %1989, %1935
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %221) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %221) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %220) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %219) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %216) #9
  br label %1991

1991:                                             ; preds = %1990, %1931
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %217) #9
  br label %1992

1992:                                             ; preds = %1991, %1927
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %218) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %218) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %217) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %216) #9
  %1993 = load i1, ptr %228, align 1
  br i1 %1993, label %1994, label %2002

1994:                                             ; preds = %1992
  %1995 = load ptr, ptr %215, align 8
  %1996 = icmp eq ptr %214, %1995
  br i1 %1996, label %2001, label %1997

1997:                                             ; preds = %1997, %1994
  %1998 = phi ptr [ %1995, %1994 ], [ %1999, %1997 ]
  %1999 = getelementptr inbounds %"struct.std::pair", ptr %1998, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1999) #9
  %2000 = icmp eq ptr %1999, %214
  br i1 %2000, label %2001, label %1997

2001:                                             ; preds = %1997, %1994
  br label %2002

2002:                                             ; preds = %2001, %1992
  call void @llvm.lifetime.end.p0(i64 64, ptr %214) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %211) #9
  br label %2007

2003:                                             ; preds = %1802, %1800, %1797
  %2004 = landingpad { ptr, i32 }
          catch ptr null
  %2005 = extractvalue { ptr, i32 } %2004, 0
  store ptr %2005, ptr %4, align 8
  %2006 = extractvalue { ptr, i32 } %2004, 1
  store i32 %2006, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %230) #9
  br label %2007

2007:                                             ; preds = %2003, %2002, %1923
  %2008 = load ptr, ptr %4, align 8
  %2009 = call ptr @__cxa_begin_catch(ptr %2008) #9
  %2010 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2011 unwind label %2084

2011:                                             ; preds = %2007
  %2012 = load ptr, ptr %2010, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %231) #9
  %2013 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2014 unwind label %2088

2014:                                             ; preds = %2011
  %2015 = load ptr, ptr %2013, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %231, ptr noundef nonnull align 8 dereferenceable(30) %2015, i32 noundef 341)
          to label %2016 unwind label %2088

2016:                                             ; preds = %2014
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2012, ptr noundef nonnull align 8 dereferenceable(30) %231, ptr noundef @.str.93)
          to label %2017 unwind label %2088

2017:                                             ; preds = %2016
  call void @llvm.lifetime.end.p0(i64 32, ptr %231) #9
  invoke void @__cxa_end_catch()
          to label %2018 unwind label %715

2018:                                             ; preds = %2017
  br label %2019

2019:                                             ; preds = %2083, %2018
  br label %2020

2020:                                             ; preds = %2019
  br label %2021

2021:                                             ; preds = %2020
  call void @llvm.lifetime.start.p0(i64 16, ptr %232) #9
  %2022 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %233) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %234) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %234) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %233, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %234)
          to label %2023 unwind label %2094

2023:                                             ; preds = %2021
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %232, ptr noundef nonnull align 8 dereferenceable(33088) %2022, ptr noundef nonnull align 8 dereferenceable(32) %233)
          to label %2024 unwind label %2098

2024:                                             ; preds = %2023
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %233) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %234) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %234) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %233) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %235) #9
  %2025 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %2026 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %237) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %238) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %238) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %237, ptr noundef @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %238)
          to label %2027 unwind label %2103

2027:                                             ; preds = %2024
  call void @llvm.lifetime.start.p0(i64 32, ptr %241) #9
  store i1 true, ptr %247, align 1
  store ptr %241, ptr %242, align 8
  %2028 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %243) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %244) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %244) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %243, ptr noundef @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %244)
          to label %2029 unwind label %2107

2029:                                             ; preds = %2027
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %241, ptr noundef nonnull align 8 dereferenceable(33088) %2028, ptr noundef nonnull align 8 dereferenceable(32) %243)
          to label %2030 unwind label %2111

2030:                                             ; preds = %2029
  %2031 = getelementptr inbounds %"class.std::shared_ptr", ptr %241, i64 1
  store ptr %2031, ptr %242, align 8
  %2032 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %245) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %246) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %246) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %245, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %246)
          to label %2033 unwind label %2115

2033:                                             ; preds = %2030
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %2031, ptr noundef nonnull align 8 dereferenceable(33088) %2032, ptr noundef nonnull align 8 dereferenceable(32) %245)
          to label %2034 unwind label %2119

2034:                                             ; preds = %2033
  store i1 false, ptr %247, align 1
  %2035 = getelementptr inbounds %"class.std::initializer_list.94", ptr %240, i32 0, i32 0
  store ptr %241, ptr %2035, align 8, !tbaa !13
  %2036 = getelementptr inbounds %"class.std::initializer_list.94", ptr %240, i32 0, i32 1
  store i64 2, ptr %2036, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %248) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %248) #9
  %2037 = getelementptr inbounds { ptr, i64 }, ptr %240, i32 0, i32 0
  %2038 = load ptr, ptr %2037, align 8
  %2039 = getelementptr inbounds { ptr, i64 }, ptr %240, i32 0, i32 1
  %2040 = load i64, ptr %2039, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %239, ptr %2038, i64 %2040, ptr noundef nonnull align 1 dereferenceable(1) %248)
          to label %2041 unwind label %2123

2041:                                             ; preds = %2034
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %236, ptr noundef nonnull align 8 dereferenceable(33088) %2026, ptr noundef nonnull align 8 dereferenceable(32) %237, ptr noundef %239)
          to label %2042 unwind label %2127

2042:                                             ; preds = %2041
  %2043 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %250) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %251) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %251) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %250, ptr noundef @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %251)
          to label %2044 unwind label %2131

2044:                                             ; preds = %2042
  call void @llvm.lifetime.start.p0(i64 32, ptr %254) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %254, ptr noundef nonnull align 8 dereferenceable(16) %232) #9
  %2045 = getelementptr inbounds %"class.std::shared_ptr", ptr %254, i64 1
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %2045, ptr noundef nonnull align 8 dereferenceable(16) %232) #9
  %2046 = getelementptr inbounds %"class.std::initializer_list.94", ptr %253, i32 0, i32 0
  store ptr %254, ptr %2046, align 8, !tbaa !13
  %2047 = getelementptr inbounds %"class.std::initializer_list.94", ptr %253, i32 0, i32 1
  store i64 2, ptr %2047, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %255) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %255) #9
  %2048 = getelementptr inbounds { ptr, i64 }, ptr %253, i32 0, i32 0
  %2049 = load ptr, ptr %2048, align 8
  %2050 = getelementptr inbounds { ptr, i64 }, ptr %253, i32 0, i32 1
  %2051 = load i64, ptr %2050, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %252, ptr %2049, i64 %2051, ptr noundef nonnull align 1 dereferenceable(1) %255)
          to label %2052 unwind label %2135

2052:                                             ; preds = %2044
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %249, ptr noundef nonnull align 8 dereferenceable(33088) %2043, ptr noundef nonnull align 8 dereferenceable(32) %250, ptr noundef %252)
          to label %2053 unwind label %2139

2053:                                             ; preds = %2052
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.91") align 8 %235, ptr noundef %2025, ptr noundef %236, ptr noundef %249)
          to label %2054 unwind label %2143

2054:                                             ; preds = %2053
  %2055 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %235) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %235) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %249) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %252) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %255) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %255) #9
  %2056 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %254, i32 0, i32 0
  %2057 = getelementptr inbounds %"class.std::shared_ptr", ptr %2056, i64 2
  br label %2058

2058:                                             ; preds = %2058, %2054
  %2059 = phi ptr [ %2057, %2054 ], [ %2060, %2058 ]
  %2060 = getelementptr inbounds %"class.std::shared_ptr", ptr %2059, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2060) #9
  %2061 = icmp eq ptr %2060, %2056
  br i1 %2061, label %2062, label %2058

2062:                                             ; preds = %2058
  call void @llvm.lifetime.end.p0(i64 32, ptr %254) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %250) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %251) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %251) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %250) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %236) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %239) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %248) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %248) #9
  %2063 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %241, i32 0, i32 0
  %2064 = getelementptr inbounds %"class.std::shared_ptr", ptr %2063, i64 2
  br label %2065

2065:                                             ; preds = %2065, %2062
  %2066 = phi ptr [ %2064, %2062 ], [ %2067, %2065 ]
  %2067 = getelementptr inbounds %"class.std::shared_ptr", ptr %2066, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2067) #9
  %2068 = icmp eq ptr %2067, %2063
  br i1 %2068, label %2069, label %2065

2069:                                             ; preds = %2065
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %245) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %246) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %246) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %245) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %243) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %244) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %244) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %243) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %241) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %237) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %238) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %238) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %237) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %235) #9
  br label %2070

2070:                                             ; preds = %2069
  %2071 = call noundef zeroext i1 @_ZSteqISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr null) #9
  %2072 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %2071)
          to label %2073 unwind label %2181

2073:                                             ; preds = %2070
  br i1 %2072, label %2245, label %2074

2074:                                             ; preds = %2073
  %2075 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2076 unwind label %2181

2076:                                             ; preds = %2074
  %2077 = load ptr, ptr %2075, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %256) #9
  %2078 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2079 unwind label %2185

2079:                                             ; preds = %2076
  %2080 = load ptr, ptr %2078, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %256, ptr noundef nonnull align 8 dereferenceable(30) %2080, i32 noundef 347)
          to label %2081 unwind label %2185

2081:                                             ; preds = %2079
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2077, ptr noundef nonnull align 8 dereferenceable(30) %256, ptr noundef @.str.81)
          to label %2082 unwind label %2185

2082:                                             ; preds = %2081
  call void @llvm.lifetime.end.p0(i64 32, ptr %256) #9
  br label %2245

2083:                                             ; preds = %1803, %1794
  br label %2019

2084:                                             ; preds = %2007
  %2085 = landingpad { ptr, i32 }
          cleanup
  %2086 = extractvalue { ptr, i32 } %2085, 0
  store ptr %2086, ptr %4, align 8
  %2087 = extractvalue { ptr, i32 } %2085, 1
  store i32 %2087, ptr %5, align 4
  br label %2092

2088:                                             ; preds = %2016, %2014, %2011
  %2089 = landingpad { ptr, i32 }
          cleanup
  %2090 = extractvalue { ptr, i32 } %2089, 0
  store ptr %2090, ptr %4, align 8
  %2091 = extractvalue { ptr, i32 } %2089, 1
  store i32 %2091, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %231) #9
  br label %2092

2092:                                             ; preds = %2088, %2084
  invoke void @__cxa_end_catch()
          to label %2093 unwind label %3156

2093:                                             ; preds = %2092
  br label %3147

2094:                                             ; preds = %2021
  %2095 = landingpad { ptr, i32 }
          cleanup
  %2096 = extractvalue { ptr, i32 } %2095, 0
  store ptr %2096, ptr %4, align 8
  %2097 = extractvalue { ptr, i32 } %2095, 1
  store i32 %2097, ptr %5, align 4
  br label %2102

2098:                                             ; preds = %2023
  %2099 = landingpad { ptr, i32 }
          cleanup
  %2100 = extractvalue { ptr, i32 } %2099, 0
  store ptr %2100, ptr %4, align 8
  %2101 = extractvalue { ptr, i32 } %2099, 1
  store i32 %2101, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %233) #9
  br label %2102

2102:                                             ; preds = %2098, %2094
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %234) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %234) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %233) #9
  br label %3146

2103:                                             ; preds = %2024
  %2104 = landingpad { ptr, i32 }
          cleanup
  %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 %2180

2107:                                             ; preds = %2027
  %2108 = landingpad { ptr, i32 }
          cleanup
  %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 %2169

2111:                                             ; preds = %2029
  %2112 = landingpad { ptr, i32 }
          cleanup
  %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
  br label %2168

2115:                                             ; preds = %2030
  %2116 = landingpad { ptr, i32 }
          cleanup
  %2117 = extractvalue { ptr, i32 } %2116, 0
  store ptr %2117, ptr %4, align 8
  %2118 = extractvalue { ptr, i32 } %2116, 1
  store i32 %2118, ptr %5, align 4
  br label %2167

2119:                                             ; preds = %2033
  %2120 = landingpad { ptr, i32 }
          cleanup
  %2121 = extractvalue { ptr, i32 } %2120, 0
  store ptr %2121, ptr %4, align 8
  %2122 = extractvalue { ptr, i32 } %2120, 1
  store i32 %2122, ptr %5, align 4
  br label %2166

2123:                                             ; preds = %2034
  %2124 = landingpad { ptr, i32 }
          cleanup
  %2125 = extractvalue { ptr, i32 } %2124, 0
  store ptr %2125, ptr %4, align 8
  %2126 = extractvalue { ptr, i32 } %2124, 1
  store i32 %2126, ptr %5, align 4
  br label %2158

2127:                                             ; preds = %2041
  %2128 = landingpad { ptr, i32 }
          cleanup
  %2129 = extractvalue { ptr, i32 } %2128, 0
  store ptr %2129, ptr %4, align 8
  %2130 = extractvalue { ptr, i32 } %2128, 1
  store i32 %2130, ptr %5, align 4
  br label %2157

2131:                                             ; preds = %2042
  %2132 = landingpad { ptr, i32 }
          cleanup
  %2133 = extractvalue { ptr, i32 } %2132, 0
  store ptr %2133, ptr %4, align 8
  %2134 = extractvalue { ptr, i32 } %2132, 1
  store i32 %2134, ptr %5, align 4
  br label %2156

2135:                                             ; preds = %2044
  %2136 = landingpad { ptr, i32 }
          cleanup
  %2137 = extractvalue { ptr, i32 } %2136, 0
  store ptr %2137, ptr %4, align 8
  %2138 = extractvalue { ptr, i32 } %2136, 1
  store i32 %2138, ptr %5, align 4
  br label %2148

2139:                                             ; preds = %2052
  %2140 = landingpad { ptr, i32 }
          cleanup
  %2141 = extractvalue { ptr, i32 } %2140, 0
  store ptr %2141, ptr %4, align 8
  %2142 = extractvalue { ptr, i32 } %2140, 1
  store i32 %2142, ptr %5, align 4
  br label %2147

2143:                                             ; preds = %2053
  %2144 = landingpad { ptr, i32 }
          cleanup
  %2145 = extractvalue { ptr, i32 } %2144, 0
  store ptr %2145, ptr %4, align 8
  %2146 = extractvalue { ptr, i32 } %2144, 1
  store i32 %2146, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %249) #9
  br label %2147

2147:                                             ; preds = %2143, %2139
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %252) #9
  br label %2148

2148:                                             ; preds = %2147, %2135
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %255) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %255) #9
  %2149 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %254, i32 0, i32 0
  %2150 = getelementptr inbounds %"class.std::shared_ptr", ptr %2149, i64 2
  br label %2151

2151:                                             ; preds = %2151, %2148
  %2152 = phi ptr [ %2150, %2148 ], [ %2153, %2151 ]
  %2153 = getelementptr inbounds %"class.std::shared_ptr", ptr %2152, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2153) #9
  %2154 = icmp eq ptr %2153, %2149
  br i1 %2154, label %2155, label %2151

2155:                                             ; preds = %2151
  call void @llvm.lifetime.end.p0(i64 32, ptr %254) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %250) #9
  br label %2156

2156:                                             ; preds = %2155, %2131
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %251) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %251) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %250) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %236) #9
  br label %2157

2157:                                             ; preds = %2156, %2127
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %239) #9
  br label %2158

2158:                                             ; preds = %2157, %2123
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %248) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %248) #9
  %2159 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %241, i32 0, i32 0
  %2160 = getelementptr inbounds %"class.std::shared_ptr", ptr %2159, i64 2
  br label %2161

2161:                                             ; preds = %2161, %2158
  %2162 = phi ptr [ %2160, %2158 ], [ %2163, %2161 ]
  %2163 = getelementptr inbounds %"class.std::shared_ptr", ptr %2162, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2163) #9
  %2164 = icmp eq ptr %2163, %2159
  br i1 %2164, label %2165, label %2161

2165:                                             ; preds = %2161
  br label %2166

2166:                                             ; preds = %2165, %2119
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %245) #9
  br label %2167

2167:                                             ; preds = %2166, %2115
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %246) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %246) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %245) #9
  br label %2168

2168:                                             ; preds = %2167, %2111
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %243) #9
  br label %2169

2169:                                             ; preds = %2168, %2107
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %244) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %244) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %243) #9
  %2170 = load i1, ptr %247, align 1
  br i1 %2170, label %2171, label %2179

2171:                                             ; preds = %2169
  %2172 = load ptr, ptr %242, align 8
  %2173 = icmp eq ptr %241, %2172
  br i1 %2173, label %2178, label %2174

2174:                                             ; preds = %2174, %2171
  %2175 = phi ptr [ %2172, %2171 ], [ %2176, %2174 ]
  %2176 = getelementptr inbounds %"class.std::shared_ptr", ptr %2175, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2176) #9
  %2177 = icmp eq ptr %2176, %241
  br i1 %2177, label %2178, label %2174

2178:                                             ; preds = %2174, %2171
  br label %2179

2179:                                             ; preds = %2178, %2169
  call void @llvm.lifetime.end.p0(i64 32, ptr %241) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %237) #9
  br label %2180

2180:                                             ; preds = %2179, %2103
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %238) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %238) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %237) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %235) #9
  br label %3145

2181:                                             ; preds = %2074, %2070
  %2182 = landingpad { ptr, i32 }
          catch ptr null
  %2183 = extractvalue { ptr, i32 } %2182, 0
  store ptr %2183, ptr %4, align 8
  %2184 = extractvalue { ptr, i32 } %2182, 1
  store i32 %2184, ptr %5, align 4
  br label %2189

2185:                                             ; preds = %2081, %2079, %2076
  %2186 = landingpad { ptr, i32 }
          catch ptr null
  %2187 = extractvalue { ptr, i32 } %2186, 0
  store ptr %2187, ptr %4, align 8
  %2188 = extractvalue { ptr, i32 } %2186, 1
  store i32 %2188, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %256) #9
  br label %2189

2189:                                             ; preds = %2185, %2181
  %2190 = load ptr, ptr %4, align 8
  %2191 = call ptr @__cxa_begin_catch(ptr %2190) #9
  %2192 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2193 unwind label %2246

2193:                                             ; preds = %2189
  %2194 = load ptr, ptr %2192, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %257) #9
  %2195 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2196 unwind label %2250

2196:                                             ; preds = %2193
  %2197 = load ptr, ptr %2195, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %257, ptr noundef nonnull align 8 dereferenceable(30) %2197, i32 noundef 347)
          to label %2198 unwind label %2250

2198:                                             ; preds = %2196
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2194, ptr noundef nonnull align 8 dereferenceable(30) %257, ptr noundef @.str.82)
          to label %2199 unwind label %2250

2199:                                             ; preds = %2198
  call void @llvm.lifetime.end.p0(i64 32, ptr %257) #9
  invoke void @__cxa_end_catch()
          to label %2200 unwind label %2254

2200:                                             ; preds = %2199
  br label %2201

2201:                                             ; preds = %2245, %2200
  br label %2202

2202:                                             ; preds = %2201
  br label %2203

2203:                                             ; preds = %2202
  call void @llvm.lifetime.start.p0(i64 16, ptr %258) #9
  %2204 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %259) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %260) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %260) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %259, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %260)
          to label %2205 unwind label %2260

2205:                                             ; preds = %2203
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %258, ptr noundef nonnull align 8 dereferenceable(33088) %2204, ptr noundef nonnull align 8 dereferenceable(32) %259)
          to label %2206 unwind label %2264

2206:                                             ; preds = %2205
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %259) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %260) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %260) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %259) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %261) #9
  %2207 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %262) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %263) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %263) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %262, ptr noundef @.str.91, ptr noundef nonnull align 1 dereferenceable(1) %263)
          to label %2208 unwind label %2269

2208:                                             ; preds = %2206
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %261, ptr noundef nonnull align 8 dereferenceable(33088) %2207, ptr noundef nonnull align 8 dereferenceable(32) %262)
          to label %2209 unwind label %2273

2209:                                             ; preds = %2208
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %262) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %263) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %263) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %262) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %264) #9
  %2210 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %265, ptr noundef nonnull align 8 dereferenceable(16) %258) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %266, ptr noundef nonnull align 8 dereferenceable(16) %261) #9
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.91") align 8 %264, ptr noundef %2210, ptr noundef %265, ptr noundef %266)
          to label %2211 unwind label %2278

2211:                                             ; preds = %2209
  %2212 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %264) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %264) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %266) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %265) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %264) #9
  br label %2213

2213:                                             ; preds = %2211
  %2214 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %267, ptr noundef nonnull align 8 dereferenceable(24) %2214)
          to label %2215 unwind label %2282

2215:                                             ; preds = %2213
  call void @llvm.lifetime.start.p0(i64 32, ptr %270) #9
  store ptr %270, ptr %271, align 8
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S5_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %270, ptr noundef nonnull align 8 dereferenceable(16) %258, ptr noundef nonnull align 8 dereferenceable(16) %261)
          to label %2216 unwind label %2286

2216:                                             ; preds = %2215
  %2217 = getelementptr inbounds %"class.std::initializer_list", ptr %269, i32 0, i32 0
  store ptr %270, ptr %2217, align 8, !tbaa !9
  %2218 = getelementptr inbounds %"class.std::initializer_list", ptr %269, i32 0, i32 1
  store i64 1, ptr %2218, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %272) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %272) #9
  %2219 = getelementptr inbounds { ptr, i64 }, ptr %269, i32 0, i32 0
  %2220 = load ptr, ptr %2219, align 8
  %2221 = getelementptr inbounds { ptr, i64 }, ptr %269, i32 0, i32 1
  %2222 = load i64, ptr %2221, align 8
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %268, ptr %2220, i64 %2222, ptr noundef nonnull align 1 dereferenceable(1) %272)
          to label %2223 unwind label %2297

2223:                                             ; preds = %2216
  %2224 = invoke noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef %267, ptr noundef %268)
          to label %2225 unwind label %2301

2225:                                             ; preds = %2223
  %2226 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %2224)
          to label %2227 unwind label %2301

2227:                                             ; preds = %2225
  %2228 = xor i1 %2226, true
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %268) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %272) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %272) #9
  %2229 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %270, i32 0, i32 0
  %2230 = getelementptr inbounds %"struct.std::pair", ptr %2229, i64 1
  br label %2231

2231:                                             ; preds = %2231, %2227
  %2232 = phi ptr [ %2230, %2227 ], [ %2233, %2231 ]
  %2233 = getelementptr inbounds %"struct.std::pair", ptr %2232, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2233) #9
  %2234 = icmp eq ptr %2233, %2229
  br i1 %2234, label %2235, label %2231

2235:                                             ; preds = %2231
  call void @llvm.lifetime.end.p0(i64 32, ptr %270) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %267) #9
  br i1 %2228, label %2236, label %2370

2236:                                             ; preds = %2235
  %2237 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2238 unwind label %2282

2238:                                             ; preds = %2236
  %2239 = load ptr, ptr %2237, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %273) #9
  %2240 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2241 unwind label %2314

2241:                                             ; preds = %2238
  %2242 = load ptr, ptr %2240, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %273, ptr noundef nonnull align 8 dereferenceable(30) %2242, i32 noundef 353)
          to label %2243 unwind label %2314

2243:                                             ; preds = %2241
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2239, ptr noundef nonnull align 8 dereferenceable(30) %273, ptr noundef @.str.94)
          to label %2244 unwind label %2314

2244:                                             ; preds = %2243
  call void @llvm.lifetime.end.p0(i64 32, ptr %273) #9
  br label %2370

2245:                                             ; preds = %2082, %2073
  br label %2201

2246:                                             ; preds = %2189
  %2247 = landingpad { ptr, i32 }
          cleanup
  %2248 = extractvalue { ptr, i32 } %2247, 0
  store ptr %2248, ptr %4, align 8
  %2249 = extractvalue { ptr, i32 } %2247, 1
  store i32 %2249, ptr %5, align 4
  br label %2258

2250:                                             ; preds = %2198, %2196, %2193
  %2251 = landingpad { ptr, i32 }
          cleanup
  %2252 = extractvalue { ptr, i32 } %2251, 0
  store ptr %2252, ptr %4, align 8
  %2253 = extractvalue { ptr, i32 } %2251, 1
  store i32 %2253, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %257) #9
  br label %2258

2254:                                             ; preds = %2199
  %2255 = landingpad { ptr, i32 }
          cleanup
  %2256 = extractvalue { ptr, i32 } %2255, 0
  store ptr %2256, ptr %4, align 8
  %2257 = extractvalue { ptr, i32 } %2255, 1
  store i32 %2257, ptr %5, align 4
  br label %3145

2258:                                             ; preds = %2250, %2246
  invoke void @__cxa_end_catch()
          to label %2259 unwind label %3156

2259:                                             ; preds = %2258
  br label %3145

2260:                                             ; preds = %2203
  %2261 = landingpad { ptr, i32 }
          cleanup
  %2262 = extractvalue { ptr, i32 } %2261, 0
  store ptr %2262, ptr %4, align 8
  %2263 = extractvalue { ptr, i32 } %2261, 1
  store i32 %2263, ptr %5, align 4
  br label %2268

2264:                                             ; preds = %2205
  %2265 = landingpad { ptr, i32 }
          cleanup
  %2266 = extractvalue { ptr, i32 } %2265, 0
  store ptr %2266, ptr %4, align 8
  %2267 = extractvalue { ptr, i32 } %2265, 1
  store i32 %2267, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %259) #9
  br label %2268

2268:                                             ; preds = %2264, %2260
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %260) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %260) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %259) #9
  br label %3144

2269:                                             ; preds = %2206
  %2270 = landingpad { ptr, i32 }
          cleanup
  %2271 = extractvalue { ptr, i32 } %2270, 0
  store ptr %2271, ptr %4, align 8
  %2272 = extractvalue { ptr, i32 } %2270, 1
  store i32 %2272, ptr %5, align 4
  br label %2277

2273:                                             ; preds = %2208
  %2274 = landingpad { ptr, i32 }
          cleanup
  %2275 = extractvalue { ptr, i32 } %2274, 0
  store ptr %2275, ptr %4, align 8
  %2276 = extractvalue { ptr, i32 } %2274, 1
  store i32 %2276, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %262) #9
  br label %2277

2277:                                             ; preds = %2273, %2269
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %263) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %263) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %262) #9
  br label %3143

2278:                                             ; preds = %2209
  %2279 = landingpad { ptr, i32 }
          cleanup
  %2280 = extractvalue { ptr, i32 } %2279, 0
  store ptr %2280, ptr %4, align 8
  %2281 = extractvalue { ptr, i32 } %2279, 1
  store i32 %2281, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %266) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %265) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %264) #9
  br label %3142

2282:                                             ; preds = %2236, %2213
  %2283 = landingpad { ptr, i32 }
          catch ptr null
  %2284 = extractvalue { ptr, i32 } %2283, 0
  store ptr %2284, ptr %4, align 8
  %2285 = extractvalue { ptr, i32 } %2283, 1
  store i32 %2285, ptr %5, align 4
  br label %2318

2286:                                             ; preds = %2215
  %2287 = landingpad { ptr, i32 }
          catch ptr null
  %2288 = extractvalue { ptr, i32 } %2287, 0
  store ptr %2288, ptr %4, align 8
  %2289 = extractvalue { ptr, i32 } %2287, 1
  store i32 %2289, ptr %5, align 4
  %2290 = load ptr, ptr %271, align 8
  %2291 = icmp eq ptr %270, %2290
  br i1 %2291, label %2296, label %2292

2292:                                             ; preds = %2292, %2286
  %2293 = phi ptr [ %2290, %2286 ], [ %2294, %2292 ]
  %2294 = getelementptr inbounds %"struct.std::pair", ptr %2293, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2294) #9
  %2295 = icmp eq ptr %2294, %270
  br i1 %2295, label %2296, label %2292

2296:                                             ; preds = %2292, %2286
  br label %2313

2297:                                             ; preds = %2216
  %2298 = landingpad { ptr, i32 }
          catch ptr null
  %2299 = extractvalue { ptr, i32 } %2298, 0
  store ptr %2299, ptr %4, align 8
  %2300 = extractvalue { ptr, i32 } %2298, 1
  store i32 %2300, ptr %5, align 4
  br label %2305

2301:                                             ; preds = %2225, %2223
  %2302 = landingpad { ptr, i32 }
          catch ptr null
  %2303 = extractvalue { ptr, i32 } %2302, 0
  store ptr %2303, ptr %4, align 8
  %2304 = extractvalue { ptr, i32 } %2302, 1
  store i32 %2304, ptr %5, align 4
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %268) #9
  br label %2305

2305:                                             ; preds = %2301, %2297
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %272) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %272) #9
  %2306 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %270, i32 0, i32 0
  %2307 = getelementptr inbounds %"struct.std::pair", ptr %2306, i64 1
  br label %2308

2308:                                             ; preds = %2308, %2305
  %2309 = phi ptr [ %2307, %2305 ], [ %2310, %2308 ]
  %2310 = getelementptr inbounds %"struct.std::pair", ptr %2309, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2310) #9
  %2311 = icmp eq ptr %2310, %2306
  br i1 %2311, label %2312, label %2308

2312:                                             ; preds = %2308
  br label %2313

2313:                                             ; preds = %2312, %2296
  call void @llvm.lifetime.end.p0(i64 32, ptr %270) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %267) #9
  br label %2318

2314:                                             ; preds = %2243, %2241, %2238
  %2315 = landingpad { ptr, i32 }
          catch ptr null
  %2316 = extractvalue { ptr, i32 } %2315, 0
  store ptr %2316, ptr %4, align 8
  %2317 = extractvalue { ptr, i32 } %2315, 1
  store i32 %2317, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %273) #9
  br label %2318

2318:                                             ; preds = %2314, %2313, %2282
  %2319 = load ptr, ptr %4, align 8
  %2320 = call ptr @__cxa_begin_catch(ptr %2319) #9
  %2321 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2322 unwind label %2371

2322:                                             ; preds = %2318
  %2323 = load ptr, ptr %2321, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %274) #9
  %2324 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2325 unwind label %2375

2325:                                             ; preds = %2322
  %2326 = load ptr, ptr %2324, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %274, ptr noundef nonnull align 8 dereferenceable(30) %2326, i32 noundef 353)
          to label %2327 unwind label %2375

2327:                                             ; preds = %2325
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2323, ptr noundef nonnull align 8 dereferenceable(30) %274, ptr noundef @.str.95)
          to label %2328 unwind label %2375

2328:                                             ; preds = %2327
  call void @llvm.lifetime.end.p0(i64 32, ptr %274) #9
  invoke void @__cxa_end_catch()
          to label %2329 unwind label %2379

2329:                                             ; preds = %2328
  br label %2330

2330:                                             ; preds = %2370, %2329
  br label %2331

2331:                                             ; preds = %2330
  br label %2332

2332:                                             ; preds = %2331
  call void @llvm.lifetime.start.p0(i64 16, ptr %275) #9
  %2333 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %276) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %277) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %277) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %276, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %277)
          to label %2334 unwind label %2385

2334:                                             ; preds = %2332
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %275, ptr noundef nonnull align 8 dereferenceable(33088) %2333, ptr noundef nonnull align 8 dereferenceable(32) %276)
          to label %2335 unwind label %2389

2335:                                             ; preds = %2334
  %2336 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %258, ptr noundef nonnull align 8 dereferenceable(16) %275) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %275) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %276) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %277) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %277) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %276) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %275) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %278) #9
  %2337 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %2338 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %280) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %281) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %281) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %280, ptr noundef @.str.96, ptr noundef nonnull align 1 dereferenceable(1) %281)
          to label %2339 unwind label %2394

2339:                                             ; preds = %2335
  call void @llvm.lifetime.start.p0(i64 16, ptr %284) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %284, ptr noundef nonnull align 8 dereferenceable(16) %258) #9
  %2340 = getelementptr inbounds %"class.std::initializer_list.94", ptr %283, i32 0, i32 0
  store ptr %284, ptr %2340, align 8, !tbaa !13
  %2341 = getelementptr inbounds %"class.std::initializer_list.94", ptr %283, i32 0, i32 1
  store i64 1, ptr %2341, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %285) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %285) #9
  %2342 = getelementptr inbounds { ptr, i64 }, ptr %283, i32 0, i32 0
  %2343 = load ptr, ptr %2342, align 8
  %2344 = getelementptr inbounds { ptr, i64 }, ptr %283, i32 0, i32 1
  %2345 = load i64, ptr %2344, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %282, ptr %2343, i64 %2345, ptr noundef nonnull align 1 dereferenceable(1) %285)
          to label %2346 unwind label %2398

2346:                                             ; preds = %2339
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %279, ptr noundef nonnull align 8 dereferenceable(33088) %2338, ptr noundef nonnull align 8 dereferenceable(32) %280, ptr noundef %282)
          to label %2347 unwind label %2402

2347:                                             ; preds = %2346
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %286, ptr noundef nonnull align 8 dereferenceable(16) %258) #9
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.91") align 8 %278, ptr noundef %2337, ptr noundef %279, ptr noundef %286)
          to label %2348 unwind label %2406

2348:                                             ; preds = %2347
  %2349 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %278) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %278) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %286) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %279) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %282) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %285) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %285) #9
  %2350 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %284, i32 0, i32 0
  %2351 = getelementptr inbounds %"class.std::shared_ptr", ptr %2350, i64 1
  br label %2352

2352:                                             ; preds = %2352, %2348
  %2353 = phi ptr [ %2351, %2348 ], [ %2354, %2352 ]
  %2354 = getelementptr inbounds %"class.std::shared_ptr", ptr %2353, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2354) #9
  %2355 = icmp eq ptr %2354, %2350
  br i1 %2355, label %2356, label %2352

2356:                                             ; preds = %2352
  call void @llvm.lifetime.end.p0(i64 16, ptr %284) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %280) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %281) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %281) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %280) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %278) #9
  br label %2357

2357:                                             ; preds = %2356
  %2358 = call noundef zeroext i1 @_ZSteqISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr null) #9
  %2359 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %2358)
          to label %2360 unwind label %2420

2360:                                             ; preds = %2357
  br i1 %2359, label %2649, label %2361

2361:                                             ; preds = %2360
  %2362 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2363 unwind label %2420

2363:                                             ; preds = %2361
  %2364 = load ptr, ptr %2362, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %287) #9
  %2365 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2366 unwind label %2424

2366:                                             ; preds = %2363
  %2367 = load ptr, ptr %2365, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %287, ptr noundef nonnull align 8 dereferenceable(30) %2367, i32 noundef 359)
          to label %2368 unwind label %2424

2368:                                             ; preds = %2366
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2364, ptr noundef nonnull align 8 dereferenceable(30) %287, ptr noundef @.str.81)
          to label %2369 unwind label %2424

2369:                                             ; preds = %2368
  call void @llvm.lifetime.end.p0(i64 32, ptr %287) #9
  br label %2649

2370:                                             ; preds = %2244, %2235
  br label %2330

2371:                                             ; preds = %2318
  %2372 = landingpad { ptr, i32 }
          cleanup
  %2373 = extractvalue { ptr, i32 } %2372, 0
  store ptr %2373, ptr %4, align 8
  %2374 = extractvalue { ptr, i32 } %2372, 1
  store i32 %2374, ptr %5, align 4
  br label %2383

2375:                                             ; preds = %2327, %2325, %2322
  %2376 = landingpad { ptr, i32 }
          cleanup
  %2377 = extractvalue { ptr, i32 } %2376, 0
  store ptr %2377, ptr %4, align 8
  %2378 = extractvalue { ptr, i32 } %2376, 1
  store i32 %2378, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %274) #9
  br label %2383

2379:                                             ; preds = %2438, %2328
  %2380 = landingpad { ptr, i32 }
          cleanup
  %2381 = extractvalue { ptr, i32 } %2380, 0
  store ptr %2381, ptr %4, align 8
  %2382 = extractvalue { ptr, i32 } %2380, 1
  store i32 %2382, ptr %5, align 4
  br label %3142

2383:                                             ; preds = %2375, %2371
  invoke void @__cxa_end_catch()
          to label %2384 unwind label %3156

2384:                                             ; preds = %2383
  br label %3142

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

2389:                                             ; preds = %2334
  %2390 = landingpad { ptr, i32 }
          cleanup
  %2391 = extractvalue { ptr, i32 } %2390, 0
  store ptr %2391, ptr %4, align 8
  %2392 = extractvalue { ptr, i32 } %2390, 1
  store i32 %2392, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %276) #9
  br label %2393

2393:                                             ; preds = %2389, %2385
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %277) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %277) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %276) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %275) #9
  br label %3142

2394:                                             ; preds = %2335
  %2395 = landingpad { ptr, i32 }
          cleanup
  %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
  br label %2419

2398:                                             ; preds = %2339
  %2399 = landingpad { ptr, i32 }
          cleanup
  %2400 = extractvalue { ptr, i32 } %2399, 0
  store ptr %2400, ptr %4, align 8
  %2401 = extractvalue { ptr, i32 } %2399, 1
  store i32 %2401, ptr %5, align 4
  br label %2411

2402:                                             ; preds = %2346
  %2403 = landingpad { ptr, i32 }
          cleanup
  %2404 = extractvalue { ptr, i32 } %2403, 0
  store ptr %2404, ptr %4, align 8
  %2405 = extractvalue { ptr, i32 } %2403, 1
  store i32 %2405, ptr %5, align 4
  br label %2410

2406:                                             ; preds = %2347
  %2407 = landingpad { ptr, i32 }
          cleanup
  %2408 = extractvalue { ptr, i32 } %2407, 0
  store ptr %2408, ptr %4, align 8
  %2409 = extractvalue { ptr, i32 } %2407, 1
  store i32 %2409, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %286) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %279) #9
  br label %2410

2410:                                             ; preds = %2406, %2402
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %282) #9
  br label %2411

2411:                                             ; preds = %2410, %2398
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %285) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %285) #9
  %2412 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %284, i32 0, i32 0
  %2413 = getelementptr inbounds %"class.std::shared_ptr", ptr %2412, i64 1
  br label %2414

2414:                                             ; preds = %2414, %2411
  %2415 = phi ptr [ %2413, %2411 ], [ %2416, %2414 ]
  %2416 = getelementptr inbounds %"class.std::shared_ptr", ptr %2415, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2416) #9
  %2417 = icmp eq ptr %2416, %2412
  br i1 %2417, label %2418, label %2414

2418:                                             ; preds = %2414
  call void @llvm.lifetime.end.p0(i64 16, ptr %284) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %280) #9
  br label %2419

2419:                                             ; preds = %2418, %2394
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %281) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %281) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %280) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %278) #9
  br label %3142

2420:                                             ; preds = %2361, %2357
  %2421 = landingpad { ptr, i32 }
          catch ptr null
  %2422 = extractvalue { ptr, i32 } %2421, 0
  store ptr %2422, ptr %4, align 8
  %2423 = extractvalue { ptr, i32 } %2421, 1
  store i32 %2423, ptr %5, align 4
  br label %2428

2424:                                             ; preds = %2368, %2366, %2363
  %2425 = landingpad { ptr, i32 }
          catch ptr null
  %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
  call void @llvm.lifetime.end.p0(i64 32, ptr %287) #9
  br label %2428

2428:                                             ; preds = %2424, %2420
  %2429 = load ptr, ptr %4, align 8
  %2430 = call ptr @__cxa_begin_catch(ptr %2429) #9
  %2431 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2432 unwind label %2650

2432:                                             ; preds = %2428
  %2433 = load ptr, ptr %2431, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %288) #9
  %2434 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2435 unwind label %2654

2435:                                             ; preds = %2432
  %2436 = load ptr, ptr %2434, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %288, ptr noundef nonnull align 8 dereferenceable(30) %2436, i32 noundef 359)
          to label %2437 unwind label %2654

2437:                                             ; preds = %2435
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2433, ptr noundef nonnull align 8 dereferenceable(30) %288, ptr noundef @.str.82)
          to label %2438 unwind label %2654

2438:                                             ; preds = %2437
  call void @llvm.lifetime.end.p0(i64 32, ptr %288) #9
  invoke void @__cxa_end_catch()
          to label %2439 unwind label %2379

2439:                                             ; preds = %2438
  br label %2440

2440:                                             ; preds = %2649, %2439
  br label %2441

2441:                                             ; preds = %2440
  br label %2442

2442:                                             ; preds = %2441
  call void @llvm.lifetime.start.p0(i64 16, ptr %289) #9
  %2443 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %290) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %291) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %291) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %290, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %291)
          to label %2444 unwind label %2660

2444:                                             ; preds = %2442
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %289, ptr noundef nonnull align 8 dereferenceable(33088) %2443, ptr noundef nonnull align 8 dereferenceable(32) %290)
          to label %2445 unwind label %2664

2445:                                             ; preds = %2444
  %2446 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %258, ptr noundef nonnull align 8 dereferenceable(16) %289) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %289) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %290) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %291) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %291) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %290) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %289) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %292) #9
  %2447 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %293) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %294) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %294) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %293, ptr noundef @.str.91, ptr noundef nonnull align 1 dereferenceable(1) %294)
          to label %2448 unwind label %2669

2448:                                             ; preds = %2445
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %292, ptr noundef nonnull align 8 dereferenceable(33088) %2447, ptr noundef nonnull align 8 dereferenceable(32) %293)
          to label %2449 unwind label %2673

2449:                                             ; preds = %2448
  %2450 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %261, ptr noundef nonnull align 8 dereferenceable(16) %292) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %292) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %293) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %294) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %294) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %293) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %292) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %295) #9
  %2451 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %296) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %297) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %297) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %296, ptr noundef @.str.97, ptr noundef nonnull align 1 dereferenceable(1) %297)
          to label %2452 unwind label %2678

2452:                                             ; preds = %2449
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %295, ptr noundef nonnull align 8 dereferenceable(33088) %2451, ptr noundef nonnull align 8 dereferenceable(32) %296)
          to label %2453 unwind label %2682

2453:                                             ; preds = %2452
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %296) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %297) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %297) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %296) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %298) #9
  %2454 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %2455 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %300) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %301) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %301) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %300, ptr noundef @.str.98, ptr noundef nonnull align 1 dereferenceable(1) %301)
          to label %2456 unwind label %2687

2456:                                             ; preds = %2453
  call void @llvm.lifetime.start.p0(i64 32, ptr %304) #9
  store i1 true, ptr %324, align 1
  store ptr %304, ptr %305, align 8
  %2457 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %306) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %307) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %307) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %306, ptr noundef @.str.99, ptr noundef nonnull align 1 dereferenceable(1) %307)
          to label %2458 unwind label %2691

2458:                                             ; preds = %2456
  call void @llvm.lifetime.start.p0(i64 32, ptr %310) #9
  store i1 true, ptr %322, align 1
  store ptr %310, ptr %311, align 8
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %310, ptr noundef nonnull align 8 dereferenceable(16) %258) #9
  %2459 = getelementptr inbounds %"class.std::shared_ptr", ptr %310, i64 1
  store ptr %2459, ptr %311, align 8
  %2460 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %312) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %313) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %313) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %312, ptr noundef @.str.100, ptr noundef nonnull align 1 dereferenceable(1) %313)
          to label %2461 unwind label %2695

2461:                                             ; preds = %2458
  call void @llvm.lifetime.start.p0(i64 32, ptr %316) #9
  store i1 true, ptr %320, align 1
  store ptr %316, ptr %317, align 8
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %316, ptr noundef nonnull align 8 dereferenceable(16) %258) #9
  %2462 = getelementptr inbounds %"class.std::shared_ptr", ptr %316, i64 1
  store ptr %2462, ptr %317, align 8
  %2463 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %318) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %319) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %319) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %318, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %319)
          to label %2464 unwind label %2699

2464:                                             ; preds = %2461
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %2462, ptr noundef nonnull align 8 dereferenceable(33088) %2463, ptr noundef nonnull align 8 dereferenceable(32) %318)
          to label %2465 unwind label %2703

2465:                                             ; preds = %2464
  store i1 false, ptr %320, align 1
  %2466 = getelementptr inbounds %"class.std::initializer_list.94", ptr %315, i32 0, i32 0
  store ptr %316, ptr %2466, align 8, !tbaa !13
  %2467 = getelementptr inbounds %"class.std::initializer_list.94", ptr %315, i32 0, i32 1
  store i64 2, ptr %2467, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %321) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %321) #9
  %2468 = getelementptr inbounds { ptr, i64 }, ptr %315, i32 0, i32 0
  %2469 = load ptr, ptr %2468, align 8
  %2470 = getelementptr inbounds { ptr, i64 }, ptr %315, i32 0, i32 1
  %2471 = load i64, ptr %2470, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %314, ptr %2469, i64 %2471, ptr noundef nonnull align 1 dereferenceable(1) %321)
          to label %2472 unwind label %2707

2472:                                             ; preds = %2465
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %2459, ptr noundef nonnull align 8 dereferenceable(33088) %2460, ptr noundef nonnull align 8 dereferenceable(32) %312, ptr noundef %314)
          to label %2473 unwind label %2711

2473:                                             ; preds = %2472
  store i1 false, ptr %322, align 1
  %2474 = getelementptr inbounds %"class.std::initializer_list.94", ptr %309, i32 0, i32 0
  store ptr %310, ptr %2474, align 8, !tbaa !13
  %2475 = getelementptr inbounds %"class.std::initializer_list.94", ptr %309, i32 0, i32 1
  store i64 2, ptr %2475, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %323) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %323) #9
  %2476 = getelementptr inbounds { ptr, i64 }, ptr %309, i32 0, i32 0
  %2477 = load ptr, ptr %2476, align 8
  %2478 = getelementptr inbounds { ptr, i64 }, ptr %309, i32 0, i32 1
  %2479 = load i64, ptr %2478, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %308, ptr %2477, i64 %2479, ptr noundef nonnull align 1 dereferenceable(1) %323)
          to label %2480 unwind label %2715

2480:                                             ; preds = %2473
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %304, ptr noundef nonnull align 8 dereferenceable(33088) %2457, ptr noundef nonnull align 8 dereferenceable(32) %306, ptr noundef %308)
          to label %2481 unwind label %2719

2481:                                             ; preds = %2480
  %2482 = getelementptr inbounds %"class.std::shared_ptr", ptr %304, i64 1
  store ptr %2482, ptr %305, align 8
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %2482, ptr noundef nonnull align 8 dereferenceable(16) %295) #9
  store i1 false, ptr %324, align 1
  %2483 = getelementptr inbounds %"class.std::initializer_list.94", ptr %303, i32 0, i32 0
  store ptr %304, ptr %2483, align 8, !tbaa !13
  %2484 = getelementptr inbounds %"class.std::initializer_list.94", ptr %303, i32 0, i32 1
  store i64 2, ptr %2484, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %325) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %325) #9
  %2485 = getelementptr inbounds { ptr, i64 }, ptr %303, i32 0, i32 0
  %2486 = load ptr, ptr %2485, align 8
  %2487 = getelementptr inbounds { ptr, i64 }, ptr %303, i32 0, i32 1
  %2488 = load i64, ptr %2487, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %302, ptr %2486, i64 %2488, ptr noundef nonnull align 1 dereferenceable(1) %325)
          to label %2489 unwind label %2723

2489:                                             ; preds = %2481
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %299, ptr noundef nonnull align 8 dereferenceable(33088) %2455, ptr noundef nonnull align 8 dereferenceable(32) %300, ptr noundef %302)
          to label %2490 unwind label %2727

2490:                                             ; preds = %2489
  %2491 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %327) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %328) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %328) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %327, ptr noundef @.str.98, ptr noundef nonnull align 1 dereferenceable(1) %328)
          to label %2492 unwind label %2731

2492:                                             ; preds = %2490
  call void @llvm.lifetime.start.p0(i64 32, ptr %331) #9
  store i1 true, ptr %343, align 1
  store ptr %331, ptr %332, align 8
  %2493 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %333) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %334) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %334) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %333, ptr noundef @.str.99, ptr noundef nonnull align 1 dereferenceable(1) %334)
          to label %2494 unwind label %2735

2494:                                             ; preds = %2492
  call void @llvm.lifetime.start.p0(i64 32, ptr %337) #9
  store i1 true, ptr %341, align 1
  store ptr %337, ptr %338, align 8
  %2495 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %339) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %340) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %340) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %339, ptr noundef @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %340)
          to label %2496 unwind label %2739

2496:                                             ; preds = %2494
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %337, ptr noundef nonnull align 8 dereferenceable(33088) %2495, ptr noundef nonnull align 8 dereferenceable(32) %339)
          to label %2497 unwind label %2743

2497:                                             ; preds = %2496
  %2498 = getelementptr inbounds %"class.std::shared_ptr", ptr %337, i64 1
  store ptr %2498, ptr %338, align 8
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %2498, ptr noundef nonnull align 8 dereferenceable(16) %295) #9
  store i1 false, ptr %341, align 1
  %2499 = getelementptr inbounds %"class.std::initializer_list.94", ptr %336, i32 0, i32 0
  store ptr %337, ptr %2499, align 8, !tbaa !13
  %2500 = getelementptr inbounds %"class.std::initializer_list.94", ptr %336, i32 0, i32 1
  store i64 2, ptr %2500, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %342) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %342) #9
  %2501 = getelementptr inbounds { ptr, i64 }, ptr %336, i32 0, i32 0
  %2502 = load ptr, ptr %2501, align 8
  %2503 = getelementptr inbounds { ptr, i64 }, ptr %336, i32 0, i32 1
  %2504 = load i64, ptr %2503, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %335, ptr %2502, i64 %2504, ptr noundef nonnull align 1 dereferenceable(1) %342)
          to label %2505 unwind label %2747

2505:                                             ; preds = %2497
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %331, ptr noundef nonnull align 8 dereferenceable(33088) %2493, ptr noundef nonnull align 8 dereferenceable(32) %333, ptr noundef %335)
          to label %2506 unwind label %2751

2506:                                             ; preds = %2505
  %2507 = getelementptr inbounds %"class.std::shared_ptr", ptr %331, i64 1
  store ptr %2507, ptr %332, align 8
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %2507, ptr noundef nonnull align 8 dereferenceable(16) %261) #9
  store i1 false, ptr %343, align 1
  %2508 = getelementptr inbounds %"class.std::initializer_list.94", ptr %330, i32 0, i32 0
  store ptr %331, ptr %2508, align 8, !tbaa !13
  %2509 = getelementptr inbounds %"class.std::initializer_list.94", ptr %330, i32 0, i32 1
  store i64 2, ptr %2509, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %344) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %344) #9
  %2510 = getelementptr inbounds { ptr, i64 }, ptr %330, i32 0, i32 0
  %2511 = load ptr, ptr %2510, align 8
  %2512 = getelementptr inbounds { ptr, i64 }, ptr %330, i32 0, i32 1
  %2513 = load i64, ptr %2512, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %329, ptr %2511, i64 %2513, ptr noundef nonnull align 1 dereferenceable(1) %344)
          to label %2514 unwind label %2755

2514:                                             ; preds = %2506
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %326, ptr noundef nonnull align 8 dereferenceable(33088) %2491, ptr noundef nonnull align 8 dereferenceable(32) %327, ptr noundef %329)
          to label %2515 unwind label %2759

2515:                                             ; preds = %2514
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.91") align 8 %298, ptr noundef %2454, ptr noundef %299, ptr noundef %326)
          to label %2516 unwind label %2763

2516:                                             ; preds = %2515
  %2517 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %298) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %298) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %326) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %329) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %344) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %344) #9
  %2518 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %331, i32 0, i32 0
  %2519 = getelementptr inbounds %"class.std::shared_ptr", ptr %2518, i64 2
  br label %2520

2520:                                             ; preds = %2520, %2516
  %2521 = phi ptr [ %2519, %2516 ], [ %2522, %2520 ]
  %2522 = getelementptr inbounds %"class.std::shared_ptr", ptr %2521, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2522) #9
  %2523 = icmp eq ptr %2522, %2518
  br i1 %2523, label %2524, label %2520

2524:                                             ; preds = %2520
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %335) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %342) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %342) #9
  %2525 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %337, i32 0, i32 0
  %2526 = getelementptr inbounds %"class.std::shared_ptr", ptr %2525, i64 2
  br label %2527

2527:                                             ; preds = %2527, %2524
  %2528 = phi ptr [ %2526, %2524 ], [ %2529, %2527 ]
  %2529 = getelementptr inbounds %"class.std::shared_ptr", ptr %2528, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2529) #9
  %2530 = icmp eq ptr %2529, %2525
  br i1 %2530, label %2531, label %2527

2531:                                             ; preds = %2527
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %339) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %340) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %340) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %339) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %337) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %333) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %334) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %334) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %333) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %331) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %327) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %328) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %328) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %327) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %299) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %302) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %325) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %325) #9
  %2532 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %304, i32 0, i32 0
  %2533 = getelementptr inbounds %"class.std::shared_ptr", ptr %2532, i64 2
  br label %2534

2534:                                             ; preds = %2534, %2531
  %2535 = phi ptr [ %2533, %2531 ], [ %2536, %2534 ]
  %2536 = getelementptr inbounds %"class.std::shared_ptr", ptr %2535, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2536) #9
  %2537 = icmp eq ptr %2536, %2532
  br i1 %2537, label %2538, label %2534

2538:                                             ; preds = %2534
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %308) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %323) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %323) #9
  %2539 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %310, i32 0, i32 0
  %2540 = getelementptr inbounds %"class.std::shared_ptr", ptr %2539, i64 2
  br label %2541

2541:                                             ; preds = %2541, %2538
  %2542 = phi ptr [ %2540, %2538 ], [ %2543, %2541 ]
  %2543 = getelementptr inbounds %"class.std::shared_ptr", ptr %2542, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2543) #9
  %2544 = icmp eq ptr %2543, %2539
  br i1 %2544, label %2545, label %2541

2545:                                             ; preds = %2541
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %314) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %321) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %321) #9
  %2546 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %316, i32 0, i32 0
  %2547 = getelementptr inbounds %"class.std::shared_ptr", ptr %2546, i64 2
  br label %2548

2548:                                             ; preds = %2548, %2545
  %2549 = phi ptr [ %2547, %2545 ], [ %2550, %2548 ]
  %2550 = getelementptr inbounds %"class.std::shared_ptr", ptr %2549, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2550) #9
  %2551 = icmp eq ptr %2550, %2546
  br i1 %2551, label %2552, label %2548

2552:                                             ; preds = %2548
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %318) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %319) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %319) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %318) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %316) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %312) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %313) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %313) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %312) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %310) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %306) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %307) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %307) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %306) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %304) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %300) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %301) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %301) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %300) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %298) #9
  br label %2553

2553:                                             ; preds = %2552
  %2554 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %345, ptr noundef nonnull align 8 dereferenceable(24) %2554)
          to label %2555 unwind label %2871

2555:                                             ; preds = %2553
  call void @llvm.lifetime.start.p0(i64 96, ptr %348) #9
  store i1 true, ptr %388, align 1
  store ptr %348, ptr %349, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %350) #9
  %2556 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %351) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %352) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %352) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %351, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %352)
          to label %2557 unwind label %2875

2557:                                             ; preds = %2555
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %350, ptr noundef nonnull align 8 dereferenceable(33088) %2556, ptr noundef nonnull align 8 dereferenceable(32) %351)
          to label %2558 unwind label %2879

2558:                                             ; preds = %2557
  call void @llvm.lifetime.start.p0(i64 16, ptr %353) #9
  %2559 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %354) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %355) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %355) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %354, ptr noundef @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %355)
          to label %2560 unwind label %2883

2560:                                             ; preds = %2558
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %353, ptr noundef nonnull align 8 dereferenceable(33088) %2559, ptr noundef nonnull align 8 dereferenceable(32) %354)
          to label %2561 unwind label %2887

2561:                                             ; preds = %2560
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %348, ptr noundef nonnull align 8 dereferenceable(16) %350, ptr noundef nonnull align 8 dereferenceable(16) %353)
          to label %2562 unwind label %2891

2562:                                             ; preds = %2561
  %2563 = getelementptr inbounds %"struct.std::pair", ptr %348, i64 1
  store ptr %2563, ptr %349, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %356) #9
  %2564 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %357) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %358) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %358) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %357, ptr noundef @.str.97, ptr noundef nonnull align 1 dereferenceable(1) %358)
          to label %2565 unwind label %2895

2565:                                             ; preds = %2562
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %356, ptr noundef nonnull align 8 dereferenceable(33088) %2564, ptr noundef nonnull align 8 dereferenceable(32) %357)
          to label %2566 unwind label %2899

2566:                                             ; preds = %2565
  call void @llvm.lifetime.start.p0(i64 16, ptr %359) #9
  %2567 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %360) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %361) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %361) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %360, ptr noundef @.str.100, ptr noundef nonnull align 1 dereferenceable(1) %361)
          to label %2568 unwind label %2903

2568:                                             ; preds = %2566
  call void @llvm.lifetime.start.p0(i64 32, ptr %364) #9
  store i1 true, ptr %370, align 1
  store ptr %364, ptr %365, align 8
  %2569 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %366) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %367) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %367) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %366, ptr noundef @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %367)
          to label %2570 unwind label %2907

2570:                                             ; preds = %2568
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %364, ptr noundef nonnull align 8 dereferenceable(33088) %2569, ptr noundef nonnull align 8 dereferenceable(32) %366)
          to label %2571 unwind label %2911

2571:                                             ; preds = %2570
  %2572 = getelementptr inbounds %"class.std::shared_ptr", ptr %364, i64 1
  store ptr %2572, ptr %365, align 8
  %2573 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %368) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %369) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %369) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %368, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %369)
          to label %2574 unwind label %2915

2574:                                             ; preds = %2571
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %2572, ptr noundef nonnull align 8 dereferenceable(33088) %2573, ptr noundef nonnull align 8 dereferenceable(32) %368)
          to label %2575 unwind label %2919

2575:                                             ; preds = %2574
  store i1 false, ptr %370, align 1
  %2576 = getelementptr inbounds %"class.std::initializer_list.94", ptr %363, i32 0, i32 0
  store ptr %364, ptr %2576, align 8, !tbaa !13
  %2577 = getelementptr inbounds %"class.std::initializer_list.94", ptr %363, i32 0, i32 1
  store i64 2, ptr %2577, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %371) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %371) #9
  %2578 = getelementptr inbounds { ptr, i64 }, ptr %363, i32 0, i32 0
  %2579 = load ptr, ptr %2578, align 8
  %2580 = getelementptr inbounds { ptr, i64 }, ptr %363, i32 0, i32 1
  %2581 = load i64, ptr %2580, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %362, ptr %2579, i64 %2581, ptr noundef nonnull align 1 dereferenceable(1) %371)
          to label %2582 unwind label %2923

2582:                                             ; preds = %2575
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %359, ptr noundef nonnull align 8 dereferenceable(33088) %2567, ptr noundef nonnull align 8 dereferenceable(32) %360, ptr noundef %362)
          to label %2583 unwind label %2927

2583:                                             ; preds = %2582
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %2563, ptr noundef nonnull align 8 dereferenceable(16) %356, ptr noundef nonnull align 8 dereferenceable(16) %359)
          to label %2584 unwind label %2931

2584:                                             ; preds = %2583
  %2585 = getelementptr inbounds %"struct.std::pair", ptr %348, i64 2
  store ptr %2585, ptr %349, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %372) #9
  %2586 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %373) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %374) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %374) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %373, ptr noundef @.str.91, ptr noundef nonnull align 1 dereferenceable(1) %374)
          to label %2587 unwind label %2935

2587:                                             ; preds = %2584
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %372, ptr noundef nonnull align 8 dereferenceable(33088) %2586, ptr noundef nonnull align 8 dereferenceable(32) %373)
          to label %2588 unwind label %2939

2588:                                             ; preds = %2587
  call void @llvm.lifetime.start.p0(i64 16, ptr %375) #9
  %2589 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %376) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %377) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %377) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %376, ptr noundef @.str.100, ptr noundef nonnull align 1 dereferenceable(1) %377)
          to label %2590 unwind label %2943

2590:                                             ; preds = %2588
  call void @llvm.lifetime.start.p0(i64 32, ptr %380) #9
  store i1 true, ptr %386, align 1
  store ptr %380, ptr %381, align 8
  %2591 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %382) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %383) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %383) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %382, ptr noundef @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %383)
          to label %2592 unwind label %2947

2592:                                             ; preds = %2590
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %380, ptr noundef nonnull align 8 dereferenceable(33088) %2591, ptr noundef nonnull align 8 dereferenceable(32) %382)
          to label %2593 unwind label %2951

2593:                                             ; preds = %2592
  %2594 = getelementptr inbounds %"class.std::shared_ptr", ptr %380, i64 1
  store ptr %2594, ptr %381, align 8
  %2595 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %384) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %385) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %385) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %384, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %385)
          to label %2596 unwind label %2955

2596:                                             ; preds = %2593
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %2594, ptr noundef nonnull align 8 dereferenceable(33088) %2595, ptr noundef nonnull align 8 dereferenceable(32) %384)
          to label %2597 unwind label %2959

2597:                                             ; preds = %2596
  store i1 false, ptr %386, align 1
  %2598 = getelementptr inbounds %"class.std::initializer_list.94", ptr %379, i32 0, i32 0
  store ptr %380, ptr %2598, align 8, !tbaa !13
  %2599 = getelementptr inbounds %"class.std::initializer_list.94", ptr %379, i32 0, i32 1
  store i64 2, ptr %2599, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %387) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %387) #9
  %2600 = getelementptr inbounds { ptr, i64 }, ptr %379, i32 0, i32 0
  %2601 = load ptr, ptr %2600, align 8
  %2602 = getelementptr inbounds { ptr, i64 }, ptr %379, i32 0, i32 1
  %2603 = load i64, ptr %2602, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %378, ptr %2601, i64 %2603, ptr noundef nonnull align 1 dereferenceable(1) %387)
          to label %2604 unwind label %2963

2604:                                             ; preds = %2597
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %375, ptr noundef nonnull align 8 dereferenceable(33088) %2589, ptr noundef nonnull align 8 dereferenceable(32) %376, ptr noundef %378)
          to label %2605 unwind label %2967

2605:                                             ; preds = %2604
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %2585, ptr noundef nonnull align 8 dereferenceable(16) %372, ptr noundef nonnull align 8 dereferenceable(16) %375)
          to label %2606 unwind label %2971

2606:                                             ; preds = %2605
  store i1 false, ptr %388, align 1
  %2607 = getelementptr inbounds %"class.std::initializer_list", ptr %347, i32 0, i32 0
  store ptr %348, ptr %2607, align 8, !tbaa !9
  %2608 = getelementptr inbounds %"class.std::initializer_list", ptr %347, i32 0, i32 1
  store i64 3, ptr %2608, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %389) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %389) #9
  %2609 = getelementptr inbounds { ptr, i64 }, ptr %347, i32 0, i32 0
  %2610 = load ptr, ptr %2609, align 8
  %2611 = getelementptr inbounds { ptr, i64 }, ptr %347, i32 0, i32 1
  %2612 = load i64, ptr %2611, align 8
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %346, ptr %2610, i64 %2612, ptr noundef nonnull align 1 dereferenceable(1) %389)
          to label %2613 unwind label %2975

2613:                                             ; preds = %2606
  %2614 = invoke noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef %345, ptr noundef %346)
          to label %2615 unwind label %2979

2615:                                             ; preds = %2613
  %2616 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %2614)
          to label %2617 unwind label %2979

2617:                                             ; preds = %2615
  %2618 = xor i1 %2616, true
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %346) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %389) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %389) #9
  %2619 = getelementptr inbounds [3 x %"struct.std::pair"], ptr %348, i32 0, i32 0
  %2620 = getelementptr inbounds %"struct.std::pair", ptr %2619, i64 3
  br label %2621

2621:                                             ; preds = %2621, %2617
  %2622 = phi ptr [ %2620, %2617 ], [ %2623, %2621 ]
  %2623 = getelementptr inbounds %"struct.std::pair", ptr %2622, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2623) #9
  %2624 = icmp eq ptr %2623, %2619
  br i1 %2624, label %2625, label %2621

2625:                                             ; preds = %2621
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %375) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %378) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %387) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %387) #9
  %2626 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %380, i32 0, i32 0
  %2627 = getelementptr inbounds %"class.std::shared_ptr", ptr %2626, i64 2
  br label %2628

2628:                                             ; preds = %2628, %2625
  %2629 = phi ptr [ %2627, %2625 ], [ %2630, %2628 ]
  %2630 = getelementptr inbounds %"class.std::shared_ptr", ptr %2629, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2630) #9
  %2631 = icmp eq ptr %2630, %2626
  br i1 %2631, label %2632, label %2628

2632:                                             ; preds = %2628
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %384) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %385) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %385) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %384) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %382) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %383) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %383) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %382) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %380) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %376) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %377) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %377) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %376) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %375) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %372) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %373) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %374) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %374) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %373) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %372) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %359) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %362) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %371) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %371) #9
  %2633 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %364, i32 0, i32 0
  %2634 = getelementptr inbounds %"class.std::shared_ptr", ptr %2633, i64 2
  br label %2635

2635:                                             ; preds = %2635, %2632
  %2636 = phi ptr [ %2634, %2632 ], [ %2637, %2635 ]
  %2637 = getelementptr inbounds %"class.std::shared_ptr", ptr %2636, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2637) #9
  %2638 = icmp eq ptr %2637, %2633
  br i1 %2638, label %2639, label %2635

2639:                                             ; preds = %2635
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %368) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %369) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %369) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %368) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %366) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %367) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %367) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %366) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %364) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %360) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %361) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %361) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %360) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %359) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %356) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %357) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %358) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %358) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %357) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %356) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %353) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %354) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %355) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %355) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %354) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %353) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %350) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %351) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %352) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %352) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %351) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %350) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr %348) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %345) #9
  br i1 %2618, label %2640, label %3091

2640:                                             ; preds = %2639
  %2641 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2642 unwind label %2871

2642:                                             ; preds = %2640
  %2643 = load ptr, ptr %2641, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %390) #9
  %2644 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2645 unwind label %3060

2645:                                             ; preds = %2642
  %2646 = load ptr, ptr %2644, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %390, ptr noundef nonnull align 8 dereferenceable(30) %2646, i32 noundef 410)
          to label %2647 unwind label %3060

2647:                                             ; preds = %2645
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2643, ptr noundef nonnull align 8 dereferenceable(30) %390, ptr noundef @.str.101)
          to label %2648 unwind label %3060

2648:                                             ; preds = %2647
  call void @llvm.lifetime.end.p0(i64 32, ptr %390) #9
  br label %3091

2649:                                             ; preds = %2369, %2360
  br label %2440

2650:                                             ; preds = %2428
  %2651 = landingpad { ptr, i32 }
          cleanup
  %2652 = extractvalue { ptr, i32 } %2651, 0
  store ptr %2652, ptr %4, align 8
  %2653 = extractvalue { ptr, i32 } %2651, 1
  store i32 %2653, ptr %5, align 4
  br label %2658

2654:                                             ; preds = %2437, %2435, %2432
  %2655 = landingpad { ptr, i32 }
          cleanup
  %2656 = extractvalue { ptr, i32 } %2655, 0
  store ptr %2656, ptr %4, align 8
  %2657 = extractvalue { ptr, i32 } %2655, 1
  store i32 %2657, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %288) #9
  br label %2658

2658:                                             ; preds = %2654, %2650
  invoke void @__cxa_end_catch()
          to label %2659 unwind label %3156

2659:                                             ; preds = %2658
  br label %3142

2660:                                             ; preds = %2442
  %2661 = landingpad { ptr, i32 }
          cleanup
  %2662 = extractvalue { ptr, i32 } %2661, 0
  store ptr %2662, ptr %4, align 8
  %2663 = extractvalue { ptr, i32 } %2661, 1
  store i32 %2663, ptr %5, align 4
  br label %2668

2664:                                             ; preds = %2444
  %2665 = landingpad { ptr, i32 }
          cleanup
  %2666 = extractvalue { ptr, i32 } %2665, 0
  store ptr %2666, ptr %4, align 8
  %2667 = extractvalue { ptr, i32 } %2665, 1
  store i32 %2667, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %290) #9
  br label %2668

2668:                                             ; preds = %2664, %2660
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %291) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %291) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %290) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %289) #9
  br label %3142

2669:                                             ; preds = %2445
  %2670 = landingpad { ptr, i32 }
          cleanup
  %2671 = extractvalue { ptr, i32 } %2670, 0
  store ptr %2671, ptr %4, align 8
  %2672 = extractvalue { ptr, i32 } %2670, 1
  store i32 %2672, ptr %5, align 4
  br label %2677

2673:                                             ; preds = %2448
  %2674 = landingpad { ptr, i32 }
          cleanup
  %2675 = extractvalue { ptr, i32 } %2674, 0
  store ptr %2675, ptr %4, align 8
  %2676 = extractvalue { ptr, i32 } %2674, 1
  store i32 %2676, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %293) #9
  br label %2677

2677:                                             ; preds = %2673, %2669
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %294) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %294) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %293) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %292) #9
  br label %3142

2678:                                             ; preds = %2449
  %2679 = landingpad { ptr, i32 }
          cleanup
  %2680 = extractvalue { ptr, i32 } %2679, 0
  store ptr %2680, ptr %4, align 8
  %2681 = extractvalue { ptr, i32 } %2679, 1
  store i32 %2681, ptr %5, align 4
  br label %2686

2682:                                             ; preds = %2452
  %2683 = landingpad { ptr, i32 }
          cleanup
  %2684 = extractvalue { ptr, i32 } %2683, 0
  store ptr %2684, ptr %4, align 8
  %2685 = extractvalue { ptr, i32 } %2683, 1
  store i32 %2685, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %296) #9
  br label %2686

2686:                                             ; preds = %2682, %2678
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %297) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %297) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %296) #9
  br label %3141

2687:                                             ; preds = %2453
  %2688 = landingpad { ptr, i32 }
          cleanup
  %2689 = extractvalue { ptr, i32 } %2688, 0
  store ptr %2689, ptr %4, align 8
  %2690 = extractvalue { ptr, i32 } %2688, 1
  store i32 %2690, ptr %5, align 4
  br label %2870

2691:                                             ; preds = %2456
  %2692 = landingpad { ptr, i32 }
          cleanup
  %2693 = extractvalue { ptr, i32 } %2692, 0
  store ptr %2693, ptr %4, align 8
  %2694 = extractvalue { ptr, i32 } %2692, 1
  store i32 %2694, ptr %5, align 4
  br label %2859

2695:                                             ; preds = %2458
  %2696 = landingpad { ptr, i32 }
          cleanup
  %2697 = extractvalue { ptr, i32 } %2696, 0
  store ptr %2697, ptr %4, align 8
  %2698 = extractvalue { ptr, i32 } %2696, 1
  store i32 %2698, ptr %5, align 4
  br label %2848

2699:                                             ; preds = %2461
  %2700 = landingpad { ptr, i32 }
          cleanup
  %2701 = extractvalue { ptr, i32 } %2700, 0
  store ptr %2701, ptr %4, align 8
  %2702 = extractvalue { ptr, i32 } %2700, 1
  store i32 %2702, ptr %5, align 4
  br label %2837

2703:                                             ; preds = %2464
  %2704 = landingpad { ptr, i32 }
          cleanup
  %2705 = extractvalue { ptr, i32 } %2704, 0
  store ptr %2705, ptr %4, align 8
  %2706 = extractvalue { ptr, i32 } %2704, 1
  store i32 %2706, ptr %5, align 4
  br label %2836

2707:                                             ; preds = %2465
  %2708 = landingpad { ptr, i32 }
          cleanup
  %2709 = extractvalue { ptr, i32 } %2708, 0
  store ptr %2709, ptr %4, align 8
  %2710 = extractvalue { ptr, i32 } %2708, 1
  store i32 %2710, ptr %5, align 4
  br label %2828

2711:                                             ; preds = %2472
  %2712 = landingpad { ptr, i32 }
          cleanup
  %2713 = extractvalue { ptr, i32 } %2712, 0
  store ptr %2713, ptr %4, align 8
  %2714 = extractvalue { ptr, i32 } %2712, 1
  store i32 %2714, ptr %5, align 4
  br label %2827

2715:                                             ; preds = %2473
  %2716 = landingpad { ptr, i32 }
          cleanup
  %2717 = extractvalue { ptr, i32 } %2716, 0
  store ptr %2717, ptr %4, align 8
  %2718 = extractvalue { ptr, i32 } %2716, 1
  store i32 %2718, ptr %5, align 4
  br label %2819

2719:                                             ; preds = %2480
  %2720 = landingpad { ptr, i32 }
          cleanup
  %2721 = extractvalue { ptr, i32 } %2720, 0
  store ptr %2721, ptr %4, align 8
  %2722 = extractvalue { ptr, i32 } %2720, 1
  store i32 %2722, ptr %5, align 4
  br label %2818

2723:                                             ; preds = %2481
  %2724 = landingpad { ptr, i32 }
          cleanup
  %2725 = extractvalue { ptr, i32 } %2724, 0
  store ptr %2725, ptr %4, align 8
  %2726 = extractvalue { ptr, i32 } %2724, 1
  store i32 %2726, ptr %5, align 4
  br label %2810

2727:                                             ; preds = %2489
  %2728 = landingpad { ptr, i32 }
          cleanup
  %2729 = extractvalue { ptr, i32 } %2728, 0
  store ptr %2729, ptr %4, align 8
  %2730 = extractvalue { ptr, i32 } %2728, 1
  store i32 %2730, ptr %5, align 4
  br label %2809

2731:                                             ; preds = %2490
  %2732 = landingpad { ptr, i32 }
          cleanup
  %2733 = extractvalue { ptr, i32 } %2732, 0
  store ptr %2733, ptr %4, align 8
  %2734 = extractvalue { ptr, i32 } %2732, 1
  store i32 %2734, ptr %5, align 4
  br label %2808

2735:                                             ; preds = %2492
  %2736 = landingpad { ptr, i32 }
          cleanup
  %2737 = extractvalue { ptr, i32 } %2736, 0
  store ptr %2737, ptr %4, align 8
  %2738 = extractvalue { ptr, i32 } %2736, 1
  store i32 %2738, ptr %5, align 4
  br label %2797

2739:                                             ; preds = %2494
  %2740 = landingpad { ptr, i32 }
          cleanup
  %2741 = extractvalue { ptr, i32 } %2740, 0
  store ptr %2741, ptr %4, align 8
  %2742 = extractvalue { ptr, i32 } %2740, 1
  store i32 %2742, ptr %5, align 4
  br label %2786

2743:                                             ; preds = %2496
  %2744 = landingpad { ptr, i32 }
          cleanup
  %2745 = extractvalue { ptr, i32 } %2744, 0
  store ptr %2745, ptr %4, align 8
  %2746 = extractvalue { ptr, i32 } %2744, 1
  store i32 %2746, ptr %5, align 4
  br label %2785

2747:                                             ; preds = %2497
  %2748 = landingpad { ptr, i32 }
          cleanup
  %2749 = extractvalue { ptr, i32 } %2748, 0
  store ptr %2749, ptr %4, align 8
  %2750 = extractvalue { ptr, i32 } %2748, 1
  store i32 %2750, ptr %5, align 4
  br label %2777

2751:                                             ; preds = %2505
  %2752 = landingpad { ptr, i32 }
          cleanup
  %2753 = extractvalue { ptr, i32 } %2752, 0
  store ptr %2753, ptr %4, align 8
  %2754 = extractvalue { ptr, i32 } %2752, 1
  store i32 %2754, ptr %5, align 4
  br label %2776

2755:                                             ; preds = %2506
  %2756 = landingpad { ptr, i32 }
          cleanup
  %2757 = extractvalue { ptr, i32 } %2756, 0
  store ptr %2757, ptr %4, align 8
  %2758 = extractvalue { ptr, i32 } %2756, 1
  store i32 %2758, ptr %5, align 4
  br label %2768

2759:                                             ; preds = %2514
  %2760 = landingpad { ptr, i32 }
          cleanup
  %2761 = extractvalue { ptr, i32 } %2760, 0
  store ptr %2761, ptr %4, align 8
  %2762 = extractvalue { ptr, i32 } %2760, 1
  store i32 %2762, ptr %5, align 4
  br label %2767

2763:                                             ; preds = %2515
  %2764 = landingpad { ptr, i32 }
          cleanup
  %2765 = extractvalue { ptr, i32 } %2764, 0
  store ptr %2765, ptr %4, align 8
  %2766 = extractvalue { ptr, i32 } %2764, 1
  store i32 %2766, ptr %5, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %326) #9
  br label %2767

2767:                                             ; preds = %2763, %2759
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %329) #9
  br label %2768

2768:                                             ; preds = %2767, %2755
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %344) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %344) #9
  %2769 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %331, i32 0, i32 0
  %2770 = getelementptr inbounds %"class.std::shared_ptr", ptr %2769, i64 2
  br label %2771

2771:                                             ; preds = %2771, %2768
  %2772 = phi ptr [ %2770, %2768 ], [ %2773, %2771 ]
  %2773 = getelementptr inbounds %"class.std::shared_ptr", ptr %2772, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2773) #9
  %2774 = icmp eq ptr %2773, %2769
  br i1 %2774, label %2775, label %2771

2775:                                             ; preds = %2771
  br label %2776

2776:                                             ; preds = %2775, %2751
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %335) #9
  br label %2777

2777:                                             ; preds = %2776, %2747
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %342) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %342) #9
  %2778 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %337, i32 0, i32 0
  %2779 = getelementptr inbounds %"class.std::shared_ptr", ptr %2778, i64 2
  br label %2780

2780:                                             ; preds = %2780, %2777
  %2781 = phi ptr [ %2779, %2777 ], [ %2782, %2780 ]
  %2782 = getelementptr inbounds %"class.std::shared_ptr", ptr %2781, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2782) #9
  %2783 = icmp eq ptr %2782, %2778
  br i1 %2783, label %2784, label %2780

2784:                                             ; preds = %2780
  br label %2785

2785:                                             ; preds = %2784, %2743
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %339) #9
  br label %2786

2786:                                             ; preds = %2785, %2739
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %340) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %340) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %339) #9
  %2787 = load i1, ptr %341, align 1
  br i1 %2787, label %2788, label %2796

2788:                                             ; preds = %2786
  %2789 = load ptr, ptr %338, align 8
  %2790 = icmp eq ptr %337, %2789
  br i1 %2790, label %2795, label %2791

2791:                                             ; preds = %2791, %2788
  %2792 = phi ptr [ %2789, %2788 ], [ %2793, %2791 ]
  %2793 = getelementptr inbounds %"class.std::shared_ptr", ptr %2792, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2793) #9
  %2794 = icmp eq ptr %2793, %337
  br i1 %2794, label %2795, label %2791

2795:                                             ; preds = %2791, %2788
  br label %2796

2796:                                             ; preds = %2795, %2786
  call void @llvm.lifetime.end.p0(i64 32, ptr %337) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %333) #9
  br label %2797

2797:                                             ; preds = %2796, %2735
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %334) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %334) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %333) #9
  %2798 = load i1, ptr %343, align 1
  br i1 %2798, label %2799, label %2807

2799:                                             ; preds = %2797
  %2800 = load ptr, ptr %332, align 8
  %2801 = icmp eq ptr %331, %2800
  br i1 %2801, label %2806, label %2802

2802:                                             ; preds = %2802, %2799
  %2803 = phi ptr [ %2800, %2799 ], [ %2804, %2802 ]
  %2804 = getelementptr inbounds %"class.std::shared_ptr", ptr %2803, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2804) #9
  %2805 = icmp eq ptr %2804, %331
  br i1 %2805, label %2806, label %2802

2806:                                             ; preds = %2802, %2799
  br label %2807

2807:                                             ; preds = %2806, %2797
  call void @llvm.lifetime.end.p0(i64 32, ptr %331) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %327) #9
  br label %2808

2808:                                             ; preds = %2807, %2731
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %328) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %328) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %327) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %299) #9
  br label %2809

2809:                                             ; preds = %2808, %2727
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %302) #9
  br label %2810

2810:                                             ; preds = %2809, %2723
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %325) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %325) #9
  %2811 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %304, i32 0, i32 0
  %2812 = getelementptr inbounds %"class.std::shared_ptr", ptr %2811, i64 2
  br label %2813

2813:                                             ; preds = %2813, %2810
  %2814 = phi ptr [ %2812, %2810 ], [ %2815, %2813 ]
  %2815 = getelementptr inbounds %"class.std::shared_ptr", ptr %2814, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2815) #9
  %2816 = icmp eq ptr %2815, %2811
  br i1 %2816, label %2817, label %2813

2817:                                             ; preds = %2813
  br label %2818

2818:                                             ; preds = %2817, %2719
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %308) #9
  br label %2819

2819:                                             ; preds = %2818, %2715
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %323) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %323) #9
  %2820 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %310, i32 0, i32 0
  %2821 = getelementptr inbounds %"class.std::shared_ptr", ptr %2820, i64 2
  br label %2822

2822:                                             ; preds = %2822, %2819
  %2823 = phi ptr [ %2821, %2819 ], [ %2824, %2822 ]
  %2824 = getelementptr inbounds %"class.std::shared_ptr", ptr %2823, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2824) #9
  %2825 = icmp eq ptr %2824, %2820
  br i1 %2825, label %2826, label %2822

2826:                                             ; preds = %2822
  br label %2827

2827:                                             ; preds = %2826, %2711
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %314) #9
  br label %2828

2828:                                             ; preds = %2827, %2707
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %321) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %321) #9
  %2829 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %316, i32 0, i32 0
  %2830 = getelementptr inbounds %"class.std::shared_ptr", ptr %2829, i64 2
  br label %2831

2831:                                             ; preds = %2831, %2828
  %2832 = phi ptr [ %2830, %2828 ], [ %2833, %2831 ]
  %2833 = getelementptr inbounds %"class.std::shared_ptr", ptr %2832, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2833) #9
  %2834 = icmp eq ptr %2833, %2829
  br i1 %2834, label %2835, label %2831

2835:                                             ; preds = %2831
  br label %2836

2836:                                             ; preds = %2835, %2703
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %318) #9
  br label %2837

2837:                                             ; preds = %2836, %2699
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %319) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %319) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %318) #9
  %2838 = load i1, ptr %320, align 1
  br i1 %2838, label %2839, label %2847

2839:                                             ; preds = %2837
  %2840 = load ptr, ptr %317, align 8
  %2841 = icmp eq ptr %316, %2840
  br i1 %2841, label %2846, label %2842

2842:                                             ; preds = %2842, %2839
  %2843 = phi ptr [ %2840, %2839 ], [ %2844, %2842 ]
  %2844 = getelementptr inbounds %"class.std::shared_ptr", ptr %2843, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2844) #9
  %2845 = icmp eq ptr %2844, %316
  br i1 %2845, label %2846, label %2842

2846:                                             ; preds = %2842, %2839
  br label %2847

2847:                                             ; preds = %2846, %2837
  call void @llvm.lifetime.end.p0(i64 32, ptr %316) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %312) #9
  br label %2848

2848:                                             ; preds = %2847, %2695
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %313) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %313) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %312) #9
  %2849 = load i1, ptr %322, align 1
  br i1 %2849, label %2850, label %2858

2850:                                             ; preds = %2848
  %2851 = load ptr, ptr %311, align 8
  %2852 = icmp eq ptr %310, %2851
  br i1 %2852, label %2857, label %2853

2853:                                             ; preds = %2853, %2850
  %2854 = phi ptr [ %2851, %2850 ], [ %2855, %2853 ]
  %2855 = getelementptr inbounds %"class.std::shared_ptr", ptr %2854, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2855) #9
  %2856 = icmp eq ptr %2855, %310
  br i1 %2856, label %2857, label %2853

2857:                                             ; preds = %2853, %2850
  br label %2858

2858:                                             ; preds = %2857, %2848
  call void @llvm.lifetime.end.p0(i64 32, ptr %310) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %306) #9
  br label %2859

2859:                                             ; preds = %2858, %2691
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %307) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %307) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %306) #9
  %2860 = load i1, ptr %324, align 1
  br i1 %2860, label %2861, label %2869

2861:                                             ; preds = %2859
  %2862 = load ptr, ptr %305, align 8
  %2863 = icmp eq ptr %304, %2862
  br i1 %2863, label %2868, label %2864

2864:                                             ; preds = %2864, %2861
  %2865 = phi ptr [ %2862, %2861 ], [ %2866, %2864 ]
  %2866 = getelementptr inbounds %"class.std::shared_ptr", ptr %2865, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2866) #9
  %2867 = icmp eq ptr %2866, %304
  br i1 %2867, label %2868, label %2864

2868:                                             ; preds = %2864, %2861
  br label %2869

2869:                                             ; preds = %2868, %2859
  call void @llvm.lifetime.end.p0(i64 32, ptr %304) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %300) #9
  br label %2870

2870:                                             ; preds = %2869, %2687
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %301) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %301) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %300) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %298) #9
  br label %3140

2871:                                             ; preds = %2640, %2553
  %2872 = landingpad { ptr, i32 }
          catch ptr null
  %2873 = extractvalue { ptr, i32 } %2872, 0
  store ptr %2873, ptr %4, align 8
  %2874 = extractvalue { ptr, i32 } %2872, 1
  store i32 %2874, ptr %5, align 4
  br label %3064

2875:                                             ; preds = %2555
  %2876 = landingpad { ptr, i32 }
          catch ptr null
  %2877 = extractvalue { ptr, i32 } %2876, 0
  store ptr %2877, ptr %4, align 8
  %2878 = extractvalue { ptr, i32 } %2876, 1
  store i32 %2878, ptr %5, align 4
  br label %3049

2879:                                             ; preds = %2557
  %2880 = landingpad { ptr, i32 }
          catch ptr null
  %2881 = extractvalue { ptr, i32 } %2880, 0
  store ptr %2881, ptr %4, align 8
  %2882 = extractvalue { ptr, i32 } %2880, 1
  store i32 %2882, ptr %5, align 4
  br label %3048

2883:                                             ; preds = %2558
  %2884 = landingpad { ptr, i32 }
          catch ptr null
  %2885 = extractvalue { ptr, i32 } %2884, 0
  store ptr %2885, ptr %4, align 8
  %2886 = extractvalue { ptr, i32 } %2884, 1
  store i32 %2886, ptr %5, align 4
  br label %3047

2887:                                             ; preds = %2560
  %2888 = landingpad { ptr, i32 }
          catch ptr null
  %2889 = extractvalue { ptr, i32 } %2888, 0
  store ptr %2889, ptr %4, align 8
  %2890 = extractvalue { ptr, i32 } %2888, 1
  store i32 %2890, ptr %5, align 4
  br label %3046

2891:                                             ; preds = %2561
  %2892 = landingpad { ptr, i32 }
          catch ptr null
  %2893 = extractvalue { ptr, i32 } %2892, 0
  store ptr %2893, ptr %4, align 8
  %2894 = extractvalue { ptr, i32 } %2892, 1
  store i32 %2894, ptr %5, align 4
  br label %3045

2895:                                             ; preds = %2562
  %2896 = landingpad { ptr, i32 }
          catch ptr null
  %2897 = extractvalue { ptr, i32 } %2896, 0
  store ptr %2897, ptr %4, align 8
  %2898 = extractvalue { ptr, i32 } %2896, 1
  store i32 %2898, ptr %5, align 4
  br label %3044

2899:                                             ; preds = %2565
  %2900 = landingpad { ptr, i32 }
          catch ptr null
  %2901 = extractvalue { ptr, i32 } %2900, 0
  store ptr %2901, ptr %4, align 8
  %2902 = extractvalue { ptr, i32 } %2900, 1
  store i32 %2902, ptr %5, align 4
  br label %3043

2903:                                             ; preds = %2566
  %2904 = landingpad { ptr, i32 }
          catch ptr null
  %2905 = extractvalue { ptr, i32 } %2904, 0
  store ptr %2905, ptr %4, align 8
  %2906 = extractvalue { ptr, i32 } %2904, 1
  store i32 %2906, ptr %5, align 4
  br label %3042

2907:                                             ; preds = %2568
  %2908 = landingpad { ptr, i32 }
          catch ptr null
  %2909 = extractvalue { ptr, i32 } %2908, 0
  store ptr %2909, ptr %4, align 8
  %2910 = extractvalue { ptr, i32 } %2908, 1
  store i32 %2910, ptr %5, align 4
  br label %3031

2911:                                             ; preds = %2570
  %2912 = landingpad { ptr, i32 }
          catch ptr null
  %2913 = extractvalue { ptr, i32 } %2912, 0
  store ptr %2913, ptr %4, align 8
  %2914 = extractvalue { ptr, i32 } %2912, 1
  store i32 %2914, ptr %5, align 4
  br label %3030

2915:                                             ; preds = %2571
  %2916 = landingpad { ptr, i32 }
          catch ptr null
  %2917 = extractvalue { ptr, i32 } %2916, 0
  store ptr %2917, ptr %4, align 8
  %2918 = extractvalue { ptr, i32 } %2916, 1
  store i32 %2918, ptr %5, align 4
  br label %3029

2919:                                             ; preds = %2574
  %2920 = landingpad { ptr, i32 }
          catch ptr null
  %2921 = extractvalue { ptr, i32 } %2920, 0
  store ptr %2921, ptr %4, align 8
  %2922 = extractvalue { ptr, i32 } %2920, 1
  store i32 %2922, ptr %5, align 4
  br label %3028

2923:                                             ; preds = %2575
  %2924 = landingpad { ptr, i32 }
          catch ptr null
  %2925 = extractvalue { ptr, i32 } %2924, 0
  store ptr %2925, ptr %4, align 8
  %2926 = extractvalue { ptr, i32 } %2924, 1
  store i32 %2926, ptr %5, align 4
  br label %3020

2927:                                             ; preds = %2582
  %2928 = landingpad { ptr, i32 }
          catch ptr null
  %2929 = extractvalue { ptr, i32 } %2928, 0
  store ptr %2929, ptr %4, align 8
  %2930 = extractvalue { ptr, i32 } %2928, 1
  store i32 %2930, ptr %5, align 4
  br label %3019

2931:                                             ; preds = %2583
  %2932 = landingpad { ptr, i32 }
          catch ptr null
  %2933 = extractvalue { ptr, i32 } %2932, 0
  store ptr %2933, ptr %4, align 8
  %2934 = extractvalue { ptr, i32 } %2932, 1
  store i32 %2934, ptr %5, align 4
  br label %3018

2935:                                             ; preds = %2584
  %2936 = landingpad { ptr, i32 }
          catch ptr null
  %2937 = extractvalue { ptr, i32 } %2936, 0
  store ptr %2937, ptr %4, align 8
  %2938 = extractvalue { ptr, i32 } %2936, 1
  store i32 %2938, ptr %5, align 4
  br label %3017

2939:                                             ; preds = %2587
  %2940 = landingpad { ptr, i32 }
          catch ptr null
  %2941 = extractvalue { ptr, i32 } %2940, 0
  store ptr %2941, ptr %4, align 8
  %2942 = extractvalue { ptr, i32 } %2940, 1
  store i32 %2942, ptr %5, align 4
  br label %3016

2943:                                             ; preds = %2588
  %2944 = landingpad { ptr, i32 }
          catch ptr null
  %2945 = extractvalue { ptr, i32 } %2944, 0
  store ptr %2945, ptr %4, align 8
  %2946 = extractvalue { ptr, i32 } %2944, 1
  store i32 %2946, ptr %5, align 4
  br label %3015

2947:                                             ; preds = %2590
  %2948 = landingpad { ptr, i32 }
          catch ptr null
  %2949 = extractvalue { ptr, i32 } %2948, 0
  store ptr %2949, ptr %4, align 8
  %2950 = extractvalue { ptr, i32 } %2948, 1
  store i32 %2950, ptr %5, align 4
  br label %3004

2951:                                             ; preds = %2592
  %2952 = landingpad { ptr, i32 }
          catch ptr null
  %2953 = extractvalue { ptr, i32 } %2952, 0
  store ptr %2953, ptr %4, align 8
  %2954 = extractvalue { ptr, i32 } %2952, 1
  store i32 %2954, ptr %5, align 4
  br label %3003

2955:                                             ; preds = %2593
  %2956 = landingpad { ptr, i32 }
          catch ptr null
  %2957 = extractvalue { ptr, i32 } %2956, 0
  store ptr %2957, ptr %4, align 8
  %2958 = extractvalue { ptr, i32 } %2956, 1
  store i32 %2958, ptr %5, align 4
  br label %3002

2959:                                             ; preds = %2596
  %2960 = landingpad { ptr, i32 }
          catch ptr null
  %2961 = extractvalue { ptr, i32 } %2960, 0
  store ptr %2961, ptr %4, align 8
  %2962 = extractvalue { ptr, i32 } %2960, 1
  store i32 %2962, ptr %5, align 4
  br label %3001

2963:                                             ; preds = %2597
  %2964 = landingpad { ptr, i32 }
          catch ptr null
  %2965 = extractvalue { ptr, i32 } %2964, 0
  store ptr %2965, ptr %4, align 8
  %2966 = extractvalue { ptr, i32 } %2964, 1
  store i32 %2966, ptr %5, align 4
  br label %2993

2967:                                             ; preds = %2604
  %2968 = landingpad { ptr, i32 }
          catch ptr null
  %2969 = extractvalue { ptr, i32 } %2968, 0
  store ptr %2969, ptr %4, align 8
  %2970 = extractvalue { ptr, i32 } %2968, 1
  store i32 %2970, ptr %5, align 4
  br label %2992

2971:                                             ; preds = %2605
  %2972 = landingpad { ptr, i32 }
          catch ptr null
  %2973 = extractvalue { ptr, i32 } %2972, 0
  store ptr %2973, ptr %4, align 8
  %2974 = extractvalue { ptr, i32 } %2972, 1
  store i32 %2974, ptr %5, align 4
  br label %2991

2975:                                             ; preds = %2606
  %2976 = landingpad { ptr, i32 }
          catch ptr null
  %2977 = extractvalue { ptr, i32 } %2976, 0
  store ptr %2977, ptr %4, align 8
  %2978 = extractvalue { ptr, i32 } %2976, 1
  store i32 %2978, ptr %5, align 4
  br label %2983

2979:                                             ; preds = %2615, %2613
  %2980 = landingpad { ptr, i32 }
          catch ptr null
  %2981 = extractvalue { ptr, i32 } %2980, 0
  store ptr %2981, ptr %4, align 8
  %2982 = extractvalue { ptr, i32 } %2980, 1
  store i32 %2982, ptr %5, align 4
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %346) #9
  br label %2983

2983:                                             ; preds = %2979, %2975
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %389) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %389) #9
  %2984 = getelementptr inbounds [3 x %"struct.std::pair"], ptr %348, i32 0, i32 0
  %2985 = getelementptr inbounds %"struct.std::pair", ptr %2984, i64 3
  br label %2986

2986:                                             ; preds = %2986, %2983
  %2987 = phi ptr [ %2985, %2983 ], [ %2988, %2986 ]
  %2988 = getelementptr inbounds %"struct.std::pair", ptr %2987, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2988) #9
  %2989 = icmp eq ptr %2988, %2984
  br i1 %2989, label %2990, label %2986

2990:                                             ; preds = %2986
  br label %2991

2991:                                             ; preds = %2990, %2971
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %375) #9
  br label %2992

2992:                                             ; preds = %2991, %2967
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %378) #9
  br label %2993

2993:                                             ; preds = %2992, %2963
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %387) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %387) #9
  %2994 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %380, i32 0, i32 0
  %2995 = getelementptr inbounds %"class.std::shared_ptr", ptr %2994, i64 2
  br label %2996

2996:                                             ; preds = %2996, %2993
  %2997 = phi ptr [ %2995, %2993 ], [ %2998, %2996 ]
  %2998 = getelementptr inbounds %"class.std::shared_ptr", ptr %2997, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2998) #9
  %2999 = icmp eq ptr %2998, %2994
  br i1 %2999, label %3000, label %2996

3000:                                             ; preds = %2996
  br label %3001

3001:                                             ; preds = %3000, %2959
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %384) #9
  br label %3002

3002:                                             ; preds = %3001, %2955
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %385) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %385) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %384) #9
  br label %3003

3003:                                             ; preds = %3002, %2951
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %382) #9
  br label %3004

3004:                                             ; preds = %3003, %2947
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %383) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %383) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %382) #9
  %3005 = load i1, ptr %386, align 1
  br i1 %3005, label %3006, label %3014

3006:                                             ; preds = %3004
  %3007 = load ptr, ptr %381, align 8
  %3008 = icmp eq ptr %380, %3007
  br i1 %3008, label %3013, label %3009

3009:                                             ; preds = %3009, %3006
  %3010 = phi ptr [ %3007, %3006 ], [ %3011, %3009 ]
  %3011 = getelementptr inbounds %"class.std::shared_ptr", ptr %3010, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3011) #9
  %3012 = icmp eq ptr %3011, %380
  br i1 %3012, label %3013, label %3009

3013:                                             ; preds = %3009, %3006
  br label %3014

3014:                                             ; preds = %3013, %3004
  call void @llvm.lifetime.end.p0(i64 32, ptr %380) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %376) #9
  br label %3015

3015:                                             ; preds = %3014, %2943
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %377) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %377) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %376) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %375) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %372) #9
  br label %3016

3016:                                             ; preds = %3015, %2939
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %373) #9
  br label %3017

3017:                                             ; preds = %3016, %2935
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %374) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %374) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %373) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %372) #9
  br label %3018

3018:                                             ; preds = %3017, %2931
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %359) #9
  br label %3019

3019:                                             ; preds = %3018, %2927
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %362) #9
  br label %3020

3020:                                             ; preds = %3019, %2923
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %371) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %371) #9
  %3021 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %364, i32 0, i32 0
  %3022 = getelementptr inbounds %"class.std::shared_ptr", ptr %3021, i64 2
  br label %3023

3023:                                             ; preds = %3023, %3020
  %3024 = phi ptr [ %3022, %3020 ], [ %3025, %3023 ]
  %3025 = getelementptr inbounds %"class.std::shared_ptr", ptr %3024, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3025) #9
  %3026 = icmp eq ptr %3025, %3021
  br i1 %3026, label %3027, label %3023

3027:                                             ; preds = %3023
  br label %3028

3028:                                             ; preds = %3027, %2919
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %368) #9
  br label %3029

3029:                                             ; preds = %3028, %2915
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %369) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %369) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %368) #9
  br label %3030

3030:                                             ; preds = %3029, %2911
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %366) #9
  br label %3031

3031:                                             ; preds = %3030, %2907
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %367) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %367) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %366) #9
  %3032 = load i1, ptr %370, align 1
  br i1 %3032, label %3033, label %3041

3033:                                             ; preds = %3031
  %3034 = load ptr, ptr %365, align 8
  %3035 = icmp eq ptr %364, %3034
  br i1 %3035, label %3040, label %3036

3036:                                             ; preds = %3036, %3033
  %3037 = phi ptr [ %3034, %3033 ], [ %3038, %3036 ]
  %3038 = getelementptr inbounds %"class.std::shared_ptr", ptr %3037, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3038) #9
  %3039 = icmp eq ptr %3038, %364
  br i1 %3039, label %3040, label %3036

3040:                                             ; preds = %3036, %3033
  br label %3041

3041:                                             ; preds = %3040, %3031
  call void @llvm.lifetime.end.p0(i64 32, ptr %364) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %360) #9
  br label %3042

3042:                                             ; preds = %3041, %2903
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %361) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %361) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %360) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %359) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %356) #9
  br label %3043

3043:                                             ; preds = %3042, %2899
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %357) #9
  br label %3044

3044:                                             ; preds = %3043, %2895
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %358) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %358) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %357) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %356) #9
  br label %3045

3045:                                             ; preds = %3044, %2891
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %353) #9
  br label %3046

3046:                                             ; preds = %3045, %2887
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %354) #9
  br label %3047

3047:                                             ; preds = %3046, %2883
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %355) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %355) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %354) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %353) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %350) #9
  br label %3048

3048:                                             ; preds = %3047, %2879
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %351) #9
  br label %3049

3049:                                             ; preds = %3048, %2875
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %352) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %352) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %351) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %350) #9
  %3050 = load i1, ptr %388, align 1
  br i1 %3050, label %3051, label %3059

3051:                                             ; preds = %3049
  %3052 = load ptr, ptr %349, align 8
  %3053 = icmp eq ptr %348, %3052
  br i1 %3053, label %3058, label %3054

3054:                                             ; preds = %3054, %3051
  %3055 = phi ptr [ %3052, %3051 ], [ %3056, %3054 ]
  %3056 = getelementptr inbounds %"struct.std::pair", ptr %3055, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3056) #9
  %3057 = icmp eq ptr %3056, %348
  br i1 %3057, label %3058, label %3054

3058:                                             ; preds = %3054, %3051
  br label %3059

3059:                                             ; preds = %3058, %3049
  call void @llvm.lifetime.end.p0(i64 96, ptr %348) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %345) #9
  br label %3064

3060:                                             ; preds = %2647, %2645, %2642
  %3061 = landingpad { ptr, i32 }
          catch ptr null
  %3062 = extractvalue { ptr, i32 } %3061, 0
  store ptr %3062, ptr %4, align 8
  %3063 = extractvalue { ptr, i32 } %3061, 1
  store i32 %3063, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %390) #9
  br label %3064

3064:                                             ; preds = %3060, %3059, %2871
  %3065 = load ptr, ptr %4, align 8
  %3066 = call ptr @__cxa_begin_catch(ptr %3065) #9
  %3067 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %3068 unwind label %3092

3068:                                             ; preds = %3064
  %3069 = load ptr, ptr %3067, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %391) #9
  %3070 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %3071 unwind label %3096

3071:                                             ; preds = %3068
  %3072 = load ptr, ptr %3070, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %391, ptr noundef nonnull align 8 dereferenceable(30) %3072, i32 noundef 410)
          to label %3073 unwind label %3096

3073:                                             ; preds = %3071
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %3069, ptr noundef nonnull align 8 dereferenceable(30) %391, ptr noundef @.str.102)
          to label %3074 unwind label %3096

3074:                                             ; preds = %3073
  call void @llvm.lifetime.end.p0(i64 32, ptr %391) #9
  invoke void @__cxa_end_catch()
          to label %3075 unwind label %3100

3075:                                             ; preds = %3074
  br label %3076

3076:                                             ; preds = %3091, %3075
  br label %3077

3077:                                             ; preds = %3076
  br label %3078

3078:                                             ; preds = %3077
  br label %3079

3079:                                             ; preds = %3078
  %3080 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext true)
          to label %3081 unwind label %3106

3081:                                             ; preds = %3079
  br i1 %3080, label %3129, label %3082

3082:                                             ; preds = %3081
  %3083 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %3084 unwind label %3106

3084:                                             ; preds = %3082
  %3085 = load ptr, ptr %3083, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %392) #9
  %3086 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %3087 unwind label %3110

3087:                                             ; preds = %3084
  %3088 = load ptr, ptr %3086, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %392, ptr noundef nonnull align 8 dereferenceable(30) %3088, i32 noundef 414)
          to label %3089 unwind label %3110

3089:                                             ; preds = %3087
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %3085, ptr noundef nonnull align 8 dereferenceable(30) %392, ptr noundef @.str.103)
          to label %3090 unwind label %3110

3090:                                             ; preds = %3089
  call void @llvm.lifetime.end.p0(i64 32, ptr %392) #9
  br label %3129

3091:                                             ; preds = %2648, %2639
  br label %3076

3092:                                             ; preds = %3064
  %3093 = landingpad { ptr, i32 }
          cleanup
  %3094 = extractvalue { ptr, i32 } %3093, 0
  store ptr %3094, ptr %4, align 8
  %3095 = extractvalue { ptr, i32 } %3093, 1
  store i32 %3095, ptr %5, align 4
  br label %3104

3096:                                             ; preds = %3073, %3071, %3068
  %3097 = landingpad { ptr, i32 }
          cleanup
  %3098 = extractvalue { ptr, i32 } %3097, 0
  store ptr %3098, ptr %4, align 8
  %3099 = extractvalue { ptr, i32 } %3097, 1
  store i32 %3099, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %391) #9
  br label %3104

3100:                                             ; preds = %3124, %3074
  %3101 = landingpad { ptr, i32 }
          cleanup
  %3102 = extractvalue { ptr, i32 } %3101, 0
  store ptr %3102, ptr %4, align 8
  %3103 = extractvalue { ptr, i32 } %3101, 1
  store i32 %3103, ptr %5, align 4
  br label %3140

3104:                                             ; preds = %3096, %3092
  invoke void @__cxa_end_catch()
          to label %3105 unwind label %3156

3105:                                             ; preds = %3104
  br label %3140

3106:                                             ; preds = %3082, %3079
  %3107 = landingpad { ptr, i32 }
          catch ptr null
  %3108 = extractvalue { ptr, i32 } %3107, 0
  store ptr %3108, ptr %4, align 8
  %3109 = extractvalue { ptr, i32 } %3107, 1
  store i32 %3109, ptr %5, align 4
  br label %3114

3110:                                             ; preds = %3089, %3087, %3084
  %3111 = landingpad { ptr, i32 }
          catch ptr null
  %3112 = extractvalue { ptr, i32 } %3111, 0
  store ptr %3112, ptr %4, align 8
  %3113 = extractvalue { ptr, i32 } %3111, 1
  store i32 %3113, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %392) #9
  br label %3114

3114:                                             ; preds = %3110, %3106
  %3115 = load ptr, ptr %4, align 8
  %3116 = call ptr @__cxa_begin_catch(ptr %3115) #9
  %3117 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %3118 unwind label %3130

3118:                                             ; preds = %3114
  %3119 = load ptr, ptr %3117, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %393) #9
  %3120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %3121 unwind label %3134

3121:                                             ; preds = %3118
  %3122 = load ptr, ptr %3120, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %393, ptr noundef nonnull align 8 dereferenceable(30) %3122, i32 noundef 414)
          to label %3123 unwind label %3134

3123:                                             ; preds = %3121
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %3119, ptr noundef nonnull align 8 dereferenceable(30) %393, ptr noundef @.str.104)
          to label %3124 unwind label %3134

3124:                                             ; preds = %3123
  call void @llvm.lifetime.end.p0(i64 32, ptr %393) #9
  invoke void @__cxa_end_catch()
          to label %3125 unwind label %3100

3125:                                             ; preds = %3124
  br label %3126

3126:                                             ; preds = %3129, %3125
  br label %3127

3127:                                             ; preds = %3126
  br label %3128

3128:                                             ; preds = %3127
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %295) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %295) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %261) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %261) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %258) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %258) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %232) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %232) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #9
  call void @_ZNSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #9
  ret void

3129:                                             ; preds = %3090, %3081
  br label %3126

3130:                                             ; preds = %3114
  %3131 = landingpad { ptr, i32 }
          cleanup
  %3132 = extractvalue { ptr, i32 } %3131, 0
  store ptr %3132, ptr %4, align 8
  %3133 = extractvalue { ptr, i32 } %3131, 1
  store i32 %3133, ptr %5, align 4
  br label %3138

3134:                                             ; preds = %3123, %3121, %3118
  %3135 = landingpad { ptr, i32 }
          cleanup
  %3136 = extractvalue { ptr, i32 } %3135, 0
  store ptr %3136, ptr %4, align 8
  %3137 = extractvalue { ptr, i32 } %3135, 1
  store i32 %3137, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %393) #9
  br label %3138

3138:                                             ; preds = %3134, %3130
  invoke void @__cxa_end_catch()
          to label %3139 unwind label %3156

3139:                                             ; preds = %3138
  br label %3140

3140:                                             ; preds = %3139, %3105, %3100, %2870
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %295) #9
  br label %3141

3141:                                             ; preds = %3140, %2686
  call void @llvm.lifetime.end.p0(i64 16, ptr %295) #9
  br label %3142

3142:                                             ; preds = %3141, %2677, %2668, %2659, %2419, %2393, %2384, %2379, %2278
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %261) #9
  br label %3143

3143:                                             ; preds = %3142, %2277
  call void @llvm.lifetime.end.p0(i64 16, ptr %261) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %258) #9
  br label %3144

3144:                                             ; preds = %3143, %2268
  call void @llvm.lifetime.end.p0(i64 16, ptr %258) #9
  br label %3145

3145:                                             ; preds = %3144, %2259, %2254, %2180
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %232) #9
  br label %3146

3146:                                             ; preds = %3145, %2102
  call void @llvm.lifetime.end.p0(i64 16, ptr %232) #9
  br label %3147

3147:                                             ; preds = %3146, %2093, %1922, %1814, %1607, %1499, %1364, %1256, %1103, %1015, %849, %825, %744, %720, %715
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #9
  br label %3148

3148:                                             ; preds = %3147, %656
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #9
  br label %3149

3149:                                             ; preds = %3148, %632, %554, %482, %477
  call void @_ZNSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  br label %3150

3150:                                             ; preds = %3149, %413
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #9
  br label %3151

3151:                                             ; preds = %3150
  %3152 = load ptr, ptr %4, align 8
  %3153 = load i32, ptr %5, align 4
  %3154 = insertvalue { ptr, i32 } poison, ptr %3152, 0
  %3155 = insertvalue { ptr, i32 } %3154, i32 %3153, 1
  resume { ptr, i32 } %3155

3156:                                             ; preds = %3138, %3104, %2658, %2383, %2258, %2092, %1813, %1498, %1255, %1014, %824, %719, %631, %553, %481
  %3157 = landingpad { ptr, i32 }
          catch ptr null
  %3158 = extractvalue { ptr, i32 } %3157, 0
  call void @__clang_call_terminate(ptr %3158) #12
  unreachable
}

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

declare void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.91") align 8, ptr noundef, ptr noundef, ptr noundef) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10shared_ptrI7HtnTermEC2EDn(ptr noundef nonnull align 8 dereferenceable(16), ptr) unnamed_addr #3 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)) #3 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)) #5

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #3 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)) #5

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S5_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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)) #3 align 2

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

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

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { 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 #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { 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 #8 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { builtin nounwind }
attributes #12 = { 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_listISt4pairISt10shared_ptrI7HtnTermES3_EE", !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.21" = type { %"class.std::__shared_ptr.22" }
%"class.std::__shared_ptr.22" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.91" = type { %"class.std::__shared_ptr.92" }
%"class.std::__shared_ptr.92" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.UnitTest::TestDetails" = type <{ ptr, ptr, ptr, i32, i8, i8, [2 x i8] }>
%"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.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>, std::allocator<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>, std::allocator<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>, std::allocator<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>, std::allocator<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair" = type { %"class.std::shared_ptr", %"class.std::shared_ptr" }
%"class.std::allocator" = 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.70 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [137 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [167 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [139 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [169 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [243 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [273 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [477 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [507 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [35 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef, ptr noundef) local_unnamed_addr #0

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10shared_ptrI14HtnTermFactoryEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #0 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 #3 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 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 #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN25SuiteHtnGoalResolverTests31TestHtnGoalResolverUnifierTests7RunImplEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(49) %0) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::shared_ptr.21", align 8
  %3 = alloca %"class.std::shared_ptr.91", align 8
  %4 = alloca %"class.std::shared_ptr", align 8
  %5 = alloca %"class.std::shared_ptr", align 8
  %6 = alloca %"class.UnitTest::TestDetails", align 8
  %7 = alloca %"class.UnitTest::TestDetails", align 8
  %8 = alloca %"class.std::shared_ptr.91", align 8
  %9 = alloca %"class.std::shared_ptr", align 8
  %10 = alloca %"class.std::shared_ptr", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator.88", align 1
  %13 = alloca %"class.UnitTest::TestDetails", align 8
  %14 = alloca %"class.UnitTest::TestDetails", align 8
  %15 = alloca %"class.std::shared_ptr.91", align 8
  %16 = alloca %"class.std::shared_ptr", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator.88", align 1
  %19 = alloca %"class.std::shared_ptr", align 8
  %20 = alloca %"class.UnitTest::TestDetails", align 8
  %21 = alloca %"class.UnitTest::TestDetails", align 8
  %22 = alloca %"class.std::shared_ptr.91", align 8
  %23 = alloca %"class.std::shared_ptr", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator.88", align 1
  %26 = alloca %"class.std::shared_ptr", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator.88", align 1
  %29 = alloca %"class.std::vector", align 8
  %30 = alloca %"class.std::vector", align 8
  %31 = alloca %"class.UnitTest::TestDetails", align 8
  %32 = alloca %"class.UnitTest::TestDetails", align 8
  %33 = alloca %"class.std::shared_ptr.91", 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.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.91", align 8
  %43 = alloca %"class.std::shared_ptr", align 8
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator.88", align 1
  %46 = alloca %"class.std::shared_ptr", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator.88", align 1
  %49 = alloca %"class.std::vector", align 8
  %50 = alloca %"class.std::vector", align 8
  %51 = alloca [1 x %"struct.std::pair"], 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::shared_ptr", align 8
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::allocator.88", align 1
  %58 = alloca %"class.std::allocator", align 1
  %59 = alloca %"class.UnitTest::TestDetails", align 8
  %60 = alloca %"class.UnitTest::TestDetails", align 8
  %61 = alloca %"class.std::shared_ptr.91", align 8
  %62 = alloca %"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::vector.0", align 8
  %66 = alloca [1 x %"class.std::shared_ptr"], align 8
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::allocator.88", align 1
  %69 = alloca %"class.std::allocator.2", align 1
  %70 = alloca %"class.std::shared_ptr", align 8
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca %"class.std::allocator.88", align 1
  %73 = alloca %"class.std::vector.0", align 8
  %74 = alloca [1 x %"class.std::shared_ptr"], align 8
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.std::allocator.88", align 1
  %77 = alloca %"class.std::allocator.2", align 1
  %78 = alloca %"class.std::vector", align 8
  %79 = alloca %"class.std::vector", align 8
  %80 = alloca [1 x %"struct.std::pair"], align 8
  %81 = alloca %"class.std::shared_ptr", align 8
  %82 = alloca %"class.std::__cxx11::basic_string", align 8
  %83 = alloca %"class.std::allocator.88", align 1
  %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::allocator", align 1
  %88 = alloca %"class.UnitTest::TestDetails", align 8
  %89 = alloca %"class.UnitTest::TestDetails", align 8
  %90 = alloca %"class.std::shared_ptr.91", align 8
  %91 = alloca %"class.std::shared_ptr", align 8
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca %"class.std::allocator.88", align 1
  %94 = alloca %"class.std::vector.0", align 8
  %95 = alloca [2 x %"class.std::shared_ptr"], align 8
  %96 = alloca %"class.std::__cxx11::basic_string", align 8
  %97 = alloca %"class.std::allocator.88", align 1
  %98 = alloca %"class.std::__cxx11::basic_string", align 8
  %99 = alloca %"class.std::allocator.88", align 1
  %100 = alloca %"class.std::allocator.2", align 1
  %101 = alloca %"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::vector.0", align 8
  %105 = alloca [2 x %"class.std::shared_ptr"], align 8
  %106 = alloca %"class.std::__cxx11::basic_string", align 8
  %107 = alloca %"class.std::allocator.88", align 1
  %108 = alloca %"class.std::__cxx11::basic_string", align 8
  %109 = alloca %"class.std::allocator.88", align 1
  %110 = alloca %"class.std::allocator.2", align 1
  %111 = alloca %"class.std::vector", align 8
  %112 = alloca %"class.std::vector", align 8
  %113 = alloca %"class.UnitTest::TestDetails", align 8
  %114 = alloca %"class.UnitTest::TestDetails", align 8
  %115 = alloca %"class.std::shared_ptr.91", align 8
  %116 = alloca %"class.std::shared_ptr", align 8
  %117 = alloca %"class.std::__cxx11::basic_string", align 8
  %118 = alloca %"class.std::allocator.88", align 1
  %119 = alloca %"class.std::vector.0", align 8
  %120 = alloca [2 x %"class.std::shared_ptr"], align 8
  %121 = alloca %"class.std::__cxx11::basic_string", align 8
  %122 = alloca %"class.std::allocator.88", align 1
  %123 = alloca %"class.std::__cxx11::basic_string", align 8
  %124 = alloca %"class.std::allocator.88", align 1
  %125 = alloca %"class.std::allocator.2", align 1
  %126 = alloca %"class.std::shared_ptr", align 8
  %127 = alloca %"class.std::__cxx11::basic_string", align 8
  %128 = alloca %"class.std::allocator.88", align 1
  %129 = alloca %"class.std::vector.0", align 8
  %130 = alloca [2 x %"class.std::shared_ptr"], align 8
  %131 = alloca %"class.std::__cxx11::basic_string", align 8
  %132 = alloca %"class.std::allocator.88", align 1
  %133 = alloca %"class.std::__cxx11::basic_string", align 8
  %134 = alloca %"class.std::allocator.88", align 1
  %135 = alloca %"class.std::allocator.2", align 1
  %136 = alloca %"class.std::vector", align 8
  %137 = alloca %"class.std::vector", align 8
  %138 = alloca [2 x %"struct.std::pair"], align 8
  %139 = alloca %"class.std::shared_ptr", align 8
  %140 = alloca %"class.std::__cxx11::basic_string", align 8
  %141 = alloca %"class.std::allocator.88", align 1
  %142 = alloca %"class.std::shared_ptr", align 8
  %143 = alloca %"class.std::__cxx11::basic_string", align 8
  %144 = alloca %"class.std::allocator.88", align 1
  %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::shared_ptr", align 8
  %149 = alloca %"class.std::__cxx11::basic_string", align 8
  %150 = alloca %"class.std::allocator.88", align 1
  %151 = alloca %"class.std::allocator", align 1
  %152 = alloca %"class.UnitTest::TestDetails", align 8
  %153 = alloca %"class.UnitTest::TestDetails", align 8
  %154 = alloca %"class.std::shared_ptr.91", align 8
  %155 = alloca %"class.std::shared_ptr", align 8
  %156 = alloca %"class.std::__cxx11::basic_string", align 8
  %157 = alloca %"class.std::allocator.88", align 1
  %158 = alloca %"class.std::vector.0", align 8
  %159 = alloca [2 x %"class.std::shared_ptr"], align 8
  %160 = alloca %"class.std::__cxx11::basic_string", align 8
  %161 = alloca %"class.std::allocator.88", align 1
  %162 = alloca %"class.std::__cxx11::basic_string", align 8
  %163 = alloca %"class.std::allocator.88", align 1
  %164 = alloca %"class.std::allocator.2", align 1
  %165 = alloca %"class.std::shared_ptr", align 8
  %166 = alloca %"class.std::__cxx11::basic_string", align 8
  %167 = alloca %"class.std::allocator.88", align 1
  %168 = alloca %"class.std::vector.0", align 8
  %169 = alloca [2 x %"class.std::shared_ptr"], align 8
  %170 = alloca %"class.std::__cxx11::basic_string", align 8
  %171 = alloca %"class.std::allocator.88", align 1
  %172 = alloca %"class.std::__cxx11::basic_string", align 8
  %173 = alloca %"class.std::allocator.88", align 1
  %174 = alloca %"class.std::allocator.2", align 1
  %175 = alloca %"class.std::vector", align 8
  %176 = alloca %"class.std::vector", align 8
  %177 = alloca [2 x %"struct.std::pair"], align 8
  %178 = alloca %"class.std::shared_ptr", align 8
  %179 = alloca %"class.std::__cxx11::basic_string", align 8
  %180 = alloca %"class.std::allocator.88", align 1
  %181 = alloca %"class.std::shared_ptr", align 8
  %182 = alloca %"class.std::__cxx11::basic_string", align 8
  %183 = alloca %"class.std::allocator.88", align 1
  %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.std::shared_ptr", align 8
  %188 = alloca %"class.std::__cxx11::basic_string", align 8
  %189 = alloca %"class.std::allocator.88", align 1
  %190 = alloca %"class.std::allocator", 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::shared_ptr.91", align 8
  %197 = alloca %"class.std::shared_ptr", align 8
  %198 = alloca %"class.std::__cxx11::basic_string", align 8
  %199 = alloca %"class.std::allocator.88", align 1
  %200 = alloca %"class.std::vector.0", align 8
  %201 = alloca [2 x %"class.std::shared_ptr"], align 8
  %202 = alloca %"class.std::__cxx11::basic_string", align 8
  %203 = alloca %"class.std::allocator.88", align 1
  %204 = alloca %"class.std::__cxx11::basic_string", align 8
  %205 = alloca %"class.std::allocator.88", align 1
  %206 = alloca %"class.std::allocator.2", align 1
  %207 = alloca %"class.std::shared_ptr", align 8
  %208 = alloca %"class.std::__cxx11::basic_string", align 8
  %209 = alloca %"class.std::allocator.88", align 1
  %210 = alloca %"class.std::vector.0", align 8
  %211 = alloca [2 x %"class.std::shared_ptr"], align 8
  %212 = alloca %"class.std::allocator.2", align 1
  %213 = alloca %"class.UnitTest::TestDetails", align 8
  %214 = alloca %"class.UnitTest::TestDetails", align 8
  %215 = alloca %"class.std::shared_ptr", align 8
  %216 = alloca %"class.std::__cxx11::basic_string", align 8
  %217 = alloca %"class.std::allocator.88", align 1
  %218 = alloca %"class.std::shared_ptr", align 8
  %219 = alloca %"class.std::__cxx11::basic_string", align 8
  %220 = alloca %"class.std::allocator.88", align 1
  %221 = alloca %"class.std::shared_ptr.91", align 8
  %222 = alloca %"class.std::shared_ptr", align 8
  %223 = alloca %"class.std::shared_ptr", align 8
  %224 = alloca %"class.std::vector", align 8
  %225 = alloca %"class.std::vector", align 8
  %226 = alloca [1 x %"struct.std::pair"], align 8
  %227 = alloca %"class.std::allocator", align 1
  %228 = alloca %"class.UnitTest::TestDetails", align 8
  %229 = alloca %"class.UnitTest::TestDetails", align 8
  %230 = alloca %"class.std::shared_ptr", align 8
  %231 = alloca %"class.std::__cxx11::basic_string", align 8
  %232 = alloca %"class.std::allocator.88", align 1
  %233 = alloca %"class.std::shared_ptr.91", align 8
  %234 = alloca %"class.std::shared_ptr", align 8
  %235 = alloca %"class.std::__cxx11::basic_string", align 8
  %236 = alloca %"class.std::allocator.88", align 1
  %237 = alloca %"class.std::vector.0", align 8
  %238 = alloca [1 x %"class.std::shared_ptr"], align 8
  %239 = alloca %"class.std::allocator.2", align 1
  %240 = alloca %"class.std::shared_ptr", align 8
  %241 = alloca %"class.UnitTest::TestDetails", align 8
  %242 = alloca %"class.UnitTest::TestDetails", align 8
  %243 = alloca %"class.std::shared_ptr", align 8
  %244 = alloca %"class.std::__cxx11::basic_string", align 8
  %245 = alloca %"class.std::allocator.88", align 1
  %246 = alloca %"class.std::shared_ptr", align 8
  %247 = alloca %"class.std::__cxx11::basic_string", align 8
  %248 = alloca %"class.std::allocator.88", align 1
  %249 = alloca %"class.std::shared_ptr", align 8
  %250 = alloca %"class.std::__cxx11::basic_string", align 8
  %251 = alloca %"class.std::allocator.88", align 1
  %252 = alloca %"class.std::shared_ptr.91", align 8
  %253 = alloca %"class.std::shared_ptr", align 8
  %254 = alloca %"class.std::__cxx11::basic_string", align 8
  %255 = alloca %"class.std::allocator.88", align 1
  %256 = alloca %"class.std::vector.0", align 8
  %257 = alloca [2 x %"class.std::shared_ptr"], align 8
  %258 = alloca %"class.std::__cxx11::basic_string", align 8
  %259 = alloca %"class.std::allocator.88", align 1
  %260 = alloca %"class.std::vector.0", align 8
  %261 = alloca [2 x %"class.std::shared_ptr"], align 8
  %262 = alloca %"class.std::__cxx11::basic_string", align 8
  %263 = alloca %"class.std::allocator.88", align 1
  %264 = alloca %"class.std::vector.0", align 8
  %265 = alloca [2 x %"class.std::shared_ptr"], align 8
  %266 = alloca %"class.std::__cxx11::basic_string", align 8
  %267 = alloca %"class.std::allocator.88", align 1
  %268 = alloca %"class.std::allocator.2", align 1
  %269 = alloca %"class.std::allocator.2", align 1
  %270 = alloca %"class.std::allocator.2", align 1
  %271 = alloca %"class.std::shared_ptr", align 8
  %272 = alloca %"class.std::__cxx11::basic_string", align 8
  %273 = alloca %"class.std::allocator.88", align 1
  %274 = alloca %"class.std::vector.0", align 8
  %275 = alloca [2 x %"class.std::shared_ptr"], align 8
  %276 = alloca %"class.std::__cxx11::basic_string", align 8
  %277 = alloca %"class.std::allocator.88", align 1
  %278 = alloca %"class.std::vector.0", align 8
  %279 = alloca [2 x %"class.std::shared_ptr"], align 8
  %280 = alloca %"class.std::__cxx11::basic_string", align 8
  %281 = alloca %"class.std::allocator.88", align 1
  %282 = alloca %"class.std::allocator.2", align 1
  %283 = alloca %"class.std::allocator.2", align 1
  %284 = alloca %"class.std::vector", align 8
  %285 = alloca %"class.std::vector", align 8
  %286 = alloca [3 x %"struct.std::pair"], align 8
  %287 = alloca %"class.std::shared_ptr", align 8
  %288 = alloca %"class.std::__cxx11::basic_string", align 8
  %289 = alloca %"class.std::allocator.88", align 1
  %290 = alloca %"class.std::shared_ptr", align 8
  %291 = alloca %"class.std::__cxx11::basic_string", align 8
  %292 = alloca %"class.std::allocator.88", align 1
  %293 = alloca %"class.std::shared_ptr", align 8
  %294 = alloca %"class.std::__cxx11::basic_string", align 8
  %295 = alloca %"class.std::allocator.88", align 1
  %296 = alloca %"class.std::shared_ptr", align 8
  %297 = alloca %"class.std::__cxx11::basic_string", align 8
  %298 = alloca %"class.std::allocator.88", align 1
  %299 = alloca %"class.std::vector.0", align 8
  %300 = alloca [2 x %"class.std::shared_ptr"], align 8
  %301 = alloca %"class.std::__cxx11::basic_string", align 8
  %302 = alloca %"class.std::allocator.88", align 1
  %303 = alloca %"class.std::__cxx11::basic_string", align 8
  %304 = alloca %"class.std::allocator.88", align 1
  %305 = alloca %"class.std::allocator.2", align 1
  %306 = alloca %"class.std::shared_ptr", align 8
  %307 = alloca %"class.std::__cxx11::basic_string", align 8
  %308 = alloca %"class.std::allocator.88", align 1
  %309 = alloca %"class.std::shared_ptr", align 8
  %310 = alloca %"class.std::__cxx11::basic_string", align 8
  %311 = alloca %"class.std::allocator.88", align 1
  %312 = alloca %"class.std::vector.0", align 8
  %313 = alloca [2 x %"class.std::shared_ptr"], align 8
  %314 = alloca %"class.std::__cxx11::basic_string", align 8
  %315 = alloca %"class.std::allocator.88", align 1
  %316 = alloca %"class.std::__cxx11::basic_string", align 8
  %317 = alloca %"class.std::allocator.88", align 1
  %318 = alloca %"class.std::allocator.2", align 1
  %319 = alloca %"class.std::allocator", align 1
  %320 = alloca %"class.UnitTest::TestDetails", align 8
  %321 = alloca %"class.UnitTest::TestDetails", align 8
  %322 = alloca %"class.UnitTest::TestDetails", align 8
  %323 = alloca %"class.UnitTest::TestDetails", align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #9
  %324 = tail call noalias noundef nonnull dereferenceable(33088) ptr @_Znwm(i64 noundef 33088) #10
  invoke void @_ZN14HtnTermFactoryC1Ev(ptr noundef nonnull align 8 dereferenceable(33088) %324)
          to label %325 unwind label %339

325:                                              ; preds = %1
  call void @_ZNSt10shared_ptrI14HtnTermFactoryEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull %324)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #9
  %326 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr null) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr null) #9
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.91") align 8 %3, ptr noundef %326, ptr noundef nonnull %4, ptr noundef nonnull %5)
          to label %327 unwind label %341

327:                                              ; preds = %325
  %328 = call noundef zeroext i1 @_ZSteqISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr null) #9
  %329 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %328)
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #9
  br i1 %329, label %357, label %330

330:                                              ; preds = %327
  %331 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %332 unwind label %343

332:                                              ; preds = %330
  %333 = load ptr, ptr %331, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #9
  %334 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %335 unwind label %345

335:                                              ; preds = %332
  %336 = load ptr, ptr %334, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %6, ptr noundef nonnull align 8 dereferenceable(30) %336, i32 noundef 304)
          to label %337 unwind label %345

337:                                              ; preds = %335
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %333, ptr noundef nonnull align 8 dereferenceable(30) %6, ptr noundef nonnull @.str.70)
          to label %338 unwind label %345

338:                                              ; preds = %337
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #9
  br label %357

339:                                              ; preds = %1
  %340 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %324, i64 noundef 33088) #11
  br label %1709

341:                                              ; preds = %325
  %342 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #9
  br label %347

343:                                              ; preds = %330
  %344 = landingpad { ptr, i32 }
          catch ptr null
  br label %347

345:                                              ; preds = %337, %335, %332
  %346 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #9
  br label %347

347:                                              ; preds = %345, %343, %341
  %.pn = phi { ptr, i32 } [ %346, %345 ], [ %344, %343 ], [ %342, %341 ]
  %.0172 = extractvalue { ptr, i32 } %.pn, 0
  %348 = call ptr @__cxa_begin_catch(ptr %.0172) #9
  %349 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %350 unwind label %374

350:                                              ; preds = %347
  %351 = load ptr, ptr %349, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #9
  %352 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %353 unwind label %376

353:                                              ; preds = %350
  %354 = load ptr, ptr %352, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %7, ptr noundef nonnull align 8 dereferenceable(30) %354, i32 noundef 304)
          to label %355 unwind label %376

355:                                              ; preds = %353
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %351, ptr noundef nonnull align 8 dereferenceable(30) %7, ptr noundef nonnull @.str.71)
          to label %356 unwind label %376

356:                                              ; preds = %355
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  invoke void @__cxa_end_catch()
          to label %357 unwind label %378

357:                                              ; preds = %327, %338, %356
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #9
  %358 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr null) #9
  %359 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %360 unwind label %381

360:                                              ; preds = %357
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %10, ptr noundef nonnull align 8 dereferenceable(33088) %359, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %361 unwind label %383

361:                                              ; preds = %360
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.91") align 8 %8, ptr noundef %358, ptr noundef nonnull %9, ptr noundef nonnull %10)
          to label %362 unwind label %385

362:                                              ; preds = %361
  %363 = call noundef zeroext i1 @_ZSteqISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr null) #9
  %364 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %363)
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  br i1 %364, label %403, label %365

365:                                              ; preds = %362
  %366 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %367 unwind label %389

367:                                              ; preds = %365
  %368 = load ptr, ptr %366, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #9
  %369 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %370 unwind label %391

370:                                              ; preds = %367
  %371 = load ptr, ptr %369, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %13, ptr noundef nonnull align 8 dereferenceable(30) %371, i32 noundef 305)
          to label %372 unwind label %391

372:                                              ; preds = %370
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %368, ptr noundef nonnull align 8 dereferenceable(30) %13, ptr noundef nonnull @.str.73)
          to label %373 unwind label %391

373:                                              ; preds = %372
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  br label %403

374:                                              ; preds = %347
  %375 = landingpad { ptr, i32 }
          cleanup
  br label %380

376:                                              ; preds = %355, %353, %350
  %377 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  br label %380

378:                                              ; preds = %446, %402, %356
  %379 = landingpad { ptr, i32 }
          cleanup
  br label %1708

380:                                              ; preds = %376, %374
  %.pn484 = phi { ptr, i32 } [ %377, %376 ], [ %375, %374 ]
  invoke void @__cxa_end_catch()
          to label %1708 unwind label %1710

381:                                              ; preds = %357
  %382 = landingpad { ptr, i32 }
          catch ptr null
  br label %388

383:                                              ; preds = %360
  %384 = landingpad { ptr, i32 }
          catch ptr null
  br label %387

385:                                              ; preds = %361
  %386 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #9
  br label %387

387:                                              ; preds = %385, %383
  %.pn486 = phi { ptr, i32 } [ %386, %385 ], [ %384, %383 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  br label %388

388:                                              ; preds = %387, %381
  %.pn486.pn = phi { ptr, i32 } [ %.pn486, %387 ], [ %382, %381 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  br label %393

389:                                              ; preds = %365
  %390 = landingpad { ptr, i32 }
          catch ptr null
  br label %393

391:                                              ; preds = %372, %370, %367
  %392 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  br label %393

393:                                              ; preds = %391, %389, %388
  %.pn487 = phi { ptr, i32 } [ %392, %391 ], [ %390, %389 ], [ %.pn486.pn, %388 ]
  %.4176 = extractvalue { ptr, i32 } %.pn487, 0
  %394 = call ptr @__cxa_begin_catch(ptr %.4176) #9
  %395 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %396 unwind label %420

396:                                              ; preds = %393
  %397 = load ptr, ptr %395, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #9
  %398 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %399 unwind label %422

399:                                              ; preds = %396
  %400 = load ptr, ptr %398, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %14, ptr noundef nonnull align 8 dereferenceable(30) %400, i32 noundef 305)
          to label %401 unwind label %422

401:                                              ; preds = %399
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %397, ptr noundef nonnull align 8 dereferenceable(30) %14, ptr noundef nonnull @.str.74)
          to label %402 unwind label %422

402:                                              ; preds = %401
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  invoke void @__cxa_end_catch()
          to label %403 unwind label %378

403:                                              ; preds = %362, %373, %402
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #9
  %404 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %405 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %406 unwind label %425

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

407:                                              ; preds = %406
  call void @_ZNSt10shared_ptrI7HtnTermEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr null) #9
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.91") align 8 %15, ptr noundef %404, ptr noundef nonnull %16, ptr noundef nonnull %19)
          to label %408 unwind label %429

408:                                              ; preds = %407
  %409 = call noundef zeroext i1 @_ZSteqISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr null) #9
  %410 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %409)
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #9
  br i1 %410, label %447, label %411

411:                                              ; preds = %408
  %412 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %413 unwind label %433

413:                                              ; preds = %411
  %414 = load ptr, ptr %412, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #9
  %415 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %416 unwind label %435

416:                                              ; preds = %413
  %417 = load ptr, ptr %415, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %20, ptr noundef nonnull align 8 dereferenceable(30) %417, i32 noundef 306)
          to label %418 unwind label %435

418:                                              ; preds = %416
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %414, ptr noundef nonnull align 8 dereferenceable(30) %20, ptr noundef nonnull @.str.75)
          to label %419 unwind label %435

419:                                              ; preds = %418
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  br label %447

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

422:                                              ; preds = %401, %399, %396
  %423 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  br label %424

424:                                              ; preds = %422, %420
  %.pn488 = phi { ptr, i32 } [ %423, %422 ], [ %421, %420 ]
  invoke void @__cxa_end_catch()
          to label %1708 unwind label %1710

425:                                              ; preds = %403
  %426 = landingpad { ptr, i32 }
          catch ptr null
  br label %432

427:                                              ; preds = %406
  %428 = landingpad { ptr, i32 }
          catch ptr null
  br label %431

429:                                              ; preds = %407
  %430 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #9
  br label %431

431:                                              ; preds = %429, %427
  %.pn490 = phi { ptr, i32 } [ %430, %429 ], [ %428, %427 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  br label %432

432:                                              ; preds = %431, %425
  %.pn490.pn = phi { ptr, i32 } [ %.pn490, %431 ], [ %426, %425 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #9
  br label %437

433:                                              ; preds = %411
  %434 = landingpad { ptr, i32 }
          catch ptr null
  br label %437

435:                                              ; preds = %418, %416, %413
  %436 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  br label %437

437:                                              ; preds = %435, %433, %432
  %.pn491 = phi { ptr, i32 } [ %436, %435 ], [ %434, %433 ], [ %.pn490.pn, %432 ]
  %.8180 = extractvalue { ptr, i32 } %.pn491, 0
  %438 = call ptr @__cxa_begin_catch(ptr %.8180) #9
  %439 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %440 unwind label %470

440:                                              ; preds = %437
  %441 = load ptr, ptr %439, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #9
  %442 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %443 unwind label %472

443:                                              ; preds = %440
  %444 = load ptr, ptr %442, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %21, ptr noundef nonnull align 8 dereferenceable(30) %444, i32 noundef 306)
          to label %445 unwind label %472

445:                                              ; preds = %443
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %441, ptr noundef nonnull align 8 dereferenceable(30) %21, ptr noundef nonnull @.str.76)
          to label %446 unwind label %472

446:                                              ; preds = %445
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  invoke void @__cxa_end_catch()
          to label %447 unwind label %378

447:                                              ; preds = %408, %419, %446
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #9
  %448 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %449 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %450 unwind label %475

450:                                              ; preds = %447
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %23, ptr noundef nonnull align 8 dereferenceable(33088) %449, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %451 unwind label %477

451:                                              ; preds = %450
  %452 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %453 unwind label %479

453:                                              ; preds = %451
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %26, ptr noundef nonnull align 8 dereferenceable(33088) %452, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %454 unwind label %481

454:                                              ; preds = %453
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.91") align 8 %22, ptr noundef %448, ptr noundef nonnull %23, ptr noundef nonnull %26)
          to label %455 unwind label %483

455:                                              ; preds = %454
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #9
  %456 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(24) %456)
          to label %457 unwind label %489

457:                                              ; preds = %455
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %30, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  %458 = invoke noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef nonnull %29, ptr noundef nonnull %30)
          to label %459 unwind label %491

459:                                              ; preds = %457
  %460 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %458)
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #9
  br i1 %460, label %505, label %461

461:                                              ; preds = %459
  %462 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %463 unwind label %489

463:                                              ; preds = %461
  %464 = load ptr, ptr %462, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #9
  %465 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %466 unwind label %493

466:                                              ; preds = %463
  %467 = load ptr, ptr %465, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %31, ptr noundef nonnull align 8 dereferenceable(30) %467, i32 noundef 311)
          to label %468 unwind label %493

468:                                              ; preds = %466
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %464, ptr noundef nonnull align 8 dereferenceable(30) %31, ptr noundef nonnull @.str.78)
          to label %469 unwind label %493

469:                                              ; preds = %468
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #9
  br label %505

470:                                              ; preds = %437
  %471 = landingpad { ptr, i32 }
          cleanup
  br label %474

472:                                              ; preds = %445, %443, %440
  %473 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  br label %474

474:                                              ; preds = %472, %470
  %.pn492 = phi { ptr, i32 } [ %473, %472 ], [ %471, %470 ]
  invoke void @__cxa_end_catch()
          to label %1708 unwind label %1710

475:                                              ; preds = %447
  %476 = landingpad { ptr, i32 }
          cleanup
  br label %488

477:                                              ; preds = %450
  %478 = landingpad { ptr, i32 }
          cleanup
  br label %487

479:                                              ; preds = %451
  %480 = landingpad { ptr, i32 }
          cleanup
  br label %486

481:                                              ; preds = %453
  %482 = landingpad { ptr, i32 }
          cleanup
  br label %485

483:                                              ; preds = %454
  %484 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #9
  br label %485

485:                                              ; preds = %483, %481
  %.pn494 = phi { ptr, i32 } [ %484, %483 ], [ %482, %481 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  br label %486

486:                                              ; preds = %485, %479
  %.pn494.pn = phi { ptr, i32 } [ %.pn494, %485 ], [ %480, %479 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #9
  br label %487

487:                                              ; preds = %486, %477
  %.pn494.pn.pn = phi { ptr, i32 } [ %.pn494.pn, %486 ], [ %478, %477 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  br label %488

488:                                              ; preds = %487, %475
  %.pn494.pn.pn.pn = phi { ptr, i32 } [ %.pn494.pn.pn, %487 ], [ %476, %475 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #9
  br label %1707

489:                                              ; preds = %461, %455
  %490 = landingpad { ptr, i32 }
          catch ptr null
  br label %495

491:                                              ; preds = %457
  %492 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #9
  br label %495

493:                                              ; preds = %468, %466, %463
  %494 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #9
  br label %495

495:                                              ; preds = %493, %491, %489
  %.pn499 = phi { ptr, i32 } [ %494, %493 ], [ %490, %489 ], [ %492, %491 ]
  %.14186 = extractvalue { ptr, i32 } %.pn499, 0
  %496 = call ptr @__cxa_begin_catch(ptr %.14186) #9
  %497 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %498 unwind label %526

498:                                              ; preds = %495
  %499 = load ptr, ptr %497, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #9
  %500 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %501 unwind label %528

501:                                              ; preds = %498
  %502 = load ptr, ptr %500, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %32, ptr noundef nonnull align 8 dereferenceable(30) %502, i32 noundef 311)
          to label %503 unwind label %528

503:                                              ; preds = %501
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %499, ptr noundef nonnull align 8 dereferenceable(30) %32, ptr noundef nonnull @.str.79)
          to label %504 unwind label %528

504:                                              ; preds = %503
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #9
  invoke void @__cxa_end_catch()
          to label %505 unwind label %530

505:                                              ; preds = %459, %469, %504
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #9
  %506 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %507 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %508 unwind label %533

508:                                              ; preds = %505
  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) %507, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %509 unwind label %535

509:                                              ; preds = %508
  %510 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %511 unwind label %537

511:                                              ; preds = %509
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %37, ptr noundef nonnull align 8 dereferenceable(33088) %510, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %512 unwind label %539

512:                                              ; preds = %511
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.91") align 8 %33, ptr noundef %506, ptr noundef nonnull %34, ptr noundef nonnull %37)
          to label %513 unwind label %541

513:                                              ; preds = %512
  %514 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %33) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #9
  %515 = call noundef zeroext i1 @_ZSteqISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr null) #9
  %516 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %515)
  br i1 %516, label %561, label %517

517:                                              ; preds = %513
  %518 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %519 unwind label %547

519:                                              ; preds = %517
  %520 = load ptr, ptr %518, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #9
  %521 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %522 unwind label %549

522:                                              ; preds = %519
  %523 = load ptr, ptr %521, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %40, ptr noundef nonnull align 8 dereferenceable(30) %523, i32 noundef 315)
          to label %524 unwind label %549

524:                                              ; preds = %522
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %520, ptr noundef nonnull align 8 dereferenceable(30) %40, ptr noundef nonnull @.str.81)
          to label %525 unwind label %549

525:                                              ; preds = %524
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #9
  br label %561

526:                                              ; preds = %495
  %527 = landingpad { ptr, i32 }
          cleanup
  br label %532

528:                                              ; preds = %503, %501, %498
  %529 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #9
  br label %532

530:                                              ; preds = %1167, %1011, %855, %744, %641, %560, %504
  %531 = landingpad { ptr, i32 }
          cleanup
  br label %1706

532:                                              ; preds = %528, %526
  %.pn500 = phi { ptr, i32 } [ %529, %528 ], [ %527, %526 ]
  invoke void @__cxa_end_catch()
          to label %1706 unwind label %1710

533:                                              ; preds = %505
  %534 = landingpad { ptr, i32 }
          cleanup
  br label %546

535:                                              ; preds = %508
  %536 = landingpad { ptr, i32 }
          cleanup
  br label %545

537:                                              ; preds = %509
  %538 = landingpad { ptr, i32 }
          cleanup
  br label %544

539:                                              ; preds = %511
  %540 = landingpad { ptr, i32 }
          cleanup
  br label %543

541:                                              ; preds = %512
  %542 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #9
  br label %543

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

544:                                              ; preds = %543, %537
  %.pn502.pn = phi { ptr, i32 } [ %.pn502, %543 ], [ %538, %537 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #9
  br label %545

545:                                              ; preds = %544, %535
  %.pn502.pn.pn = phi { ptr, i32 } [ %.pn502.pn, %544 ], [ %536, %535 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  br label %546

546:                                              ; preds = %545, %533
  %.pn502.pn.pn.pn = phi { ptr, i32 } [ %.pn502.pn.pn, %545 ], [ %534, %533 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #9
  br label %1706

547:                                              ; preds = %517
  %548 = landingpad { ptr, i32 }
          catch ptr null
  br label %551

549:                                              ; preds = %524, %522, %519
  %550 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #9
  br label %551

551:                                              ; preds = %549, %547
  %.pn507 = phi { ptr, i32 } [ %550, %549 ], [ %548, %547 ]
  %.20192 = extractvalue { ptr, i32 } %.pn507, 0
  %552 = call ptr @__cxa_begin_catch(ptr %.20192) #9
  %553 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %554 unwind label %592

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

557:                                              ; preds = %554
  %558 = load ptr, ptr %556, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %41, ptr noundef nonnull align 8 dereferenceable(30) %558, i32 noundef 315)
          to label %559 unwind label %594

559:                                              ; preds = %557
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %555, ptr noundef nonnull align 8 dereferenceable(30) %41, ptr noundef nonnull @.str.82)
          to label %560 unwind label %594

560:                                              ; preds = %559
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #9
  invoke void @__cxa_end_catch()
          to label %561 unwind label %530

561:                                              ; preds = %513, %525, %560
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #9
  %562 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %563 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %45) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %564 unwind label %597

564:                                              ; preds = %561
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %43, ptr noundef nonnull align 8 dereferenceable(33088) %563, ptr noundef nonnull align 8 dereferenceable(32) %44)
          to label %565 unwind label %599

565:                                              ; preds = %564
  %566 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %48) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %567 unwind label %601

567:                                              ; preds = %565
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %46, ptr noundef nonnull align 8 dereferenceable(33088) %566, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %568 unwind label %603

568:                                              ; preds = %567
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.91") align 8 %42, ptr noundef %562, ptr noundef nonnull %43, ptr noundef nonnull %46)
          to label %569 unwind label %605

569:                                              ; preds = %568
  %570 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %42) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #9
  %571 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr noundef nonnull align 8 dereferenceable(24) %571)
          to label %572 unwind label %611

572:                                              ; preds = %569
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %51) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %52) #9
  %573 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %53) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %54) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %574 unwind label %613

574:                                              ; preds = %572
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %52, ptr noundef nonnull align 8 dereferenceable(33088) %573, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %575 unwind label %615

575:                                              ; preds = %574
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %55) #9
  %576 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %56) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %57) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %577 unwind label %617

577:                                              ; preds = %575
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %55, ptr noundef nonnull align 8 dereferenceable(33088) %576, ptr noundef nonnull align 8 dereferenceable(32) %56)
          to label %578 unwind label %619

578:                                              ; preds = %577
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull align 8 dereferenceable(16) %52, ptr noundef nonnull align 8 dereferenceable(16) %55)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %58) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %50, ptr nonnull %51, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %579 unwind label %621

579:                                              ; preds = %578
  %580 = invoke noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef nonnull %49, ptr noundef nonnull %50)
          to label %581 unwind label %623

581:                                              ; preds = %579
  %582 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %580)
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #9
  br i1 %582, label %642, label %583

583:                                              ; preds = %581
  %584 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %585 unwind label %611

585:                                              ; preds = %583
  %586 = load ptr, ptr %584, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %59) #9
  %587 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %588 unwind label %630

588:                                              ; preds = %585
  %589 = load ptr, ptr %587, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %59, ptr noundef nonnull align 8 dereferenceable(30) %589, i32 noundef 319)
          to label %590 unwind label %630

590:                                              ; preds = %588
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %586, ptr noundef nonnull align 8 dereferenceable(30) %59, ptr noundef nonnull @.str.84)
          to label %591 unwind label %630

591:                                              ; preds = %590
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #9
  br label %642

592:                                              ; preds = %551
  %593 = landingpad { ptr, i32 }
          cleanup
  br label %596

594:                                              ; preds = %559, %557, %554
  %595 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #9
  br label %596

596:                                              ; preds = %594, %592
  %.pn508 = phi { ptr, i32 } [ %595, %594 ], [ %593, %592 ]
  invoke void @__cxa_end_catch()
          to label %1706 unwind label %1710

597:                                              ; preds = %561
  %598 = landingpad { ptr, i32 }
          cleanup
  br label %610

599:                                              ; preds = %564
  %600 = landingpad { ptr, i32 }
          cleanup
  br label %609

601:                                              ; preds = %565
  %602 = landingpad { ptr, i32 }
          cleanup
  br label %608

603:                                              ; preds = %567
  %604 = landingpad { ptr, i32 }
          cleanup
  br label %607

605:                                              ; preds = %568
  %606 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #9
  br label %607

607:                                              ; preds = %605, %603
  %.pn510 = phi { ptr, i32 } [ %606, %605 ], [ %604, %603 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  br label %608

608:                                              ; preds = %607, %601
  %.pn510.pn = phi { ptr, i32 } [ %.pn510, %607 ], [ %602, %601 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #9
  br label %609

609:                                              ; preds = %608, %599
  %.pn510.pn.pn = phi { ptr, i32 } [ %.pn510.pn, %608 ], [ %600, %599 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  br label %610

610:                                              ; preds = %609, %597
  %.pn510.pn.pn.pn = phi { ptr, i32 } [ %.pn510.pn.pn, %609 ], [ %598, %597 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #9
  br label %1706

611:                                              ; preds = %583, %569
  %612 = landingpad { ptr, i32 }
          catch ptr null
  br label %632

613:                                              ; preds = %572
  %614 = landingpad { ptr, i32 }
          catch ptr null
  br label %629

615:                                              ; preds = %574
  %616 = landingpad { ptr, i32 }
          catch ptr null
  br label %628

617:                                              ; preds = %575
  %618 = landingpad { ptr, i32 }
          catch ptr null
  br label %627

619:                                              ; preds = %577
  %620 = landingpad { ptr, i32 }
          catch ptr null
  br label %626

621:                                              ; preds = %578
  %622 = landingpad { ptr, i32 }
          catch ptr null
  br label %625

623:                                              ; preds = %579
  %624 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #9
  br label %625

625:                                              ; preds = %623, %621
  %.pn515 = phi { ptr, i32 } [ %624, %623 ], [ %622, %621 ]
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #9
  br label %626

626:                                              ; preds = %625, %619
  %.pn515.pn = phi { ptr, i32 } [ %.pn515, %625 ], [ %620, %619 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #9
  br label %627

627:                                              ; preds = %626, %617
  %.pn515.pn.pn = phi { ptr, i32 } [ %.pn515.pn, %626 ], [ %618, %617 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #9
  br label %628

628:                                              ; preds = %627, %615
  %.pn515.pn.pn.pn = phi { ptr, i32 } [ %.pn515.pn.pn, %627 ], [ %616, %615 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  br label %629

629:                                              ; preds = %628, %613
  %.pn515.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn515.pn.pn.pn, %628 ], [ %614, %613 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #9
  br label %632

630:                                              ; preds = %590, %588, %585
  %631 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #9
  br label %632

632:                                              ; preds = %630, %629, %611
  %.pn516 = phi { ptr, i32 } [ %631, %630 ], [ %612, %611 ], [ %.pn515.pn.pn.pn.pn, %629 ]
  %.31 = extractvalue { ptr, i32 } %.pn516, 0
  %633 = call ptr @__cxa_begin_catch(ptr %.31) #9
  %634 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %635 unwind label %681

635:                                              ; preds = %632
  %636 = load ptr, ptr %634, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %60) #9
  %637 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %638 unwind label %683

638:                                              ; preds = %635
  %639 = load ptr, ptr %637, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %60, ptr noundef nonnull align 8 dereferenceable(30) %639, i32 noundef 319)
          to label %640 unwind label %683

640:                                              ; preds = %638
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %636, ptr noundef nonnull align 8 dereferenceable(30) %60, ptr noundef nonnull @.str.85)
          to label %641 unwind label %683

641:                                              ; preds = %640
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #9
  invoke void @__cxa_end_catch()
          to label %642 unwind label %530

642:                                              ; preds = %581, %591, %641
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %61) #9
  %643 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %644 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %63) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %64) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull @.str.86, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %645 unwind label %686

645:                                              ; preds = %642
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %66) #9
  %646 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %67) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %68) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef nonnull @.str.87, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %647 unwind label %688

647:                                              ; preds = %645
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %66, ptr noundef nonnull align 8 dereferenceable(33088) %646, ptr noundef nonnull align 8 dereferenceable(32) %67)
          to label %648 unwind label %690

648:                                              ; preds = %647
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %69) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %65, ptr nonnull %66, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %69)
          to label %649 unwind label %692

649:                                              ; preds = %648
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %62, ptr noundef nonnull align 8 dereferenceable(33088) %644, ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull %65)
          to label %650 unwind label %694

650:                                              ; preds = %649
  %651 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %71) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %72) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull @.str.86, ptr noundef nonnull align 1 dereferenceable(1) %72)
          to label %652 unwind label %696

652:                                              ; preds = %650
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %74) #9
  %653 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %75) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %76) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %76)
          to label %654 unwind label %698

654:                                              ; preds = %652
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %74, ptr noundef nonnull align 8 dereferenceable(33088) %653, ptr noundef nonnull align 8 dereferenceable(32) %75)
          to label %655 unwind label %700

655:                                              ; preds = %654
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %77) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %73, ptr nonnull %74, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %656 unwind label %702

656:                                              ; preds = %655
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %70, ptr noundef nonnull align 8 dereferenceable(33088) %651, ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull %73)
          to label %657 unwind label %704

657:                                              ; preds = %656
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.91") align 8 %61, ptr noundef %643, ptr noundef nonnull %62, ptr noundef nonnull %70)
          to label %658 unwind label %706

658:                                              ; preds = %657
  %659 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %61) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %61) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %74) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %69) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %68) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #9
  %660 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %78, ptr noundef nonnull align 8 dereferenceable(24) %660)
          to label %661 unwind label %714

661:                                              ; preds = %658
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %80) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %81) #9
  %662 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %82) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %83) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %83)
          to label %663 unwind label %716

663:                                              ; preds = %661
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %81, ptr noundef nonnull align 8 dereferenceable(33088) %662, ptr noundef nonnull align 8 dereferenceable(32) %82)
          to label %664 unwind label %718

664:                                              ; preds = %663
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %84) #9
  %665 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %85) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %86) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull @.str.87, ptr noundef nonnull align 1 dereferenceable(1) %86)
          to label %666 unwind label %720

666:                                              ; preds = %664
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %84, ptr noundef nonnull align 8 dereferenceable(33088) %665, ptr noundef nonnull align 8 dereferenceable(32) %85)
          to label %667 unwind label %722

667:                                              ; preds = %666
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull align 8 dereferenceable(16) %81, ptr noundef nonnull align 8 dereferenceable(16) %84)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %87) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %79, ptr nonnull %80, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %87)
          to label %668 unwind label %724

668:                                              ; preds = %667
  %669 = invoke noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef nonnull %78, ptr noundef nonnull %79)
          to label %670 unwind label %726

670:                                              ; preds = %668
  %671 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %669)
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %87) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %86) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %85) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %84) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %83) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #9
  br i1 %671, label %745, label %672

672:                                              ; preds = %670
  %673 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %674 unwind label %714

674:                                              ; preds = %672
  %675 = load ptr, ptr %673, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %88) #9
  %676 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %677 unwind label %733

677:                                              ; preds = %674
  %678 = load ptr, ptr %676, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %88, ptr noundef nonnull align 8 dereferenceable(30) %678, i32 noundef 324)
          to label %679 unwind label %733

679:                                              ; preds = %677
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %675, ptr noundef nonnull align 8 dereferenceable(30) %88, ptr noundef nonnull @.str.88)
          to label %680 unwind label %733

680:                                              ; preds = %679
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %88) #9
  br label %745

681:                                              ; preds = %632
  %682 = landingpad { ptr, i32 }
          cleanup
  br label %685

683:                                              ; preds = %640, %638, %635
  %684 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #9
  br label %685

685:                                              ; preds = %683, %681
  %.pn517 = phi { ptr, i32 } [ %684, %683 ], [ %682, %681 ]
  invoke void @__cxa_end_catch()
          to label %1706 unwind label %1710

686:                                              ; preds = %642
  %687 = landingpad { ptr, i32 }
          cleanup
  br label %713

688:                                              ; preds = %645
  %689 = landingpad { ptr, i32 }
          cleanup
  br label %712

690:                                              ; preds = %647
  %691 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit825

692:                                              ; preds = %648
  %693 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit825.loopexit

694:                                              ; preds = %649
  %695 = landingpad { ptr, i32 }
          cleanup
  br label %711

696:                                              ; preds = %650
  %697 = landingpad { ptr, i32 }
          cleanup
  br label %710

698:                                              ; preds = %652
  %699 = landingpad { ptr, i32 }
          cleanup
  br label %709

700:                                              ; preds = %654
  %701 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit826

702:                                              ; preds = %655
  %703 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit826.loopexit

704:                                              ; preds = %656
  %705 = landingpad { ptr, i32 }
          cleanup
  br label %708

706:                                              ; preds = %657
  %707 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #9
  br label %708

708:                                              ; preds = %706, %704
  %.pn519 = phi { ptr, i32 } [ %707, %706 ], [ %705, %704 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #9
  br label %.loopexit826.loopexit

.loopexit826.loopexit:                            ; preds = %708, %702
  %.pn519.pn = phi { ptr, i32 } [ %.pn519, %708 ], [ %703, %702 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %74) #9
  br label %.loopexit826

.loopexit826:                                     ; preds = %.loopexit826.loopexit, %700
  %.pn519.pn.pn = phi { ptr, i32 } [ %701, %700 ], [ %.pn519.pn, %.loopexit826.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #9
  br label %709

709:                                              ; preds = %.loopexit826, %698
  %.pn519.pn.pn.pn = phi { ptr, i32 } [ %.pn519.pn.pn, %.loopexit826 ], [ %699, %698 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #9
  br label %710

710:                                              ; preds = %709, %696
  %.pn519.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn519.pn.pn.pn, %709 ], [ %697, %696 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #9
  br label %711

711:                                              ; preds = %710, %694
  %.pn519.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn519.pn.pn.pn.pn, %710 ], [ %695, %694 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #9
  br label %.loopexit825.loopexit

.loopexit825.loopexit:                            ; preds = %711, %692
  %.pn519.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn519.pn.pn.pn.pn.pn, %711 ], [ %693, %692 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %69) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #9
  br label %.loopexit825

.loopexit825:                                     ; preds = %.loopexit825.loopexit, %690
  %.pn519.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %691, %690 ], [ %.pn519.pn.pn.pn.pn.pn.pn, %.loopexit825.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #9
  br label %712

712:                                              ; preds = %.loopexit825, %688
  %.pn519.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn519.pn.pn.pn.pn.pn.pn.pn, %.loopexit825 ], [ %689, %688 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %68) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #9
  br label %713

713:                                              ; preds = %712, %686
  %.pn519.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn519.pn.pn.pn.pn.pn.pn.pn.pn, %712 ], [ %687, %686 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #9
  br label %1706

714:                                              ; preds = %672, %658
  %715 = landingpad { ptr, i32 }
          catch ptr null
  br label %735

716:                                              ; preds = %661
  %717 = landingpad { ptr, i32 }
          catch ptr null
  br label %732

718:                                              ; preds = %663
  %719 = landingpad { ptr, i32 }
          catch ptr null
  br label %731

720:                                              ; preds = %664
  %721 = landingpad { ptr, i32 }
          catch ptr null
  br label %730

722:                                              ; preds = %666
  %723 = landingpad { ptr, i32 }
          catch ptr null
  br label %729

724:                                              ; preds = %667
  %725 = landingpad { ptr, i32 }
          catch ptr null
  br label %728

726:                                              ; preds = %668
  %727 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #9
  br label %728

728:                                              ; preds = %726, %724
  %.pn530 = phi { ptr, i32 } [ %727, %726 ], [ %725, %724 ]
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %87) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #9
  br label %729

729:                                              ; preds = %728, %722
  %.pn530.pn = phi { ptr, i32 } [ %.pn530, %728 ], [ %723, %722 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #9
  br label %730

730:                                              ; preds = %729, %720
  %.pn530.pn.pn = phi { ptr, i32 } [ %.pn530.pn, %729 ], [ %721, %720 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %86) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %85) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %84) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #9
  br label %731

731:                                              ; preds = %730, %718
  %.pn530.pn.pn.pn = phi { ptr, i32 } [ %.pn530.pn.pn, %730 ], [ %719, %718 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #9
  br label %732

732:                                              ; preds = %731, %716
  %.pn530.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn530.pn.pn.pn, %731 ], [ %717, %716 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %83) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #9
  br label %735

733:                                              ; preds = %679, %677, %674
  %734 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %88) #9
  br label %735

735:                                              ; preds = %733, %732, %714
  %.pn531 = phi { ptr, i32 } [ %734, %733 ], [ %715, %714 ], [ %.pn530.pn.pn.pn.pn, %732 ]
  %.48 = extractvalue { ptr, i32 } %.pn531, 0
  %736 = call ptr @__cxa_begin_catch(ptr %.48) #9
  %737 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %738 unwind label %787

738:                                              ; preds = %735
  %739 = load ptr, ptr %737, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %89) #9
  %740 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %741 unwind label %789

741:                                              ; preds = %738
  %742 = load ptr, ptr %740, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %89, ptr noundef nonnull align 8 dereferenceable(30) %742, i32 noundef 324)
          to label %743 unwind label %789

743:                                              ; preds = %741
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %739, ptr noundef nonnull align 8 dereferenceable(30) %89, ptr noundef nonnull @.str.89)
          to label %744 unwind label %789

744:                                              ; preds = %743
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %89) #9
  invoke void @__cxa_end_catch()
          to label %745 unwind label %530

745:                                              ; preds = %670, %680, %744
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %90) #9
  %746 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %747 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %92) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %93) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %93)
          to label %748 unwind label %792

748:                                              ; preds = %745
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %95) #9
  %749 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %96) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %97) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %97)
          to label %750 unwind label %.thread673

750:                                              ; preds = %748
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %95, ptr noundef nonnull align 8 dereferenceable(33088) %749, ptr noundef nonnull align 8 dereferenceable(32) %96)
          to label %751 unwind label %795

751:                                              ; preds = %750
  %752 = getelementptr inbounds i8, ptr %95, i64 16
  %753 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %98) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %99) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %99)
          to label %754 unwind label %797

754:                                              ; preds = %751
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %752, ptr noundef nonnull align 8 dereferenceable(33088) %753, ptr noundef nonnull align 8 dereferenceable(32) %98)
          to label %755 unwind label %799

755:                                              ; preds = %754
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %100) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %94, ptr nonnull %95, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %100)
          to label %756 unwind label %801

756:                                              ; preds = %755
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %91, ptr noundef nonnull align 8 dereferenceable(33088) %747, ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull %94)
          to label %757 unwind label %803

757:                                              ; preds = %756
  %758 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %102) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %103) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %103)
          to label %759 unwind label %805

759:                                              ; preds = %757
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %105) #9
  %760 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %106) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %107) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %107)
          to label %761 unwind label %.thread

761:                                              ; preds = %759
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %105, ptr noundef nonnull align 8 dereferenceable(33088) %760, ptr noundef nonnull align 8 dereferenceable(32) %106)
          to label %762 unwind label %808

762:                                              ; preds = %761
  %763 = getelementptr inbounds i8, ptr %105, i64 16
  %764 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %108) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %109) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %109) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %108, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %109)
          to label %765 unwind label %810

765:                                              ; preds = %762
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %763, ptr noundef nonnull align 8 dereferenceable(33088) %764, ptr noundef nonnull align 8 dereferenceable(32) %108)
          to label %766 unwind label %812

766:                                              ; preds = %765
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %110) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %104, ptr nonnull %105, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %110)
          to label %767 unwind label %814

767:                                              ; preds = %766
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %101, ptr noundef nonnull align 8 dereferenceable(33088) %758, ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull %104)
          to label %768 unwind label %816

768:                                              ; preds = %767
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.91") align 8 %90, ptr noundef %746, ptr noundef nonnull %91, ptr noundef nonnull %101)
          to label %769 unwind label %818

769:                                              ; preds = %768
  %770 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %90) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %101) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %104) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %110) #9
  %771 = getelementptr inbounds i8, ptr %105, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %771) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %105) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %109) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %109) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %108) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %107) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %106) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %105) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %103) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %102) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %94) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %100) #9
  %772 = getelementptr inbounds i8, ptr %95, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %772) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %99) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %98) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %93) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %92) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %90) #9
  %773 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %111, ptr noundef nonnull align 8 dereferenceable(24) %773)
          to label %774 unwind label %840

774:                                              ; preds = %769
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %112, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %112) #9
  %775 = invoke noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef nonnull %111, ptr noundef nonnull %112)
          to label %776 unwind label %842

776:                                              ; preds = %774
  %777 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %775)
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %112) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %111) #9
  br i1 %777, label %856, label %778

778:                                              ; preds = %776
  %779 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %780 unwind label %840

780:                                              ; preds = %778
  %781 = load ptr, ptr %779, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %113) #9
  %782 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %783 unwind label %844

783:                                              ; preds = %780
  %784 = load ptr, ptr %782, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %113, ptr noundef nonnull align 8 dereferenceable(30) %784, i32 noundef 329)
          to label %785 unwind label %844

785:                                              ; preds = %783
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %781, ptr noundef nonnull align 8 dereferenceable(30) %113, ptr noundef nonnull @.str.78)
          to label %786 unwind label %844

786:                                              ; preds = %785
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %113) #9
  br label %856

787:                                              ; preds = %735
  %788 = landingpad { ptr, i32 }
          cleanup
  br label %791

789:                                              ; preds = %743, %741, %738
  %790 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %89) #9
  br label %791

791:                                              ; preds = %789, %787
  %.pn532 = phi { ptr, i32 } [ %790, %789 ], [ %788, %787 ]
  invoke void @__cxa_end_catch()
          to label %1706 unwind label %1710

792:                                              ; preds = %745
  %793 = landingpad { ptr, i32 }
          cleanup
  br label %839

.thread673:                                       ; preds = %748
  %794 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #9
  br label %.loopexit820

795:                                              ; preds = %750
  %796 = landingpad { ptr, i32 }
          cleanup
  br label %834

797:                                              ; preds = %751
  %798 = landingpad { ptr, i32 }
          cleanup
  br label %833

799:                                              ; preds = %754
  %800 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit821

801:                                              ; preds = %755
  %802 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit821.loopexit

803:                                              ; preds = %756
  %804 = landingpad { ptr, i32 }
          cleanup
  br label %830

805:                                              ; preds = %757
  %806 = landingpad { ptr, i32 }
          cleanup
  br label %829

.thread:                                          ; preds = %759
  %807 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %107) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %106) #9
  br label %.loopexit823

808:                                              ; preds = %761
  %809 = landingpad { ptr, i32 }
          cleanup
  br label %824

810:                                              ; preds = %762
  %811 = landingpad { ptr, i32 }
          cleanup
  br label %823

812:                                              ; preds = %765
  %813 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit824

814:                                              ; preds = %766
  %815 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit824.loopexit

816:                                              ; preds = %767
  %817 = landingpad { ptr, i32 }
          cleanup
  br label %820

818:                                              ; preds = %768
  %819 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %101) #9
  br label %820

820:                                              ; preds = %818, %816
  %.pn534 = phi { ptr, i32 } [ %819, %818 ], [ %817, %816 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %104) #9
  br label %.loopexit824.loopexit

.loopexit824.loopexit:                            ; preds = %820, %814
  %.pn534.pn = phi { ptr, i32 } [ %.pn534, %820 ], [ %815, %814 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %110) #9
  %821 = getelementptr inbounds i8, ptr %105, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %821) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %105) #9
  br label %.loopexit824

.loopexit824:                                     ; preds = %.loopexit824.loopexit, %812
  %822 = phi i1 [ false, %812 ], [ true, %.loopexit824.loopexit ]
  %.pn534.pn.pn = phi { ptr, i32 } [ %813, %812 ], [ %.pn534.pn, %.loopexit824.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #9
  br label %823

823:                                              ; preds = %.loopexit824, %810
  %.1377 = phi i1 [ %822, %.loopexit824 ], [ false, %810 ]
  %.pn534.pn.pn.pn = phi { ptr, i32 } [ %.pn534.pn.pn, %.loopexit824 ], [ %811, %810 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %109) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %109) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %108) #9
  br label %824

824:                                              ; preds = %808, %823
  %.2378 = phi i1 [ %.1377, %823 ], [ false, %808 ]
  %.0374 = phi ptr [ %763, %823 ], [ %105, %808 ]
  %.pn534.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn534.pn.pn.pn, %823 ], [ %809, %808 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %107) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %106) #9
  %825 = icmp eq ptr %105, %.0374
  %or.cond13 = select i1 %.2378, i1 true, i1 %825
  br i1 %or.cond13, label %.loopexit823, label %.preheader822

.preheader822:                                    ; preds = %824, %.preheader822
  %826 = phi ptr [ %827, %.preheader822 ], [ %.0374, %824 ]
  %827 = getelementptr inbounds i8, ptr %826, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %827) #9
  %828 = icmp eq ptr %827, %105
  br i1 %828, label %.loopexit823, label %.preheader822

.loopexit823:                                     ; preds = %.preheader822, %.thread, %824
  %.pn534.pn.pn.pn.pn.pn672 = phi { ptr, i32 } [ %807, %.thread ], [ %.pn534.pn.pn.pn.pn, %824 ], [ %.pn534.pn.pn.pn.pn, %.preheader822 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %105) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #9
  br label %829

829:                                              ; preds = %.loopexit823, %805
  %.pn534.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn534.pn.pn.pn.pn.pn672, %.loopexit823 ], [ %806, %805 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %103) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %102) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #9
  br label %830

830:                                              ; preds = %829, %803
  %.pn534.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn534.pn.pn.pn.pn.pn.pn, %829 ], [ %804, %803 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %94) #9
  br label %.loopexit821.loopexit

.loopexit821.loopexit:                            ; preds = %830, %801
  %.pn534.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn534.pn.pn.pn.pn.pn.pn.pn, %830 ], [ %802, %801 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %100) #9
  %831 = getelementptr inbounds i8, ptr %95, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %831) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #9
  br label %.loopexit821

.loopexit821:                                     ; preds = %.loopexit821.loopexit, %799
  %832 = phi i1 [ false, %799 ], [ true, %.loopexit821.loopexit ]
  %.pn534.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %800, %799 ], [ %.pn534.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit821.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #9
  br label %833

833:                                              ; preds = %.loopexit821, %797
  %.1366 = phi i1 [ %832, %.loopexit821 ], [ false, %797 ]
  %.pn534.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn534.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit821 ], [ %798, %797 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %99) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %98) #9
  br label %834

834:                                              ; preds = %795, %833
  %.2367 = phi i1 [ %.1366, %833 ], [ false, %795 ]
  %.0363 = phi ptr [ %752, %833 ], [ %95, %795 ]
  %.pn534.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn534.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %833 ], [ %796, %795 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #9
  %835 = icmp eq ptr %95, %.0363
  %or.cond16 = select i1 %.2367, i1 true, i1 %835
  br i1 %or.cond16, label %.loopexit820, label %.preheader819

.preheader819:                                    ; preds = %834, %.preheader819
  %836 = phi ptr [ %837, %.preheader819 ], [ %.0363, %834 ]
  %837 = getelementptr inbounds i8, ptr %836, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %837) #9
  %838 = icmp eq ptr %837, %95
  br i1 %838, label %.loopexit820, label %.preheader819

.loopexit820:                                     ; preds = %.preheader819, %.thread673, %834
  %.pn534.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn678 = phi { ptr, i32 } [ %794, %.thread673 ], [ %.pn534.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %834 ], [ %.pn534.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.preheader819 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #9
  br label %839

839:                                              ; preds = %.loopexit820, %792
  %.pn534.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn534.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn678, %.loopexit820 ], [ %793, %792 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %93) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %92) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %90) #9
  br label %1706

840:                                              ; preds = %778, %769
  %841 = landingpad { ptr, i32 }
          catch ptr null
  br label %846

842:                                              ; preds = %774
  %843 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %112) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %111) #9
  br label %846

844:                                              ; preds = %785, %783, %780
  %845 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %113) #9
  br label %846

846:                                              ; preds = %844, %842, %840
  %.pn549 = phi { ptr, i32 } [ %845, %844 ], [ %841, %840 ], [ %843, %842 ]
  %.64 = extractvalue { ptr, i32 } %.pn549, 0
  %847 = call ptr @__cxa_begin_catch(ptr %.64) #9
  %848 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %849 unwind label %913

849:                                              ; preds = %846
  %850 = load ptr, ptr %848, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %114) #9
  %851 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %852 unwind label %915

852:                                              ; preds = %849
  %853 = load ptr, ptr %851, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %114, ptr noundef nonnull align 8 dereferenceable(30) %853, i32 noundef 329)
          to label %854 unwind label %915

854:                                              ; preds = %852
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %850, ptr noundef nonnull align 8 dereferenceable(30) %114, ptr noundef nonnull @.str.79)
          to label %855 unwind label %915

855:                                              ; preds = %854
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %114) #9
  invoke void @__cxa_end_catch()
          to label %856 unwind label %530

856:                                              ; preds = %776, %786, %855
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %115) #9
  %857 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %858 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %117) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %118) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %118) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef nonnull @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %118)
          to label %859 unwind label %918

859:                                              ; preds = %856
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %120) #9
  %860 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %121) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %122) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %122)
          to label %861 unwind label %.thread685

861:                                              ; preds = %859
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %120, ptr noundef nonnull align 8 dereferenceable(33088) %860, ptr noundef nonnull align 8 dereferenceable(32) %121)
          to label %862 unwind label %921

862:                                              ; preds = %861
  %863 = getelementptr inbounds i8, ptr %120, i64 16
  %864 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %123) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %124) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %124) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %123, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %124)
          to label %865 unwind label %923

865:                                              ; preds = %862
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %863, ptr noundef nonnull align 8 dereferenceable(33088) %864, ptr noundef nonnull align 8 dereferenceable(32) %123)
          to label %866 unwind label %925

866:                                              ; preds = %865
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %125) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %125) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %119, ptr nonnull %120, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %125)
          to label %867 unwind label %927

867:                                              ; preds = %866
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %116, ptr noundef nonnull align 8 dereferenceable(33088) %858, ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef nonnull %119)
          to label %868 unwind label %929

868:                                              ; preds = %867
  %869 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %127) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %128) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %128) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef nonnull @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %128)
          to label %870 unwind label %931

870:                                              ; preds = %868
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %130) #9
  %871 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %131) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %132) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %131, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %132)
          to label %872 unwind label %.thread679

872:                                              ; preds = %870
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %130, ptr noundef nonnull align 8 dereferenceable(33088) %871, ptr noundef nonnull align 8 dereferenceable(32) %131)
          to label %873 unwind label %934

873:                                              ; preds = %872
  %874 = getelementptr inbounds i8, ptr %130, i64 16
  %875 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %133) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %134) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %134) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %133, ptr noundef nonnull @.str.91, ptr noundef nonnull align 1 dereferenceable(1) %134)
          to label %876 unwind label %936

876:                                              ; preds = %873
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %874, ptr noundef nonnull align 8 dereferenceable(33088) %875, ptr noundef nonnull align 8 dereferenceable(32) %133)
          to label %877 unwind label %938

877:                                              ; preds = %876
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %135) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %135) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %129, ptr nonnull %130, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %135)
          to label %878 unwind label %940

878:                                              ; preds = %877
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %126, ptr noundef nonnull align 8 dereferenceable(33088) %869, ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef nonnull %129)
          to label %879 unwind label %942

879:                                              ; preds = %878
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.91") align 8 %115, ptr noundef %857, ptr noundef nonnull %116, ptr noundef nonnull %126)
          to label %880 unwind label %944

880:                                              ; preds = %879
  %881 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %115) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %115) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %126) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %129) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %135) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %135) #9
  %882 = getelementptr inbounds i8, ptr %130, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %882) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %130) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %134) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %134) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %133) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %132) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %131) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %130) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %128) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %128) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %127) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %116) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %119) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %125) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %125) #9
  %883 = getelementptr inbounds i8, ptr %120, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %883) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %124) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %124) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %123) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %122) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %121) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %120) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %118) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %118) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %117) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %115) #9
  %884 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %136, ptr noundef nonnull align 8 dereferenceable(24) %884)
          to label %885 unwind label %966

885:                                              ; preds = %880
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %138) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %139) #9
  %886 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %140) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %141) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %141)
          to label %887 unwind label %.thread691

887:                                              ; preds = %885
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %139, ptr noundef nonnull align 8 dereferenceable(33088) %886, ptr noundef nonnull align 8 dereferenceable(32) %140)
          to label %888 unwind label %969

888:                                              ; preds = %887
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %142) #9
  %889 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %143) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %144) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %144) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %143, ptr noundef nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %144)
          to label %890 unwind label %971

890:                                              ; preds = %888
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %142, ptr noundef nonnull align 8 dereferenceable(33088) %889, ptr noundef nonnull align 8 dereferenceable(32) %143)
          to label %891 unwind label %973

891:                                              ; preds = %890
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef nonnull align 8 dereferenceable(16) %139, ptr noundef nonnull align 8 dereferenceable(16) %142)
  %892 = getelementptr inbounds i8, ptr %138, i64 32
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %145) #9
  %893 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %146) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %147) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %147) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef nonnull @.str.91, ptr noundef nonnull align 1 dereferenceable(1) %147)
          to label %894 unwind label %975

894:                                              ; preds = %891
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %145, ptr noundef nonnull align 8 dereferenceable(33088) %893, ptr noundef nonnull align 8 dereferenceable(32) %146)
          to label %895 unwind label %977

895:                                              ; preds = %894
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %148) #9
  %896 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %149) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %150) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %150) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %149, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %150)
          to label %897 unwind label %979

897:                                              ; preds = %895
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %148, ptr noundef nonnull align 8 dereferenceable(33088) %896, ptr noundef nonnull align 8 dereferenceable(32) %149)
          to label %898 unwind label %981

898:                                              ; preds = %897
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %892, ptr noundef nonnull align 8 dereferenceable(16) %145, ptr noundef nonnull align 8 dereferenceable(16) %148)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %151) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %151) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %137, ptr nonnull %138, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %151)
          to label %899 unwind label %983

899:                                              ; preds = %898
  %900 = invoke noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef nonnull %136, ptr noundef nonnull %137)
          to label %901 unwind label %985

901:                                              ; preds = %899
  %902 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %900)
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %137) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %151) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %151) #9
  %903 = getelementptr inbounds i8, ptr %138, i64 32
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %903) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %148) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %150) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %150) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %149) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %148) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %145) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %147) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %147) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %146) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %145) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %142) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %144) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %144) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %143) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %142) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %139) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %141) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %140) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %139) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %138) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %136) #9
  br i1 %902, label %1012, label %904

904:                                              ; preds = %901
  %905 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %906 unwind label %966

906:                                              ; preds = %904
  %907 = load ptr, ptr %905, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %152) #9
  %908 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %909 unwind label %1000

909:                                              ; preds = %906
  %910 = load ptr, ptr %908, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %152, ptr noundef nonnull align 8 dereferenceable(30) %910, i32 noundef 335)
          to label %911 unwind label %1000

911:                                              ; preds = %909
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %907, ptr noundef nonnull align 8 dereferenceable(30) %152, ptr noundef nonnull @.str.92)
          to label %912 unwind label %1000

912:                                              ; preds = %911
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %152) #9
  br label %1012

913:                                              ; preds = %846
  %914 = landingpad { ptr, i32 }
          cleanup
  br label %917

915:                                              ; preds = %854, %852, %849
  %916 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %114) #9
  br label %917

917:                                              ; preds = %915, %913
  %.pn550 = phi { ptr, i32 } [ %916, %915 ], [ %914, %913 ]
  invoke void @__cxa_end_catch()
          to label %1706 unwind label %1710

918:                                              ; preds = %856
  %919 = landingpad { ptr, i32 }
          cleanup
  br label %965

.thread685:                                       ; preds = %859
  %920 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %122) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %121) #9
  br label %.loopexit814

921:                                              ; preds = %861
  %922 = landingpad { ptr, i32 }
          cleanup
  br label %960

923:                                              ; preds = %862
  %924 = landingpad { ptr, i32 }
          cleanup
  br label %959

925:                                              ; preds = %865
  %926 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit815

927:                                              ; preds = %866
  %928 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit815.loopexit

929:                                              ; preds = %867
  %930 = landingpad { ptr, i32 }
          cleanup
  br label %956

931:                                              ; preds = %868
  %932 = landingpad { ptr, i32 }
          cleanup
  br label %955

.thread679:                                       ; preds = %870
  %933 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %132) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %131) #9
  br label %.loopexit817

934:                                              ; preds = %872
  %935 = landingpad { ptr, i32 }
          cleanup
  br label %950

936:                                              ; preds = %873
  %937 = landingpad { ptr, i32 }
          cleanup
  br label %949

938:                                              ; preds = %876
  %939 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit818

940:                                              ; preds = %877
  %941 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit818.loopexit

942:                                              ; preds = %878
  %943 = landingpad { ptr, i32 }
          cleanup
  br label %946

944:                                              ; preds = %879
  %945 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %126) #9
  br label %946

946:                                              ; preds = %944, %942
  %.pn552 = phi { ptr, i32 } [ %945, %944 ], [ %943, %942 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %129) #9
  br label %.loopexit818.loopexit

.loopexit818.loopexit:                            ; preds = %946, %940
  %.pn552.pn = phi { ptr, i32 } [ %.pn552, %946 ], [ %941, %940 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %135) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %135) #9
  %947 = getelementptr inbounds i8, ptr %130, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %947) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %130) #9
  br label %.loopexit818

.loopexit818:                                     ; preds = %.loopexit818.loopexit, %938
  %948 = phi i1 [ false, %938 ], [ true, %.loopexit818.loopexit ]
  %.pn552.pn.pn = phi { ptr, i32 } [ %939, %938 ], [ %.pn552.pn, %.loopexit818.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #9
  br label %949

949:                                              ; preds = %.loopexit818, %936
  %.1404 = phi i1 [ %948, %.loopexit818 ], [ false, %936 ]
  %.pn552.pn.pn.pn = phi { ptr, i32 } [ %.pn552.pn.pn, %.loopexit818 ], [ %937, %936 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %134) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %134) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %133) #9
  br label %950

950:                                              ; preds = %934, %949
  %.2405 = phi i1 [ %.1404, %949 ], [ false, %934 ]
  %.0401 = phi ptr [ %874, %949 ], [ %130, %934 ]
  %.pn552.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn552.pn.pn.pn, %949 ], [ %935, %934 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %132) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %131) #9
  %951 = icmp eq ptr %130, %.0401
  %or.cond19 = select i1 %.2405, i1 true, i1 %951
  br i1 %or.cond19, label %.loopexit817, label %.preheader816

.preheader816:                                    ; preds = %950, %.preheader816
  %952 = phi ptr [ %953, %.preheader816 ], [ %.0401, %950 ]
  %953 = getelementptr inbounds i8, ptr %952, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %953) #9
  %954 = icmp eq ptr %953, %130
  br i1 %954, label %.loopexit817, label %.preheader816

.loopexit817:                                     ; preds = %.preheader816, %.thread679, %950
  %.pn552.pn.pn.pn.pn.pn684 = phi { ptr, i32 } [ %933, %.thread679 ], [ %.pn552.pn.pn.pn.pn, %950 ], [ %.pn552.pn.pn.pn.pn, %.preheader816 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %130) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #9
  br label %955

955:                                              ; preds = %.loopexit817, %931
  %.pn552.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn552.pn.pn.pn.pn.pn684, %.loopexit817 ], [ %932, %931 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %128) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %128) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %127) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %116) #9
  br label %956

956:                                              ; preds = %955, %929
  %.pn552.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn552.pn.pn.pn.pn.pn.pn, %955 ], [ %930, %929 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %119) #9
  br label %.loopexit815.loopexit

.loopexit815.loopexit:                            ; preds = %956, %927
  %.pn552.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn552.pn.pn.pn.pn.pn.pn.pn, %956 ], [ %928, %927 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %125) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %125) #9
  %957 = getelementptr inbounds i8, ptr %120, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %957) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #9
  br label %.loopexit815

.loopexit815:                                     ; preds = %.loopexit815.loopexit, %925
  %958 = phi i1 [ false, %925 ], [ true, %.loopexit815.loopexit ]
  %.pn552.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %926, %925 ], [ %.pn552.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit815.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #9
  br label %959

959:                                              ; preds = %.loopexit815, %923
  %.1398 = phi i1 [ %958, %.loopexit815 ], [ false, %923 ]
  %.pn552.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn552.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit815 ], [ %924, %923 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %124) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %124) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %123) #9
  br label %960

960:                                              ; preds = %921, %959
  %.2399 = phi i1 [ %.1398, %959 ], [ false, %921 ]
  %.0395 = phi ptr [ %863, %959 ], [ %120, %921 ]
  %.pn552.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn552.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %959 ], [ %922, %921 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %122) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %121) #9
  %961 = icmp eq ptr %120, %.0395
  %or.cond22 = select i1 %.2399, i1 true, i1 %961
  br i1 %or.cond22, label %.loopexit814, label %.preheader813

.preheader813:                                    ; preds = %960, %.preheader813
  %962 = phi ptr [ %963, %.preheader813 ], [ %.0395, %960 ]
  %963 = getelementptr inbounds i8, ptr %962, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %963) #9
  %964 = icmp eq ptr %963, %120
  br i1 %964, label %.loopexit814, label %.preheader813

.loopexit814:                                     ; preds = %.preheader813, %.thread685, %960
  %.pn552.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn690 = phi { ptr, i32 } [ %920, %.thread685 ], [ %.pn552.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %960 ], [ %.pn552.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.preheader813 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %120) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #9
  br label %965

965:                                              ; preds = %.loopexit814, %918
  %.pn552.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn552.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn690, %.loopexit814 ], [ %919, %918 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %118) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %118) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %117) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %115) #9
  br label %1706

966:                                              ; preds = %904, %880
  %967 = landingpad { ptr, i32 }
          catch ptr null
  br label %1002

.thread691:                                       ; preds = %885
  %968 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %141) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %140) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %139) #9
  br label %.loopexit812

969:                                              ; preds = %887
  %970 = landingpad { ptr, i32 }
          catch ptr null
  br label %995

971:                                              ; preds = %888
  %972 = landingpad { ptr, i32 }
          catch ptr null
  br label %994

973:                                              ; preds = %890
  %974 = landingpad { ptr, i32 }
          catch ptr null
  br label %993

975:                                              ; preds = %891
  %976 = landingpad { ptr, i32 }
          catch ptr null
  br label %992

977:                                              ; preds = %894
  %978 = landingpad { ptr, i32 }
          catch ptr null
  br label %991

979:                                              ; preds = %895
  %980 = landingpad { ptr, i32 }
          catch ptr null
  br label %990

981:                                              ; preds = %897
  %982 = landingpad { ptr, i32 }
          catch ptr null
  br label %989

983:                                              ; preds = %898
  %984 = landingpad { ptr, i32 }
          catch ptr null
  br label %987

985:                                              ; preds = %899
  %986 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %137) #9
  br label %987

987:                                              ; preds = %985, %983
  %.pn567 = phi { ptr, i32 } [ %986, %985 ], [ %984, %983 ]
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %151) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %151) #9
  %988 = getelementptr inbounds i8, ptr %138, i64 32
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %988) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %148) #9
  br label %989

989:                                              ; preds = %987, %981
  %.0419 = phi i1 [ false, %987 ], [ true, %981 ]
  %.pn567.pn = phi { ptr, i32 } [ %.pn567, %987 ], [ %982, %981 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #9
  br label %990

990:                                              ; preds = %989, %979
  %.1420 = phi i1 [ %.0419, %989 ], [ true, %979 ]
  %.pn567.pn.pn = phi { ptr, i32 } [ %.pn567.pn, %989 ], [ %980, %979 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %150) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %150) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %149) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %148) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %145) #9
  br label %991

991:                                              ; preds = %990, %977
  %.2421 = phi i1 [ %.1420, %990 ], [ true, %977 ]
  %.pn567.pn.pn.pn = phi { ptr, i32 } [ %.pn567.pn.pn, %990 ], [ %978, %977 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #9
  br label %992

992:                                              ; preds = %991, %975
  %.3422 = phi i1 [ %.2421, %991 ], [ true, %975 ]
  %.pn567.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn567.pn.pn.pn, %991 ], [ %976, %975 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %147) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %147) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %146) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %145) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %142) #9
  br label %993

993:                                              ; preds = %992, %973
  %.4423 = phi i1 [ %.3422, %992 ], [ true, %973 ]
  %.0415 = phi ptr [ %892, %992 ], [ %138, %973 ]
  %.pn567.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn567.pn.pn.pn.pn, %992 ], [ %974, %973 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #9
  br label %994

994:                                              ; preds = %993, %971
  %.5424 = phi i1 [ %.4423, %993 ], [ true, %971 ]
  %.1416 = phi ptr [ %.0415, %993 ], [ %138, %971 ]
  %.pn567.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn567.pn.pn.pn.pn.pn, %993 ], [ %972, %971 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %144) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %144) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %143) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %142) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %139) #9
  br label %995

995:                                              ; preds = %969, %994
  %.6425 = phi i1 [ %.5424, %994 ], [ true, %969 ]
  %.2417 = phi ptr [ %.1416, %994 ], [ %138, %969 ]
  %.pn567.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn567.pn.pn.pn.pn.pn.pn, %994 ], [ %970, %969 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %141) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %140) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %139) #9
  %996 = icmp ne ptr %138, %.2417
  %or.cond25.not = select i1 %.6425, i1 %996, i1 false
  br i1 %or.cond25.not, label %.preheader811, label %.loopexit812

.preheader811:                                    ; preds = %995, %.preheader811
  %997 = phi ptr [ %998, %.preheader811 ], [ %.2417, %995 ]
  %998 = getelementptr inbounds i8, ptr %997, i64 -32
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %998) #9
  %999 = icmp eq ptr %998, %138
  br i1 %999, label %.loopexit812, label %.preheader811

.loopexit812:                                     ; preds = %.preheader811, %.thread691, %995
  %.pn567.pn.pn.pn.pn.pn.pn.pn.pn696 = phi { ptr, i32 } [ %968, %.thread691 ], [ %.pn567.pn.pn.pn.pn.pn.pn.pn, %995 ], [ %.pn567.pn.pn.pn.pn.pn.pn.pn, %.preheader811 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %138) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %136) #9
  br label %1002

1000:                                             ; preds = %911, %909, %906
  %1001 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %152) #9
  br label %1002

1002:                                             ; preds = %1000, %.loopexit812, %966
  %.pn568 = phi { ptr, i32 } [ %1001, %1000 ], [ %967, %966 ], [ %.pn567.pn.pn.pn.pn.pn.pn.pn.pn696, %.loopexit812 ]
  %.89 = extractvalue { ptr, i32 } %.pn568, 0
  %1003 = call ptr @__cxa_begin_catch(ptr %.89) #9
  %1004 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1005 unwind label %1069

1005:                                             ; preds = %1002
  %1006 = load ptr, ptr %1004, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %153) #9
  %1007 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1008 unwind label %1071

1008:                                             ; preds = %1005
  %1009 = load ptr, ptr %1007, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %153, ptr noundef nonnull align 8 dereferenceable(30) %1009, i32 noundef 335)
          to label %1010 unwind label %1071

1010:                                             ; preds = %1008
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1006, ptr noundef nonnull align 8 dereferenceable(30) %153, ptr noundef nonnull @.str.93)
          to label %1011 unwind label %1071

1011:                                             ; preds = %1010
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %153) #9
  invoke void @__cxa_end_catch()
          to label %1012 unwind label %530

1012:                                             ; preds = %901, %912, %1011
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %154) #9
  %1013 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %1014 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %156) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %157) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %157) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %156, ptr noundef nonnull @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %157)
          to label %1015 unwind label %1074

1015:                                             ; preds = %1012
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %159) #9
  %1016 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %160) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %161) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %161) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %160, ptr noundef nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %161)
          to label %1017 unwind label %.thread703

1017:                                             ; preds = %1015
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %159, ptr noundef nonnull align 8 dereferenceable(33088) %1016, ptr noundef nonnull align 8 dereferenceable(32) %160)
          to label %1018 unwind label %1077

1018:                                             ; preds = %1017
  %1019 = getelementptr inbounds i8, ptr %159, i64 16
  %1020 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %162) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %163) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %163) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %162, ptr noundef nonnull @.str.91, ptr noundef nonnull align 1 dereferenceable(1) %163)
          to label %1021 unwind label %1079

1021:                                             ; preds = %1018
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1019, ptr noundef nonnull align 8 dereferenceable(33088) %1020, ptr noundef nonnull align 8 dereferenceable(32) %162)
          to label %1022 unwind label %1081

1022:                                             ; preds = %1021
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %164) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %164) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %158, ptr nonnull %159, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %164)
          to label %1023 unwind label %1083

1023:                                             ; preds = %1022
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %155, ptr noundef nonnull align 8 dereferenceable(33088) %1014, ptr noundef nonnull align 8 dereferenceable(32) %156, ptr noundef nonnull %158)
          to label %1024 unwind label %1085

1024:                                             ; preds = %1023
  %1025 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %166) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %167) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %167) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %166, ptr noundef nonnull @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %167)
          to label %1026 unwind label %1087

1026:                                             ; preds = %1024
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %169) #9
  %1027 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %170) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %171) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %171) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %170, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %171)
          to label %1028 unwind label %.thread697

1028:                                             ; preds = %1026
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %169, ptr noundef nonnull align 8 dereferenceable(33088) %1027, ptr noundef nonnull align 8 dereferenceable(32) %170)
          to label %1029 unwind label %1090

1029:                                             ; preds = %1028
  %1030 = getelementptr inbounds i8, ptr %169, i64 16
  %1031 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %172) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %173) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %173) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %172, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %173)
          to label %1032 unwind label %1092

1032:                                             ; preds = %1029
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1030, ptr noundef nonnull align 8 dereferenceable(33088) %1031, ptr noundef nonnull align 8 dereferenceable(32) %172)
          to label %1033 unwind label %1094

1033:                                             ; preds = %1032
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %174) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %174) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %168, ptr nonnull %169, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %174)
          to label %1034 unwind label %1096

1034:                                             ; preds = %1033
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %165, ptr noundef nonnull align 8 dereferenceable(33088) %1025, ptr noundef nonnull align 8 dereferenceable(32) %166, ptr noundef nonnull %168)
          to label %1035 unwind label %1098

1035:                                             ; preds = %1034
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.91") align 8 %154, ptr noundef %1013, ptr noundef nonnull %155, ptr noundef nonnull %165)
          to label %1036 unwind label %1100

1036:                                             ; preds = %1035
  %1037 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %154) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %154) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %165) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %168) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %174) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %174) #9
  %1038 = getelementptr inbounds i8, ptr %169, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1038) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %169) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %173) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %173) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %172) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %171) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %171) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %170) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %169) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %167) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %167) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %166) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %155) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %158) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %164) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %164) #9
  %1039 = getelementptr inbounds i8, ptr %159, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1039) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %159) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %163) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %163) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %162) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %160) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %161) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %161) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %160) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %159) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %156) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %157) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %157) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %156) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %154) #9
  %1040 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %175, ptr noundef nonnull align 8 dereferenceable(24) %1040)
          to label %1041 unwind label %1122

1041:                                             ; preds = %1036
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %177) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %178) #9
  %1042 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %179) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %180) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %180) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %179, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %180)
          to label %1043 unwind label %.thread709

1043:                                             ; preds = %1041
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %178, ptr noundef nonnull align 8 dereferenceable(33088) %1042, ptr noundef nonnull align 8 dereferenceable(32) %179)
          to label %1044 unwind label %1125

1044:                                             ; preds = %1043
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %181) #9
  %1045 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %182) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %183) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %183) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %182, ptr noundef nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %183)
          to label %1046 unwind label %1127

1046:                                             ; preds = %1044
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %181, ptr noundef nonnull align 8 dereferenceable(33088) %1045, ptr noundef nonnull align 8 dereferenceable(32) %182)
          to label %1047 unwind label %1129

1047:                                             ; preds = %1046
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %177, ptr noundef nonnull align 8 dereferenceable(16) %178, ptr noundef nonnull align 8 dereferenceable(16) %181)
  %1048 = getelementptr inbounds i8, ptr %177, i64 32
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %184) #9
  %1049 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %185) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %186) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %186) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %185, ptr noundef nonnull @.str.91, ptr noundef nonnull align 1 dereferenceable(1) %186)
          to label %1050 unwind label %1131

1050:                                             ; preds = %1047
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %184, ptr noundef nonnull align 8 dereferenceable(33088) %1049, ptr noundef nonnull align 8 dereferenceable(32) %185)
          to label %1051 unwind label %1133

1051:                                             ; preds = %1050
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %187) #9
  %1052 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %188) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %189) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %189) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %188, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %189)
          to label %1053 unwind label %1135

1053:                                             ; preds = %1051
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %187, ptr noundef nonnull align 8 dereferenceable(33088) %1052, ptr noundef nonnull align 8 dereferenceable(32) %188)
          to label %1054 unwind label %1137

1054:                                             ; preds = %1053
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %1048, ptr noundef nonnull align 8 dereferenceable(16) %184, ptr noundef nonnull align 8 dereferenceable(16) %187)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %190) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %190) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %176, ptr nonnull %177, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %190)
          to label %1055 unwind label %1139

1055:                                             ; preds = %1054
  %1056 = invoke noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef nonnull %175, ptr noundef nonnull %176)
          to label %1057 unwind label %1141

1057:                                             ; preds = %1055
  %1058 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1056)
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %176) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %190) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %190) #9
  %1059 = getelementptr inbounds i8, ptr %177, i64 32
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1059) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %177) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %187) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %188) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %189) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %189) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %188) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %187) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %184) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %185) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %186) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %186) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %185) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %184) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %181) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %182) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %183) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %183) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %182) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %181) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %178) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %180) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %180) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %179) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %178) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %177) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %175) #9
  br i1 %1058, label %1168, label %1060

1060:                                             ; preds = %1057
  %1061 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1062 unwind label %1122

1062:                                             ; preds = %1060
  %1063 = load ptr, ptr %1061, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %191) #9
  %1064 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1065 unwind label %1156

1065:                                             ; preds = %1062
  %1066 = load ptr, ptr %1064, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %191, ptr noundef nonnull align 8 dereferenceable(30) %1066, i32 noundef 341)
          to label %1067 unwind label %1156

1067:                                             ; preds = %1065
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1063, ptr noundef nonnull align 8 dereferenceable(30) %191, ptr noundef nonnull @.str.92)
          to label %1068 unwind label %1156

1068:                                             ; preds = %1067
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %191) #9
  br label %1168

1069:                                             ; preds = %1002
  %1070 = landingpad { ptr, i32 }
          cleanup
  br label %1073

1071:                                             ; preds = %1010, %1008, %1005
  %1072 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %153) #9
  br label %1073

1073:                                             ; preds = %1071, %1069
  %.pn569 = phi { ptr, i32 } [ %1072, %1071 ], [ %1070, %1069 ]
  invoke void @__cxa_end_catch()
          to label %1706 unwind label %1710

1074:                                             ; preds = %1012
  %1075 = landingpad { ptr, i32 }
          cleanup
  br label %1121

.thread703:                                       ; preds = %1015
  %1076 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %161) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %161) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %160) #9
  br label %.loopexit806

1077:                                             ; preds = %1017
  %1078 = landingpad { ptr, i32 }
          cleanup
  br label %1116

1079:                                             ; preds = %1018
  %1080 = landingpad { ptr, i32 }
          cleanup
  br label %1115

1081:                                             ; preds = %1021
  %1082 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit807

1083:                                             ; preds = %1022
  %1084 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit807.loopexit

1085:                                             ; preds = %1023
  %1086 = landingpad { ptr, i32 }
          cleanup
  br label %1112

1087:                                             ; preds = %1024
  %1088 = landingpad { ptr, i32 }
          cleanup
  br label %1111

.thread697:                                       ; preds = %1026
  %1089 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %171) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %171) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %170) #9
  br label %.loopexit809

1090:                                             ; preds = %1028
  %1091 = landingpad { ptr, i32 }
          cleanup
  br label %1106

1092:                                             ; preds = %1029
  %1093 = landingpad { ptr, i32 }
          cleanup
  br label %1105

1094:                                             ; preds = %1032
  %1095 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit810

1096:                                             ; preds = %1033
  %1097 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit810.loopexit

1098:                                             ; preds = %1034
  %1099 = landingpad { ptr, i32 }
          cleanup
  br label %1102

1100:                                             ; preds = %1035
  %1101 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %165) #9
  br label %1102

1102:                                             ; preds = %1100, %1098
  %.pn571 = phi { ptr, i32 } [ %1101, %1100 ], [ %1099, %1098 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %168) #9
  br label %.loopexit810.loopexit

.loopexit810.loopexit:                            ; preds = %1102, %1096
  %.pn571.pn = phi { ptr, i32 } [ %.pn571, %1102 ], [ %1097, %1096 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %174) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %174) #9
  %1103 = getelementptr inbounds i8, ptr %169, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1103) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %169) #9
  br label %.loopexit810

.loopexit810:                                     ; preds = %.loopexit810.loopexit, %1094
  %1104 = phi i1 [ false, %1094 ], [ true, %.loopexit810.loopexit ]
  %.pn571.pn.pn = phi { ptr, i32 } [ %1095, %1094 ], [ %.pn571.pn, %.loopexit810.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #9
  br label %1105

1105:                                             ; preds = %.loopexit810, %1092
  %.1436 = phi i1 [ %1104, %.loopexit810 ], [ false, %1092 ]
  %.pn571.pn.pn.pn = phi { ptr, i32 } [ %.pn571.pn.pn, %.loopexit810 ], [ %1093, %1092 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %173) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %173) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %172) #9
  br label %1106

1106:                                             ; preds = %1090, %1105
  %.2437 = phi i1 [ %.1436, %1105 ], [ false, %1090 ]
  %.0433 = phi ptr [ %1030, %1105 ], [ %169, %1090 ]
  %.pn571.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn571.pn.pn.pn, %1105 ], [ %1091, %1090 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %171) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %171) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %170) #9
  %1107 = icmp eq ptr %169, %.0433
  %or.cond28 = select i1 %.2437, i1 true, i1 %1107
  br i1 %or.cond28, label %.loopexit809, label %.preheader808

.preheader808:                                    ; preds = %1106, %.preheader808
  %1108 = phi ptr [ %1109, %.preheader808 ], [ %.0433, %1106 ]
  %1109 = getelementptr inbounds i8, ptr %1108, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1109) #9
  %1110 = icmp eq ptr %1109, %169
  br i1 %1110, label %.loopexit809, label %.preheader808

.loopexit809:                                     ; preds = %.preheader808, %.thread697, %1106
  %.pn571.pn.pn.pn.pn.pn702 = phi { ptr, i32 } [ %1089, %.thread697 ], [ %.pn571.pn.pn.pn.pn, %1106 ], [ %.pn571.pn.pn.pn.pn, %.preheader808 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %169) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #9
  br label %1111

1111:                                             ; preds = %.loopexit809, %1087
  %.pn571.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn571.pn.pn.pn.pn.pn702, %.loopexit809 ], [ %1088, %1087 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %167) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %167) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %166) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %155) #9
  br label %1112

1112:                                             ; preds = %1111, %1085
  %.pn571.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn571.pn.pn.pn.pn.pn.pn, %1111 ], [ %1086, %1085 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %158) #9
  br label %.loopexit807.loopexit

.loopexit807.loopexit:                            ; preds = %1112, %1083
  %.pn571.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn571.pn.pn.pn.pn.pn.pn.pn, %1112 ], [ %1084, %1083 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %164) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %164) #9
  %1113 = getelementptr inbounds i8, ptr %159, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1113) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %159) #9
  br label %.loopexit807

.loopexit807:                                     ; preds = %.loopexit807.loopexit, %1081
  %1114 = phi i1 [ false, %1081 ], [ true, %.loopexit807.loopexit ]
  %.pn571.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1082, %1081 ], [ %.pn571.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit807.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #9
  br label %1115

1115:                                             ; preds = %.loopexit807, %1079
  %.1430 = phi i1 [ %1114, %.loopexit807 ], [ false, %1079 ]
  %.pn571.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn571.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit807 ], [ %1080, %1079 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %163) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %163) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %162) #9
  br label %1116

1116:                                             ; preds = %1077, %1115
  %.2431 = phi i1 [ %.1430, %1115 ], [ false, %1077 ]
  %.0427 = phi ptr [ %1019, %1115 ], [ %159, %1077 ]
  %.pn571.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn571.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1115 ], [ %1078, %1077 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %160) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %161) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %161) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %160) #9
  %1117 = icmp eq ptr %159, %.0427
  %or.cond31 = select i1 %.2431, i1 true, i1 %1117
  br i1 %or.cond31, label %.loopexit806, label %.preheader805

.preheader805:                                    ; preds = %1116, %.preheader805
  %1118 = phi ptr [ %1119, %.preheader805 ], [ %.0427, %1116 ]
  %1119 = getelementptr inbounds i8, ptr %1118, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1119) #9
  %1120 = icmp eq ptr %1119, %159
  br i1 %1120, label %.loopexit806, label %.preheader805

.loopexit806:                                     ; preds = %.preheader805, %.thread703, %1116
  %.pn571.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn708 = phi { ptr, i32 } [ %1076, %.thread703 ], [ %.pn571.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1116 ], [ %.pn571.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.preheader805 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %159) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %156) #9
  br label %1121

1121:                                             ; preds = %.loopexit806, %1074
  %.pn571.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn571.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn708, %.loopexit806 ], [ %1075, %1074 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %157) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %157) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %156) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %154) #9
  br label %1706

1122:                                             ; preds = %1060, %1036
  %1123 = landingpad { ptr, i32 }
          catch ptr null
  br label %1158

.thread709:                                       ; preds = %1041
  %1124 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %180) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %180) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %179) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %178) #9
  br label %.loopexit804

1125:                                             ; preds = %1043
  %1126 = landingpad { ptr, i32 }
          catch ptr null
  br label %1151

1127:                                             ; preds = %1044
  %1128 = landingpad { ptr, i32 }
          catch ptr null
  br label %1150

1129:                                             ; preds = %1046
  %1130 = landingpad { ptr, i32 }
          catch ptr null
  br label %1149

1131:                                             ; preds = %1047
  %1132 = landingpad { ptr, i32 }
          catch ptr null
  br label %1148

1133:                                             ; preds = %1050
  %1134 = landingpad { ptr, i32 }
          catch ptr null
  br label %1147

1135:                                             ; preds = %1051
  %1136 = landingpad { ptr, i32 }
          catch ptr null
  br label %1146

1137:                                             ; preds = %1053
  %1138 = landingpad { ptr, i32 }
          catch ptr null
  br label %1145

1139:                                             ; preds = %1054
  %1140 = landingpad { ptr, i32 }
          catch ptr null
  br label %1143

1141:                                             ; preds = %1055
  %1142 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %176) #9
  br label %1143

1143:                                             ; preds = %1141, %1139
  %.pn586 = phi { ptr, i32 } [ %1142, %1141 ], [ %1140, %1139 ]
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %190) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %190) #9
  %1144 = getelementptr inbounds i8, ptr %177, i64 32
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1144) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %177) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %187) #9
  br label %1145

1145:                                             ; preds = %1143, %1137
  %.0443 = phi i1 [ false, %1143 ], [ true, %1137 ]
  %.pn586.pn = phi { ptr, i32 } [ %.pn586, %1143 ], [ %1138, %1137 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %188) #9
  br label %1146

1146:                                             ; preds = %1145, %1135
  %.1444 = phi i1 [ %.0443, %1145 ], [ true, %1135 ]
  %.pn586.pn.pn = phi { ptr, i32 } [ %.pn586.pn, %1145 ], [ %1136, %1135 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %189) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %189) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %188) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %187) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %184) #9
  br label %1147

1147:                                             ; preds = %1146, %1133
  %.2445 = phi i1 [ %.1444, %1146 ], [ true, %1133 ]
  %.pn586.pn.pn.pn = phi { ptr, i32 } [ %.pn586.pn.pn, %1146 ], [ %1134, %1133 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %185) #9
  br label %1148

1148:                                             ; preds = %1147, %1131
  %.3446 = phi i1 [ %.2445, %1147 ], [ true, %1131 ]
  %.pn586.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn586.pn.pn.pn, %1147 ], [ %1132, %1131 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %186) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %186) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %185) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %184) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %181) #9
  br label %1149

1149:                                             ; preds = %1148, %1129
  %.4447 = phi i1 [ %.3446, %1148 ], [ true, %1129 ]
  %.0439 = phi ptr [ %1048, %1148 ], [ %177, %1129 ]
  %.pn586.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn586.pn.pn.pn.pn, %1148 ], [ %1130, %1129 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %182) #9
  br label %1150

1150:                                             ; preds = %1149, %1127
  %.5448 = phi i1 [ %.4447, %1149 ], [ true, %1127 ]
  %.1440 = phi ptr [ %.0439, %1149 ], [ %177, %1127 ]
  %.pn586.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn586.pn.pn.pn.pn.pn, %1149 ], [ %1128, %1127 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %183) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %183) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %182) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %181) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %178) #9
  br label %1151

1151:                                             ; preds = %1125, %1150
  %.6449 = phi i1 [ %.5448, %1150 ], [ true, %1125 ]
  %.2441 = phi ptr [ %.1440, %1150 ], [ %177, %1125 ]
  %.pn586.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn586.pn.pn.pn.pn.pn.pn, %1150 ], [ %1126, %1125 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %180) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %180) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %179) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %178) #9
  %1152 = icmp ne ptr %177, %.2441
  %or.cond34.not = select i1 %.6449, i1 %1152, i1 false
  br i1 %or.cond34.not, label %.preheader803, label %.loopexit804

.preheader803:                                    ; preds = %1151, %.preheader803
  %1153 = phi ptr [ %1154, %.preheader803 ], [ %.2441, %1151 ]
  %1154 = getelementptr inbounds i8, ptr %1153, i64 -32
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1154) #9
  %1155 = icmp eq ptr %1154, %177
  br i1 %1155, label %.loopexit804, label %.preheader803

.loopexit804:                                     ; preds = %.preheader803, %.thread709, %1151
  %.pn586.pn.pn.pn.pn.pn.pn.pn.pn714 = phi { ptr, i32 } [ %1124, %.thread709 ], [ %.pn586.pn.pn.pn.pn.pn.pn.pn, %1151 ], [ %.pn586.pn.pn.pn.pn.pn.pn.pn, %.preheader803 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %177) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %175) #9
  br label %1158

1156:                                             ; preds = %1067, %1065, %1062
  %1157 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %191) #9
  br label %1158

1158:                                             ; preds = %1156, %.loopexit804, %1122
  %.pn587 = phi { ptr, i32 } [ %1157, %1156 ], [ %1123, %1122 ], [ %.pn586.pn.pn.pn.pn.pn.pn.pn.pn714, %.loopexit804 ]
  %.114 = extractvalue { ptr, i32 } %.pn587, 0
  %1159 = call ptr @__cxa_begin_catch(ptr %.114) #9
  %1160 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1161 unwind label %1204

1161:                                             ; preds = %1158
  %1162 = load ptr, ptr %1160, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %192) #9
  %1163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1164 unwind label %1206

1164:                                             ; preds = %1161
  %1165 = load ptr, ptr %1163, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %192, ptr noundef nonnull align 8 dereferenceable(30) %1165, i32 noundef 341)
          to label %1166 unwind label %1206

1166:                                             ; preds = %1164
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1162, ptr noundef nonnull align 8 dereferenceable(30) %192, ptr noundef nonnull @.str.93)
          to label %1167 unwind label %1206

1167:                                             ; preds = %1166
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %192) #9
  invoke void @__cxa_end_catch()
          to label %1168 unwind label %530

1168:                                             ; preds = %1057, %1068, %1167
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %193) #9
  %1169 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %194) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %195) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %195) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %194, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %195)
          to label %1170 unwind label %1209

1170:                                             ; preds = %1168
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %193, ptr noundef nonnull align 8 dereferenceable(33088) %1169, ptr noundef nonnull align 8 dereferenceable(32) %194)
          to label %1171 unwind label %1211

1171:                                             ; preds = %1170
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %194) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %195) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %195) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %194) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %196) #9
  %1172 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %1173 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %198) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %199) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %199) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %198, ptr noundef nonnull @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %199)
          to label %1174 unwind label %1214

1174:                                             ; preds = %1171
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %201) #9
  %1175 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %202) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %203) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %203) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %202, ptr noundef nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %203)
          to label %1176 unwind label %.thread715

1176:                                             ; preds = %1174
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %201, ptr noundef nonnull align 8 dereferenceable(33088) %1175, ptr noundef nonnull align 8 dereferenceable(32) %202)
          to label %1177 unwind label %1217

1177:                                             ; preds = %1176
  %1178 = getelementptr inbounds i8, ptr %201, i64 16
  %1179 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %204) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %205) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %205) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %204, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %205)
          to label %1180 unwind label %1219

1180:                                             ; preds = %1177
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1178, ptr noundef nonnull align 8 dereferenceable(33088) %1179, ptr noundef nonnull align 8 dereferenceable(32) %204)
          to label %1181 unwind label %1221

1181:                                             ; preds = %1180
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %206) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %206) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %200, ptr nonnull %201, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %206)
          to label %1182 unwind label %1223

1182:                                             ; preds = %1181
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %197, ptr noundef nonnull align 8 dereferenceable(33088) %1173, ptr noundef nonnull align 8 dereferenceable(32) %198, ptr noundef nonnull %200)
          to label %1183 unwind label %1225

1183:                                             ; preds = %1182
  %1184 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %208) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %209) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %209) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %208, ptr noundef nonnull @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %209)
          to label %1185 unwind label %1227

1185:                                             ; preds = %1183
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %211) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %211, ptr noundef nonnull align 8 dereferenceable(16) %193) #9
  %1186 = getelementptr inbounds i8, ptr %211, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1186, ptr noundef nonnull align 8 dereferenceable(16) %193) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %212) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %212) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %210, ptr nonnull %211, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %212)
          to label %1187 unwind label %1229

1187:                                             ; preds = %1185
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %207, ptr noundef nonnull align 8 dereferenceable(33088) %1184, ptr noundef nonnull align 8 dereferenceable(32) %208, ptr noundef nonnull %210)
          to label %1188 unwind label %1231

1188:                                             ; preds = %1187
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.91") align 8 %196, ptr noundef %1172, ptr noundef nonnull %197, ptr noundef nonnull %207)
          to label %1189 unwind label %1233

1189:                                             ; preds = %1188
  %1190 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %196) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %196) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %207) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %210) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %212) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %212) #9
  %1191 = getelementptr inbounds i8, ptr %211, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1191) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %211) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %211) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %208) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %209) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %209) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %208) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %197) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %200) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %206) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %206) #9
  %1192 = getelementptr inbounds i8, ptr %201, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1192) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %201) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %204) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %205) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %205) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %204) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %203) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %203) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %202) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %201) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %198) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %199) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %199) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %198) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %196) #9
  %1193 = call noundef zeroext i1 @_ZSteqISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr null) #9
  %1194 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1193)
  br i1 %1194, label %1263, label %1195

1195:                                             ; preds = %1189
  %1196 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1197 unwind label %1249

1197:                                             ; preds = %1195
  %1198 = load ptr, ptr %1196, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %213) #9
  %1199 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1200 unwind label %1251

1200:                                             ; preds = %1197
  %1201 = load ptr, ptr %1199, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %213, ptr noundef nonnull align 8 dereferenceable(30) %1201, i32 noundef 347)
          to label %1202 unwind label %1251

1202:                                             ; preds = %1200
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1198, ptr noundef nonnull align 8 dereferenceable(30) %213, ptr noundef nonnull @.str.81)
          to label %1203 unwind label %1251

1203:                                             ; preds = %1202
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %213) #9
  br label %1263

1204:                                             ; preds = %1158
  %1205 = landingpad { ptr, i32 }
          cleanup
  br label %1208

1206:                                             ; preds = %1166, %1164, %1161
  %1207 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %192) #9
  br label %1208

1208:                                             ; preds = %1206, %1204
  %.pn588 = phi { ptr, i32 } [ %1207, %1206 ], [ %1205, %1204 ]
  invoke void @__cxa_end_catch()
          to label %1706 unwind label %1710

1209:                                             ; preds = %1168
  %1210 = landingpad { ptr, i32 }
          cleanup
  br label %1213

1211:                                             ; preds = %1170
  %1212 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %194) #9
  br label %1213

1213:                                             ; preds = %1211, %1209
  %.pn590 = phi { ptr, i32 } [ %1212, %1211 ], [ %1210, %1209 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %195) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %195) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %194) #9
  br label %1705

1214:                                             ; preds = %1171
  %1215 = landingpad { ptr, i32 }
          cleanup
  br label %1248

.thread715:                                       ; preds = %1174
  %1216 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %203) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %203) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %202) #9
  br label %.loopexit801

1217:                                             ; preds = %1176
  %1218 = landingpad { ptr, i32 }
          cleanup
  br label %1243

1219:                                             ; preds = %1177
  %1220 = landingpad { ptr, i32 }
          cleanup
  br label %1242

1221:                                             ; preds = %1180
  %1222 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit802

1223:                                             ; preds = %1181
  %1224 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit802.loopexit

1225:                                             ; preds = %1182
  %1226 = landingpad { ptr, i32 }
          cleanup
  br label %1239

1227:                                             ; preds = %1183
  %1228 = landingpad { ptr, i32 }
          cleanup
  br label %1238

1229:                                             ; preds = %1185
  %1230 = landingpad { ptr, i32 }
          cleanup
  br label %1236

1231:                                             ; preds = %1187
  %1232 = landingpad { ptr, i32 }
          cleanup
  br label %1235

1233:                                             ; preds = %1188
  %1234 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %207) #9
  br label %1235

1235:                                             ; preds = %1233, %1231
  %.pn592 = phi { ptr, i32 } [ %1234, %1233 ], [ %1232, %1231 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %210) #9
  br label %1236

1236:                                             ; preds = %1235, %1229
  %.pn592.pn = phi { ptr, i32 } [ %.pn592, %1235 ], [ %1230, %1229 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %212) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %212) #9
  %1237 = getelementptr inbounds i8, ptr %211, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1237) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %211) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %211) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %208) #9
  br label %1238

1238:                                             ; preds = %1236, %1227
  %.pn592.pn.pn = phi { ptr, i32 } [ %.pn592.pn, %1236 ], [ %1228, %1227 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %209) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %209) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %208) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %197) #9
  br label %1239

1239:                                             ; preds = %1238, %1225
  %.pn592.pn.pn.pn = phi { ptr, i32 } [ %.pn592.pn.pn, %1238 ], [ %1226, %1225 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %200) #9
  br label %.loopexit802.loopexit

.loopexit802.loopexit:                            ; preds = %1239, %1223
  %.pn592.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn592.pn.pn.pn, %1239 ], [ %1224, %1223 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %206) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %206) #9
  %1240 = getelementptr inbounds i8, ptr %201, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1240) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %201) #9
  br label %.loopexit802

.loopexit802:                                     ; preds = %.loopexit802.loopexit, %1221
  %1241 = phi i1 [ false, %1221 ], [ true, %.loopexit802.loopexit ]
  %.pn592.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1222, %1221 ], [ %.pn592.pn.pn.pn.pn, %.loopexit802.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %204) #9
  br label %1242

1242:                                             ; preds = %.loopexit802, %1219
  %.1454 = phi i1 [ %1241, %.loopexit802 ], [ false, %1219 ]
  %.pn592.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn592.pn.pn.pn.pn.pn, %.loopexit802 ], [ %1220, %1219 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %205) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %205) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %204) #9
  br label %1243

1243:                                             ; preds = %1217, %1242
  %.2455 = phi i1 [ %.1454, %1242 ], [ false, %1217 ]
  %.0451 = phi ptr [ %1178, %1242 ], [ %201, %1217 ]
  %.pn592.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn592.pn.pn.pn.pn.pn.pn, %1242 ], [ %1218, %1217 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %203) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %203) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %202) #9
  %1244 = icmp eq ptr %201, %.0451
  %or.cond37 = select i1 %.2455, i1 true, i1 %1244
  br i1 %or.cond37, label %.loopexit801, label %.preheader800

.preheader800:                                    ; preds = %1243, %.preheader800
  %1245 = phi ptr [ %1246, %.preheader800 ], [ %.0451, %1243 ]
  %1246 = getelementptr inbounds i8, ptr %1245, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1246) #9
  %1247 = icmp eq ptr %1246, %201
  br i1 %1247, label %.loopexit801, label %.preheader800

.loopexit801:                                     ; preds = %.preheader800, %.thread715, %1243
  %.pn592.pn.pn.pn.pn.pn.pn.pn.pn720 = phi { ptr, i32 } [ %1216, %.thread715 ], [ %.pn592.pn.pn.pn.pn.pn.pn.pn, %1243 ], [ %.pn592.pn.pn.pn.pn.pn.pn.pn, %.preheader800 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %201) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %198) #9
  br label %1248

1248:                                             ; preds = %.loopexit801, %1214
  %.pn592.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn592.pn.pn.pn.pn.pn.pn.pn.pn720, %.loopexit801 ], [ %1215, %1214 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %199) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %199) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %198) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %196) #9
  br label %1704

1249:                                             ; preds = %1195
  %1250 = landingpad { ptr, i32 }
          catch ptr null
  br label %1253

1251:                                             ; preds = %1202, %1200, %1197
  %1252 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %213) #9
  br label %1253

1253:                                             ; preds = %1251, %1249
  %.pn603 = phi { ptr, i32 } [ %1252, %1251 ], [ %1250, %1249 ]
  %.127 = extractvalue { ptr, i32 } %.pn603, 0
  %1254 = call ptr @__cxa_begin_catch(ptr %.127) #9
  %1255 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1256 unwind label %1288

1256:                                             ; preds = %1253
  %1257 = load ptr, ptr %1255, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %214) #9
  %1258 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1259 unwind label %1290

1259:                                             ; preds = %1256
  %1260 = load ptr, ptr %1258, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %214, ptr noundef nonnull align 8 dereferenceable(30) %1260, i32 noundef 347)
          to label %1261 unwind label %1290

1261:                                             ; preds = %1259
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1257, ptr noundef nonnull align 8 dereferenceable(30) %214, ptr noundef nonnull @.str.82)
          to label %1262 unwind label %1290

1262:                                             ; preds = %1261
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %214) #9
  invoke void @__cxa_end_catch()
          to label %1263 unwind label %1292

1263:                                             ; preds = %1189, %1203, %1262
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %215) #9
  %1264 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %216) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %217) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %217) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %216, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %217)
          to label %1265 unwind label %1295

1265:                                             ; preds = %1263
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %215, ptr noundef nonnull align 8 dereferenceable(33088) %1264, ptr noundef nonnull align 8 dereferenceable(32) %216)
          to label %1266 unwind label %1297

1266:                                             ; preds = %1265
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %217) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %217) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %216) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %218) #9
  %1267 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %219) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %220) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %220) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %219, ptr noundef nonnull @.str.91, ptr noundef nonnull align 1 dereferenceable(1) %220)
          to label %1268 unwind label %1300

1268:                                             ; preds = %1266
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %218, ptr noundef nonnull align 8 dereferenceable(33088) %1267, ptr noundef nonnull align 8 dereferenceable(32) %219)
          to label %1269 unwind label %1302

1269:                                             ; preds = %1268
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %219) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %220) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %220) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %219) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %221) #9
  %1270 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %222, ptr noundef nonnull align 8 dereferenceable(16) %215) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %223, ptr noundef nonnull align 8 dereferenceable(16) %218) #9
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.91") align 8 %221, ptr noundef %1270, ptr noundef nonnull %222, ptr noundef nonnull %223)
          to label %1271 unwind label %1305

1271:                                             ; preds = %1269
  %1272 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %221) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %221) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %223) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %222) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %221) #9
  %1273 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %224, ptr noundef nonnull align 8 dereferenceable(24) %1273)
          to label %1274 unwind label %1307

1274:                                             ; preds = %1271
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %226) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S5_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %226, ptr noundef nonnull align 8 dereferenceable(16) %215, ptr noundef nonnull align 8 dereferenceable(16) %218)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %227) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %227) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %225, ptr nonnull %226, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %227)
          to label %1275 unwind label %1309

1275:                                             ; preds = %1274
  %1276 = invoke noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef nonnull %224, ptr noundef nonnull %225)
          to label %1277 unwind label %1311

1277:                                             ; preds = %1275
  %1278 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1276)
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %225) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %227) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %227) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %226) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %226) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %224) #9
  br i1 %1278, label %1326, label %1279

1279:                                             ; preds = %1277
  %1280 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1281 unwind label %1307

1281:                                             ; preds = %1279
  %1282 = load ptr, ptr %1280, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %228) #9
  %1283 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1284 unwind label %1314

1284:                                             ; preds = %1281
  %1285 = load ptr, ptr %1283, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %228, ptr noundef nonnull align 8 dereferenceable(30) %1285, i32 noundef 353)
          to label %1286 unwind label %1314

1286:                                             ; preds = %1284
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1282, ptr noundef nonnull align 8 dereferenceable(30) %228, ptr noundef nonnull @.str.94)
          to label %1287 unwind label %1314

1287:                                             ; preds = %1286
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %228) #9
  br label %1326

1288:                                             ; preds = %1253
  %1289 = landingpad { ptr, i32 }
          cleanup
  br label %1294

1290:                                             ; preds = %1261, %1259, %1256
  %1291 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %214) #9
  br label %1294

1292:                                             ; preds = %1262
  %1293 = landingpad { ptr, i32 }
          cleanup
  br label %1704

1294:                                             ; preds = %1290, %1288
  %.pn604 = phi { ptr, i32 } [ %1291, %1290 ], [ %1289, %1288 ]
  invoke void @__cxa_end_catch()
          to label %1704 unwind label %1710

1295:                                             ; preds = %1263
  %1296 = landingpad { ptr, i32 }
          cleanup
  br label %1299

1297:                                             ; preds = %1265
  %1298 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #9
  br label %1299

1299:                                             ; preds = %1297, %1295
  %.pn606 = phi { ptr, i32 } [ %1298, %1297 ], [ %1296, %1295 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %217) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %217) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %216) #9
  br label %1703

1300:                                             ; preds = %1266
  %1301 = landingpad { ptr, i32 }
          cleanup
  br label %1304

1302:                                             ; preds = %1268
  %1303 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %219) #9
  br label %1304

1304:                                             ; preds = %1302, %1300
  %.pn608 = phi { ptr, i32 } [ %1303, %1302 ], [ %1301, %1300 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %220) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %220) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %219) #9
  br label %1702

1305:                                             ; preds = %1269
  %1306 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %223) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %222) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %221) #9
  br label %1701

1307:                                             ; preds = %1279, %1271
  %1308 = landingpad { ptr, i32 }
          catch ptr null
  br label %1316

1309:                                             ; preds = %1274
  %1310 = landingpad { ptr, i32 }
          catch ptr null
  br label %1313

1311:                                             ; preds = %1275
  %1312 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %225) #9
  br label %1313

1313:                                             ; preds = %1311, %1309
  %.pn610 = phi { ptr, i32 } [ %1312, %1311 ], [ %1310, %1309 ]
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %227) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %227) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %226) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %226) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %224) #9
  br label %1316

1314:                                             ; preds = %1286, %1284, %1281
  %1315 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %228) #9
  br label %1316

1316:                                             ; preds = %1314, %1313, %1307
  %.pn611 = phi { ptr, i32 } [ %1315, %1314 ], [ %1308, %1307 ], [ %.pn610, %1313 ]
  %.132 = extractvalue { ptr, i32 } %.pn611, 0
  %1317 = call ptr @__cxa_begin_catch(ptr %.132) #9
  %1318 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1319 unwind label %1349

1319:                                             ; preds = %1316
  %1320 = load ptr, ptr %1318, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %229) #9
  %1321 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1322 unwind label %1351

1322:                                             ; preds = %1319
  %1323 = load ptr, ptr %1321, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %229, ptr noundef nonnull align 8 dereferenceable(30) %1323, i32 noundef 353)
          to label %1324 unwind label %1351

1324:                                             ; preds = %1322
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1320, ptr noundef nonnull align 8 dereferenceable(30) %229, ptr noundef nonnull @.str.95)
          to label %1325 unwind label %1351

1325:                                             ; preds = %1324
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %229) #9
  invoke void @__cxa_end_catch()
          to label %1326 unwind label %1353

1326:                                             ; preds = %1277, %1287, %1325
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %230) #9
  %1327 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %231) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %232) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %232) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %231, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %232)
          to label %1328 unwind label %1356

1328:                                             ; preds = %1326
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %230, ptr noundef nonnull align 8 dereferenceable(33088) %1327, ptr noundef nonnull align 8 dereferenceable(32) %231)
          to label %1329 unwind label %1358

1329:                                             ; preds = %1328
  %1330 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %215, ptr noundef nonnull align 8 dereferenceable(16) %230) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %230) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %231) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %232) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %232) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %231) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %230) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %233) #9
  %1331 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %1332 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %235) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %236) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %236) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %235, ptr noundef nonnull @.str.96, ptr noundef nonnull align 1 dereferenceable(1) %236)
          to label %1333 unwind label %1361

1333:                                             ; preds = %1329
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %238) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %238, ptr noundef nonnull align 8 dereferenceable(16) %215) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %239) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %239) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %237, ptr nonnull %238, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %239)
          to label %1334 unwind label %1363

1334:                                             ; preds = %1333
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %234, ptr noundef nonnull align 8 dereferenceable(33088) %1332, ptr noundef nonnull align 8 dereferenceable(32) %235, ptr noundef nonnull %237)
          to label %1335 unwind label %1365

1335:                                             ; preds = %1334
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %240, ptr noundef nonnull align 8 dereferenceable(16) %215) #9
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.91") align 8 %233, ptr noundef %1331, ptr noundef nonnull %234, ptr noundef nonnull %240)
          to label %1336 unwind label %1367

1336:                                             ; preds = %1335
  %1337 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %233) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %233) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %240) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %234) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %237) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %239) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %239) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %238) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %238) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %235) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %236) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %236) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %235) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %233) #9
  %1338 = call noundef zeroext i1 @_ZSteqISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr null) #9
  %1339 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1338)
  br i1 %1339, label %1386, label %1340

1340:                                             ; preds = %1336
  %1341 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1342 unwind label %1372

1342:                                             ; preds = %1340
  %1343 = load ptr, ptr %1341, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %241) #9
  %1344 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1345 unwind label %1374

1345:                                             ; preds = %1342
  %1346 = load ptr, ptr %1344, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %241, ptr noundef nonnull align 8 dereferenceable(30) %1346, i32 noundef 359)
          to label %1347 unwind label %1374

1347:                                             ; preds = %1345
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1343, ptr noundef nonnull align 8 dereferenceable(30) %241, ptr noundef nonnull @.str.81)
          to label %1348 unwind label %1374

1348:                                             ; preds = %1347
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %241) #9
  br label %1386

1349:                                             ; preds = %1316
  %1350 = landingpad { ptr, i32 }
          cleanup
  br label %1355

1351:                                             ; preds = %1324, %1322, %1319
  %1352 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %229) #9
  br label %1355

1353:                                             ; preds = %1385, %1325
  %1354 = landingpad { ptr, i32 }
          cleanup
  br label %1701

1355:                                             ; preds = %1351, %1349
  %.pn612 = phi { ptr, i32 } [ %1352, %1351 ], [ %1350, %1349 ]
  invoke void @__cxa_end_catch()
          to label %1701 unwind label %1710

1356:                                             ; preds = %1326
  %1357 = landingpad { ptr, i32 }
          cleanup
  br label %1360

1358:                                             ; preds = %1328
  %1359 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %231) #9
  br label %1360

1360:                                             ; preds = %1358, %1356
  %.pn614 = phi { ptr, i32 } [ %1359, %1358 ], [ %1357, %1356 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %232) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %232) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %231) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %230) #9
  br label %1701

1361:                                             ; preds = %1329
  %1362 = landingpad { ptr, i32 }
          cleanup
  br label %1371

1363:                                             ; preds = %1333
  %1364 = landingpad { ptr, i32 }
          cleanup
  br label %1370

1365:                                             ; preds = %1334
  %1366 = landingpad { ptr, i32 }
          cleanup
  br label %1369

1367:                                             ; preds = %1335
  %1368 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %240) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %234) #9
  br label %1369

1369:                                             ; preds = %1367, %1365
  %.pn616 = phi { ptr, i32 } [ %1368, %1367 ], [ %1366, %1365 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %237) #9
  br label %1370

1370:                                             ; preds = %1369, %1363
  %.pn616.pn = phi { ptr, i32 } [ %.pn616, %1369 ], [ %1364, %1363 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %239) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %239) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %238) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %238) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %235) #9
  br label %1371

1371:                                             ; preds = %1370, %1361
  %.pn616.pn.pn = phi { ptr, i32 } [ %.pn616.pn, %1370 ], [ %1362, %1361 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %236) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %236) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %235) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %233) #9
  br label %1701

1372:                                             ; preds = %1340
  %1373 = landingpad { ptr, i32 }
          catch ptr null
  br label %1376

1374:                                             ; preds = %1347, %1345, %1342
  %1375 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %241) #9
  br label %1376

1376:                                             ; preds = %1374, %1372
  %.pn620 = phi { ptr, i32 } [ %1375, %1374 ], [ %1373, %1372 ]
  %.138 = extractvalue { ptr, i32 } %.pn620, 0
  %1377 = call ptr @__cxa_begin_catch(ptr %.138) #9
  %1378 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1379 unwind label %1492

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

1382:                                             ; preds = %1379
  %1383 = load ptr, ptr %1381, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %242, ptr noundef nonnull align 8 dereferenceable(30) %1383, i32 noundef 359)
          to label %1384 unwind label %1494

1384:                                             ; preds = %1382
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1380, ptr noundef nonnull align 8 dereferenceable(30) %242, ptr noundef nonnull @.str.82)
          to label %1385 unwind label %1494

1385:                                             ; preds = %1384
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %242) #9
  invoke void @__cxa_end_catch()
          to label %1386 unwind label %1353

1386:                                             ; preds = %1336, %1348, %1385
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %243) #9
  %1387 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %244) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %245) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %245) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %244, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %245)
          to label %1388 unwind label %1497

1388:                                             ; preds = %1386
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %243, ptr noundef nonnull align 8 dereferenceable(33088) %1387, ptr noundef nonnull align 8 dereferenceable(32) %244)
          to label %1389 unwind label %1499

1389:                                             ; preds = %1388
  %1390 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %215, ptr noundef nonnull align 8 dereferenceable(16) %243) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %243) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %244) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %245) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %245) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %244) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %243) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %246) #9
  %1391 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %247) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %248) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %248) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %247, ptr noundef nonnull @.str.91, ptr noundef nonnull align 1 dereferenceable(1) %248)
          to label %1392 unwind label %1502

1392:                                             ; preds = %1389
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %246, ptr noundef nonnull align 8 dereferenceable(33088) %1391, ptr noundef nonnull align 8 dereferenceable(32) %247)
          to label %1393 unwind label %1504

1393:                                             ; preds = %1392
  %1394 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(16) %218, ptr noundef nonnull align 8 dereferenceable(16) %246) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %246) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %247) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %248) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %248) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %247) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %246) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %249) #9
  %1395 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %250) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %251) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %251) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %250, ptr noundef nonnull @.str.97, ptr noundef nonnull align 1 dereferenceable(1) %251)
          to label %1396 unwind label %1507

1396:                                             ; preds = %1393
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %249, ptr noundef nonnull align 8 dereferenceable(33088) %1395, ptr noundef nonnull align 8 dereferenceable(32) %250)
          to label %1397 unwind label %1509

1397:                                             ; preds = %1396
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %250) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %251) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %251) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %250) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %252) #9
  %1398 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %1399 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %254) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %255) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %255) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %254, ptr noundef nonnull @.str.98, ptr noundef nonnull align 1 dereferenceable(1) %255)
          to label %1400 unwind label %1512

1400:                                             ; preds = %1397
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %257) #9
  %1401 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %258) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %259) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %259) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %258, ptr noundef nonnull @.str.99, ptr noundef nonnull align 1 dereferenceable(1) %259)
          to label %1402 unwind label %.thread751

1402:                                             ; preds = %1400
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %261) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %261, ptr noundef nonnull align 8 dereferenceable(16) %215) #9
  %1403 = getelementptr inbounds i8, ptr %261, i64 16
  %1404 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %262) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %263) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %263) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %262, ptr noundef nonnull @.str.100, ptr noundef nonnull align 1 dereferenceable(1) %263)
          to label %1405 unwind label %1563

1405:                                             ; preds = %1402
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %265) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %265, ptr noundef nonnull align 8 dereferenceable(16) %215) #9
  %1406 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %266) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %267) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %267) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %266, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %267)
          to label %1407 unwind label %1561

1407:                                             ; preds = %1405
  %1408 = getelementptr inbounds i8, ptr %265, i64 16
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1408, ptr noundef nonnull align 8 dereferenceable(33088) %1406, ptr noundef nonnull align 8 dereferenceable(32) %266)
          to label %1409 unwind label %1515

1409:                                             ; preds = %1407
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %268) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %268) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %264, ptr nonnull %265, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %268)
          to label %1410 unwind label %1517

1410:                                             ; preds = %1409
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1403, ptr noundef nonnull align 8 dereferenceable(33088) %1404, ptr noundef nonnull align 8 dereferenceable(32) %262, ptr noundef nonnull %264)
          to label %1411 unwind label %1519

1411:                                             ; preds = %1410
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %269) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %269) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %260, ptr nonnull %261, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %269)
          to label %1412 unwind label %1521

1412:                                             ; preds = %1411
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %257, ptr noundef nonnull align 8 dereferenceable(33088) %1401, ptr noundef nonnull align 8 dereferenceable(32) %258, ptr noundef nonnull %260)
          to label %1413 unwind label %1523

1413:                                             ; preds = %1412
  %1414 = getelementptr inbounds i8, ptr %257, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1414, ptr noundef nonnull align 8 dereferenceable(16) %249) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %270) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %270) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %256, ptr nonnull %257, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %270)
          to label %1415 unwind label %1525

1415:                                             ; preds = %1413
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %253, ptr noundef nonnull align 8 dereferenceable(33088) %1399, ptr noundef nonnull align 8 dereferenceable(32) %254, ptr noundef nonnull %256)
          to label %1416 unwind label %1527

1416:                                             ; preds = %1415
  %1417 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %272) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %273) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %273) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %272, ptr noundef nonnull @.str.98, ptr noundef nonnull align 1 dereferenceable(1) %273)
          to label %1418 unwind label %1529

1418:                                             ; preds = %1416
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %275) #9
  %1419 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %276) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %277) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %277) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %276, ptr noundef nonnull @.str.99, ptr noundef nonnull align 1 dereferenceable(1) %277)
          to label %1420 unwind label %.thread731

1420:                                             ; preds = %1418
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %279) #9
  %1421 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %280) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %281) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %281) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %280, ptr noundef nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %281)
          to label %1422 unwind label %.thread721

1422:                                             ; preds = %1420
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %279, ptr noundef nonnull align 8 dereferenceable(33088) %1421, ptr noundef nonnull align 8 dereferenceable(32) %280)
          to label %1423 unwind label %1533

1423:                                             ; preds = %1422
  %1424 = getelementptr inbounds i8, ptr %279, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1424, ptr noundef nonnull align 8 dereferenceable(16) %249) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %282) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %282) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %278, ptr nonnull %279, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %282)
          to label %1425 unwind label %1535

1425:                                             ; preds = %1423
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %275, ptr noundef nonnull align 8 dereferenceable(33088) %1419, ptr noundef nonnull align 8 dereferenceable(32) %276, ptr noundef nonnull %278)
          to label %1426 unwind label %1537

1426:                                             ; preds = %1425
  %1427 = getelementptr inbounds i8, ptr %275, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1427, ptr noundef nonnull align 8 dereferenceable(16) %218) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %283) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %283) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %274, ptr nonnull %275, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %283)
          to label %1428 unwind label %1539

1428:                                             ; preds = %1426
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %271, ptr noundef nonnull align 8 dereferenceable(33088) %1417, ptr noundef nonnull align 8 dereferenceable(32) %272, ptr noundef nonnull %274)
          to label %1429 unwind label %1541

1429:                                             ; preds = %1428
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.91") align 8 %252, ptr noundef %1398, ptr noundef nonnull %253, ptr noundef nonnull %271)
          to label %1430 unwind label %1543

1430:                                             ; preds = %1429
  %1431 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %252) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %252) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %271) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %274) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %283) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %283) #9
  %1432 = getelementptr inbounds i8, ptr %275, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1432) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %275) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %278) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %282) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %282) #9
  %1433 = getelementptr inbounds i8, ptr %279, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1433) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %279) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %280) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %281) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %281) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %280) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %279) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %276) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %277) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %277) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %276) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %275) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %272) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %273) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %273) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %272) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %253) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %256) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %270) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %270) #9
  %1434 = getelementptr inbounds i8, ptr %257, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1434) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %257) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %260) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %269) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %269) #9
  %1435 = getelementptr inbounds i8, ptr %261, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1435) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %261) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %264) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %268) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %268) #9
  %1436 = getelementptr inbounds i8, ptr %265, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1436) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %265) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %266) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %267) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %267) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %266) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %265) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %262) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %263) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %263) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %262) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %261) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %258) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %259) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %259) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %258) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %257) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %254) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %255) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %255) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %254) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %252) #9
  %1437 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %284, ptr noundef nonnull align 8 dereferenceable(24) %1437)
          to label %1438 unwind label %1570

1438:                                             ; preds = %1430
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %286) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %287) #9
  %1439 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %288) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %289) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %289) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %288, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %289)
          to label %1440 unwind label %.thread775

1440:                                             ; preds = %1438
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %287, ptr noundef nonnull align 8 dereferenceable(33088) %1439, ptr noundef nonnull align 8 dereferenceable(32) %288)
          to label %1441 unwind label %1573

1441:                                             ; preds = %1440
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %290) #9
  %1442 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %291) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %292) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %292) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %291, ptr noundef nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %292)
          to label %1443 unwind label %1575

1443:                                             ; preds = %1441
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %290, ptr noundef nonnull align 8 dereferenceable(33088) %1442, ptr noundef nonnull align 8 dereferenceable(32) %291)
          to label %1444 unwind label %1577

1444:                                             ; preds = %1443
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %286, ptr noundef nonnull align 8 dereferenceable(16) %287, ptr noundef nonnull align 8 dereferenceable(16) %290)
  %1445 = getelementptr inbounds i8, ptr %286, i64 32
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %293) #9
  %1446 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %294) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %295) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %295) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %294, ptr noundef nonnull @.str.97, ptr noundef nonnull align 1 dereferenceable(1) %295)
          to label %1447 unwind label %1579

1447:                                             ; preds = %1444
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %293, ptr noundef nonnull align 8 dereferenceable(33088) %1446, ptr noundef nonnull align 8 dereferenceable(32) %294)
          to label %1448 unwind label %1581

1448:                                             ; preds = %1447
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %296) #9
  %1449 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %297) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %298) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %298) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %297, ptr noundef nonnull @.str.100, ptr noundef nonnull align 1 dereferenceable(1) %298)
          to label %1450 unwind label %1583

1450:                                             ; preds = %1448
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %300) #9
  %1451 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %301) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %302) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %302) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %301, ptr noundef nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %302)
          to label %1452 unwind label %.thread765

1452:                                             ; preds = %1450
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %300, ptr noundef nonnull align 8 dereferenceable(33088) %1451, ptr noundef nonnull align 8 dereferenceable(32) %301)
          to label %1453 unwind label %1586

1453:                                             ; preds = %1452
  %1454 = getelementptr inbounds i8, ptr %300, i64 16
  %1455 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %303) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %304) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %304) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %303, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %304)
          to label %1456 unwind label %1588

1456:                                             ; preds = %1453
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1454, ptr noundef nonnull align 8 dereferenceable(33088) %1455, ptr noundef nonnull align 8 dereferenceable(32) %303)
          to label %1457 unwind label %1590

1457:                                             ; preds = %1456
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %305) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %305) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %299, ptr nonnull %300, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %305)
          to label %1458 unwind label %1592

1458:                                             ; preds = %1457
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %296, ptr noundef nonnull align 8 dereferenceable(33088) %1449, ptr noundef nonnull align 8 dereferenceable(32) %297, ptr noundef nonnull %299)
          to label %1459 unwind label %1594

1459:                                             ; preds = %1458
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %1445, ptr noundef nonnull align 8 dereferenceable(16) %293, ptr noundef nonnull align 8 dereferenceable(16) %296)
  %1460 = getelementptr inbounds i8, ptr %286, i64 64
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %306) #9
  %1461 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %307) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %308) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %308) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %307, ptr noundef nonnull @.str.91, ptr noundef nonnull align 1 dereferenceable(1) %308)
          to label %1462 unwind label %1596

1462:                                             ; preds = %1459
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %306, ptr noundef nonnull align 8 dereferenceable(33088) %1461, ptr noundef nonnull align 8 dereferenceable(32) %307)
          to label %1463 unwind label %1598

1463:                                             ; preds = %1462
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %309) #9
  %1464 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %310) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %311) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %311) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %310, ptr noundef nonnull @.str.100, ptr noundef nonnull align 1 dereferenceable(1) %311)
          to label %1465 unwind label %1600

1465:                                             ; preds = %1463
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %313) #9
  %1466 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %314) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %315) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %315) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %314, ptr noundef nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %315)
          to label %1467 unwind label %.thread757

1467:                                             ; preds = %1465
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %313, ptr noundef nonnull align 8 dereferenceable(33088) %1466, ptr noundef nonnull align 8 dereferenceable(32) %314)
          to label %1468 unwind label %1603

1468:                                             ; preds = %1467
  %1469 = getelementptr inbounds i8, ptr %313, i64 16
  %1470 = call noundef ptr @_ZNKSt19__shared_ptr_accessI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %316) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %317) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %317) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %316, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %317)
          to label %1471 unwind label %1605

1471:                                             ; preds = %1468
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1469, ptr noundef nonnull align 8 dereferenceable(33088) %1470, ptr noundef nonnull align 8 dereferenceable(32) %316)
          to label %1472 unwind label %1607

1472:                                             ; preds = %1471
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %318) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %318) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %312, ptr nonnull %313, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %318)
          to label %1473 unwind label %1609

1473:                                             ; preds = %1472
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %309, ptr noundef nonnull align 8 dereferenceable(33088) %1464, ptr noundef nonnull align 8 dereferenceable(32) %310, ptr noundef nonnull %312)
          to label %1474 unwind label %1611

1474:                                             ; preds = %1473
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(32) %1460, ptr noundef nonnull align 8 dereferenceable(16) %306, ptr noundef nonnull align 8 dereferenceable(16) %309)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %319) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %319) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %285, ptr nonnull %286, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %319)
          to label %1475 unwind label %1613

1475:                                             ; preds = %1474
  %1476 = invoke noundef zeroext i1 @_Z13CheckSolutionSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EES6_(ptr noundef nonnull %284, ptr noundef nonnull %285)
          to label %1477 unwind label %1615

1477:                                             ; preds = %1475
  %1478 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1476)
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %285) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %319) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %319) #9
  %1479 = getelementptr inbounds i8, ptr %286, i64 64
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1479) #9
  %1480 = getelementptr inbounds i8, ptr %286, i64 32
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1480) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %286) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %309) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %312) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %318) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %318) #9
  %1481 = getelementptr inbounds i8, ptr %313, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1481) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %313) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %316) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %317) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %317) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %316) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %314) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %315) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %315) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %314) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %313) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %310) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %311) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %311) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %310) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %309) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %306) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %307) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %308) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %308) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %307) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %306) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %296) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %299) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %305) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %305) #9
  %1482 = getelementptr inbounds i8, ptr %300, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1482) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %300) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %303) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %304) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %304) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %303) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %301) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %302) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %302) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %301) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %300) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %297) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %298) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %298) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %297) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %296) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %293) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %294) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %295) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %295) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %294) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %293) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %290) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %291) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %292) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %292) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %291) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %290) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %287) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %288) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %289) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %289) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %288) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %287) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %286) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %284) #9
  br i1 %1478, label %1661, label %1483

1483:                                             ; preds = %1477
  %1484 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1485 unwind label %1570

1485:                                             ; preds = %1483
  %1486 = load ptr, ptr %1484, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %320) #9
  %1487 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1488 unwind label %1649

1488:                                             ; preds = %1485
  %1489 = load ptr, ptr %1487, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %320, ptr noundef nonnull align 8 dereferenceable(30) %1489, i32 noundef 410)
          to label %1490 unwind label %1649

1490:                                             ; preds = %1488
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1486, ptr noundef nonnull align 8 dereferenceable(30) %320, ptr noundef nonnull @.str.101)
          to label %1491 unwind label %1649

1491:                                             ; preds = %1490
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %320) #9
  br label %1661

1492:                                             ; preds = %1376
  %1493 = landingpad { ptr, i32 }
          cleanup
  br label %1496

1494:                                             ; preds = %1384, %1382, %1379
  %1495 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %242) #9
  br label %1496

1496:                                             ; preds = %1494, %1492
  %.pn621 = phi { ptr, i32 } [ %1495, %1494 ], [ %1493, %1492 ]
  invoke void @__cxa_end_catch()
          to label %1701 unwind label %1710

1497:                                             ; preds = %1386
  %1498 = landingpad { ptr, i32 }
          cleanup
  br label %1501

1499:                                             ; preds = %1388
  %1500 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %244) #9
  br label %1501

1501:                                             ; preds = %1499, %1497
  %.pn623 = phi { ptr, i32 } [ %1500, %1499 ], [ %1498, %1497 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %245) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %245) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %244) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %243) #9
  br label %1701

1502:                                             ; preds = %1389
  %1503 = landingpad { ptr, i32 }
          cleanup
  br label %1506

1504:                                             ; preds = %1392
  %1505 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %247) #9
  br label %1506

1506:                                             ; preds = %1504, %1502
  %.pn625 = phi { ptr, i32 } [ %1505, %1504 ], [ %1503, %1502 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %248) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %248) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %247) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %246) #9
  br label %1701

1507:                                             ; preds = %1393
  %1508 = landingpad { ptr, i32 }
          cleanup
  br label %1511

1509:                                             ; preds = %1396
  %1510 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %250) #9
  br label %1511

1511:                                             ; preds = %1509, %1507
  %.pn627 = phi { ptr, i32 } [ %1510, %1509 ], [ %1508, %1507 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %251) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %251) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %250) #9
  br label %1700

1512:                                             ; preds = %1397
  %1513 = landingpad { ptr, i32 }
          cleanup
  br label %1569

.thread751:                                       ; preds = %1400
  %1514 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %259) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %259) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %258) #9
  br label %.loopexit788

1515:                                             ; preds = %1407
  %1516 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit793

1517:                                             ; preds = %1409
  %1518 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit793.loopexit

1519:                                             ; preds = %1410
  %1520 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit794

1521:                                             ; preds = %1411
  %1522 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit794.loopexit

1523:                                             ; preds = %1412
  %1524 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit795

1525:                                             ; preds = %1413
  %1526 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit795.loopexit

1527:                                             ; preds = %1415
  %1528 = landingpad { ptr, i32 }
          cleanup
  br label %1554

1529:                                             ; preds = %1416
  %1530 = landingpad { ptr, i32 }
          cleanup
  br label %1553

.thread731:                                       ; preds = %1418
  %1531 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %277) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %277) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %276) #9
  br label %.loopexit797

.thread721:                                       ; preds = %1420
  %1532 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %281) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %281) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %280) #9
  br label %1548

1533:                                             ; preds = %1422
  %1534 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit798

1535:                                             ; preds = %1423
  %1536 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit798.loopexit

1537:                                             ; preds = %1425
  %1538 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit799

1539:                                             ; preds = %1426
  %1540 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit799.loopexit

1541:                                             ; preds = %1428
  %1542 = landingpad { ptr, i32 }
          cleanup
  br label %1545

1543:                                             ; preds = %1429
  %1544 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %271) #9
  br label %1545

1545:                                             ; preds = %1543, %1541
  %.pn629 = phi { ptr, i32 } [ %1544, %1543 ], [ %1542, %1541 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %274) #9
  br label %.loopexit799.loopexit

.loopexit799.loopexit:                            ; preds = %1545, %1539
  %.pn629.pn = phi { ptr, i32 } [ %.pn629, %1545 ], [ %1540, %1539 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %283) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %283) #9
  %1546 = getelementptr inbounds i8, ptr %275, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1546) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %275) #9
  br label %.loopexit799

.loopexit799:                                     ; preds = %.loopexit799.loopexit, %1537
  %.0369 = phi ptr [ %275, %1537 ], [ %1427, %.loopexit799.loopexit ]
  %.0354 = phi i1 [ true, %1537 ], [ false, %.loopexit799.loopexit ]
  %.pn629.pn.pn = phi { ptr, i32 } [ %1538, %1537 ], [ %.pn629.pn, %.loopexit799.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %278) #9
  br label %.loopexit798.loopexit

.loopexit798.loopexit:                            ; preds = %.loopexit799, %1535
  %.1370 = phi ptr [ %.0369, %.loopexit799 ], [ %275, %1535 ]
  %.1355 = phi i1 [ %.0354, %.loopexit799 ], [ true, %1535 ]
  %.pn629.pn.pn.pn = phi { ptr, i32 } [ %.pn629.pn.pn, %.loopexit799 ], [ %1536, %1535 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %282) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %282) #9
  %1547 = getelementptr inbounds i8, ptr %279, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1547) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %279) #9
  br label %.loopexit798

.loopexit798:                                     ; preds = %.loopexit798.loopexit, %1533
  %.2371 = phi ptr [ %275, %1533 ], [ %.1370, %.loopexit798.loopexit ]
  %.2356 = phi i1 [ true, %1533 ], [ %.1355, %.loopexit798.loopexit ]
  %.pn629.pn.pn.pn.pn = phi { ptr, i32 } [ %1534, %1533 ], [ %.pn629.pn.pn.pn, %.loopexit798.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %280) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %281) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %281) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %280) #9
  br label %1548

1548:                                             ; preds = %.thread721, %.loopexit798
  %.pn629.pn.pn.pn.pn.pn730 = phi { ptr, i32 } [ %1532, %.thread721 ], [ %.pn629.pn.pn.pn.pn, %.loopexit798 ]
  %.3357729 = phi i1 [ true, %.thread721 ], [ %.2356, %.loopexit798 ]
  %.3372728 = phi ptr [ %275, %.thread721 ], [ %.2371, %.loopexit798 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %279) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %276) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %277) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %277) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %276) #9
  %1549 = icmp ne ptr %275, %.3372728
  %or.cond43.not = and i1 %.3357729, %1549
  br i1 %or.cond43.not, label %.preheader796, label %.loopexit797

.preheader796:                                    ; preds = %1548, %.preheader796
  %1550 = phi ptr [ %1551, %.preheader796 ], [ %.3372728, %1548 ]
  %1551 = getelementptr inbounds i8, ptr %1550, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1551) #9
  %1552 = icmp eq ptr %1551, %275
  br i1 %1552, label %.loopexit797, label %.preheader796

.loopexit797:                                     ; preds = %.preheader796, %.thread731, %1548
  %.pn629.pn.pn.pn.pn.pn.pn736 = phi { ptr, i32 } [ %1531, %.thread731 ], [ %.pn629.pn.pn.pn.pn.pn730, %1548 ], [ %.pn629.pn.pn.pn.pn.pn730, %.preheader796 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %275) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %272) #9
  br label %1553

1553:                                             ; preds = %.loopexit797, %1529
  %.pn629.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn629.pn.pn.pn.pn.pn.pn736, %.loopexit797 ], [ %1530, %1529 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %273) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %273) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %272) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %253) #9
  br label %1554

1554:                                             ; preds = %1553, %1527
  %.pn629.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn629.pn.pn.pn.pn.pn.pn.pn, %1553 ], [ %1528, %1527 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %256) #9
  br label %.loopexit795.loopexit

.loopexit795.loopexit:                            ; preds = %1554, %1525
  %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn629.pn.pn.pn.pn.pn.pn.pn.pn, %1554 ], [ %1526, %1525 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %270) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %270) #9
  %1555 = getelementptr inbounds i8, ptr %257, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1555) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %257) #9
  br label %.loopexit795

.loopexit795:                                     ; preds = %.loopexit795.loopexit, %1523
  %.0407 = phi ptr [ %257, %1523 ], [ %1414, %.loopexit795.loopexit ]
  %1556 = phi i1 [ false, %1523 ], [ true, %.loopexit795.loopexit ]
  %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1524, %1523 ], [ %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit795.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %260) #9
  br label %.loopexit794.loopexit

.loopexit794.loopexit:                            ; preds = %.loopexit795, %1521
  %.1408 = phi ptr [ %.0407, %.loopexit795 ], [ %257, %1521 ]
  %.1381 = phi i1 [ %1556, %.loopexit795 ], [ false, %1521 ]
  %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit795 ], [ %1522, %1521 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %269) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %269) #9
  %1557 = getelementptr inbounds i8, ptr %261, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1557) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %261) #9
  br label %.loopexit794

.loopexit794:                                     ; preds = %.loopexit794.loopexit, %1519
  %.2409 = phi ptr [ %257, %1519 ], [ %.1408, %.loopexit794.loopexit ]
  %1558 = phi i1 [ false, %1519 ], [ true, %.loopexit794.loopexit ]
  %.2382 = phi i1 [ false, %1519 ], [ %.1381, %.loopexit794.loopexit ]
  %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1520, %1519 ], [ %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit794.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %264) #9
  br label %.loopexit793.loopexit

.loopexit793.loopexit:                            ; preds = %.loopexit794, %1517
  %.3410 = phi ptr [ %.2409, %.loopexit794 ], [ %257, %1517 ]
  %.1389 = phi i1 [ %1558, %.loopexit794 ], [ false, %1517 ]
  %.3383 = phi i1 [ %.2382, %.loopexit794 ], [ false, %1517 ]
  %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit794 ], [ %1518, %1517 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %268) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %268) #9
  %1559 = getelementptr inbounds i8, ptr %265, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1559) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %265) #9
  br label %.loopexit793

.loopexit793:                                     ; preds = %.loopexit793.loopexit, %1515
  %.4411 = phi ptr [ %257, %1515 ], [ %.3410, %.loopexit793.loopexit ]
  %1560 = phi i1 [ false, %1515 ], [ true, %.loopexit793.loopexit ]
  %.2390 = phi i1 [ false, %1515 ], [ %.1389, %.loopexit793.loopexit ]
  %.4384 = phi i1 [ false, %1515 ], [ %.3383, %.loopexit793.loopexit ]
  %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1516, %1515 ], [ %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit793.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %266) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %267) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %267) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %266) #9
  br i1 %1560, label %.loopexit792, label %.preheader791

1561:                                             ; preds = %1405
  %1562 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %267) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %267) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %266) #9
  br label %.preheader791

.preheader791:                                    ; preds = %.loopexit793, %1561
  %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn743.ph = phi { ptr, i32 } [ %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit793 ], [ %1562, %1561 ]
  %.5385741.ph = phi i1 [ %.4384, %.loopexit793 ], [ false, %1561 ]
  %.3391739.ph = phi i1 [ %.2390, %.loopexit793 ], [ false, %1561 ]
  %.5412737.ph = phi ptr [ %.4411, %.loopexit793 ], [ %257, %1561 ]
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %265) #9
  br label %.loopexit792

.loopexit792:                                     ; preds = %.preheader791, %.loopexit793
  %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn744 = phi { ptr, i32 } [ %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit793 ], [ %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn743.ph, %.preheader791 ]
  %.5385742 = phi i1 [ %.4384, %.loopexit793 ], [ %.5385741.ph, %.preheader791 ]
  %.3391740 = phi i1 [ %.2390, %.loopexit793 ], [ %.3391739.ph, %.preheader791 ]
  %.5412738 = phi ptr [ %.4411, %.loopexit793 ], [ %.5412737.ph, %.preheader791 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %265) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %262) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %263) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %263) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %262) #9
  br i1 %.3391740, label %.loopexit790, label %.preheader789

1563:                                             ; preds = %1402
  %1564 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %263) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %263) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %262) #9
  br label %.preheader789

.preheader789:                                    ; preds = %.loopexit792, %1563
  %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn749.ph = phi { ptr, i32 } [ %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn744, %.loopexit792 ], [ %1564, %1563 ]
  %.6386747.ph = phi i1 [ %.5385742, %.loopexit792 ], [ false, %1563 ]
  %.6413745.ph = phi ptr [ %.5412738, %.loopexit792 ], [ %257, %1563 ]
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %261) #9
  br label %.loopexit790

.loopexit790:                                     ; preds = %.preheader789, %.loopexit792
  %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn750 = phi { ptr, i32 } [ %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn744, %.loopexit792 ], [ %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn749.ph, %.preheader789 ]
  %.6386748 = phi i1 [ %.5385742, %.loopexit792 ], [ %.6386747.ph, %.preheader789 ]
  %.6413746 = phi ptr [ %.5412738, %.loopexit792 ], [ %.6413745.ph, %.preheader789 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %261) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %258) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %259) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %259) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %258) #9
  %1565 = icmp eq ptr %257, %.6413746
  %or.cond52 = select i1 %.6386748, i1 true, i1 %1565
  br i1 %or.cond52, label %.loopexit788, label %.preheader787

.preheader787:                                    ; preds = %.loopexit790, %.preheader787
  %1566 = phi ptr [ %1567, %.preheader787 ], [ %.6413746, %.loopexit790 ]
  %1567 = getelementptr inbounds i8, ptr %1566, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1567) #9
  %1568 = icmp eq ptr %1567, %257
  br i1 %1568, label %.loopexit788, label %.preheader787

.loopexit788:                                     ; preds = %.preheader787, %.thread751, %.loopexit790
  %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn756 = phi { ptr, i32 } [ %1514, %.thread751 ], [ %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn750, %.loopexit790 ], [ %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn750, %.preheader787 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %257) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %254) #9
  br label %1569

1569:                                             ; preds = %.loopexit788, %1512
  %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn756, %.loopexit788 ], [ %1513, %1512 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %255) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %255) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %254) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %252) #9
  br label %1699

1570:                                             ; preds = %1483, %1430
  %1571 = landingpad { ptr, i32 }
          catch ptr null
  br label %1651

.thread775:                                       ; preds = %1438
  %1572 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %289) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %289) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %288) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %287) #9
  br label %.loopexit

1573:                                             ; preds = %1440
  %1574 = landingpad { ptr, i32 }
          catch ptr null
  br label %1644

1575:                                             ; preds = %1441
  %1576 = landingpad { ptr, i32 }
          catch ptr null
  br label %1643

1577:                                             ; preds = %1443
  %1578 = landingpad { ptr, i32 }
          catch ptr null
  br label %1642

1579:                                             ; preds = %1444
  %1580 = landingpad { ptr, i32 }
          catch ptr null
  br label %1641

1581:                                             ; preds = %1447
  %1582 = landingpad { ptr, i32 }
          catch ptr null
  br label %1640

1583:                                             ; preds = %1448
  %1584 = landingpad { ptr, i32 }
          catch ptr null
  br label %1639

.thread765:                                       ; preds = %1450
  %1585 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %302) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %302) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %301) #9
  br label %.loopexit782

1586:                                             ; preds = %1452
  %1587 = landingpad { ptr, i32 }
          catch ptr null
  br label %1634

1588:                                             ; preds = %1453
  %1589 = landingpad { ptr, i32 }
          catch ptr null
  br label %1633

1590:                                             ; preds = %1456
  %1591 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit783

1592:                                             ; preds = %1457
  %1593 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit783.loopexit

1594:                                             ; preds = %1458
  %1595 = landingpad { ptr, i32 }
          catch ptr null
  br label %1631

1596:                                             ; preds = %1459
  %1597 = landingpad { ptr, i32 }
          catch ptr null
  br label %1630

1598:                                             ; preds = %1462
  %1599 = landingpad { ptr, i32 }
          catch ptr null
  br label %1629

1600:                                             ; preds = %1463
  %1601 = landingpad { ptr, i32 }
          catch ptr null
  br label %1628

.thread757:                                       ; preds = %1465
  %1602 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %315) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %315) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %314) #9
  br label %.loopexit785

1603:                                             ; preds = %1467
  %1604 = landingpad { ptr, i32 }
          catch ptr null
  br label %1623

1605:                                             ; preds = %1468
  %1606 = landingpad { ptr, i32 }
          catch ptr null
  br label %1622

1607:                                             ; preds = %1471
  %1608 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit786

1609:                                             ; preds = %1472
  %1610 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit786.loopexit

1611:                                             ; preds = %1473
  %1612 = landingpad { ptr, i32 }
          catch ptr null
  br label %1620

1613:                                             ; preds = %1474
  %1614 = landingpad { ptr, i32 }
          catch ptr null
  br label %1617

1615:                                             ; preds = %1475
  %1616 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %285) #9
  br label %1617

1617:                                             ; preds = %1615, %1613
  %.pn649 = phi { ptr, i32 } [ %1616, %1615 ], [ %1614, %1613 ]
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %319) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %319) #9
  %1618 = getelementptr inbounds i8, ptr %286, i64 64
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1618) #9
  %1619 = getelementptr inbounds i8, ptr %286, i64 32
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1619) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %286) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %309) #9
  br label %1620

1620:                                             ; preds = %1617, %1611
  %.pn649.pn = phi { ptr, i32 } [ %.pn649, %1617 ], [ %1612, %1611 ]
  %.0 = phi i1 [ false, %1617 ], [ true, %1611 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %312) #9
  br label %.loopexit786.loopexit

.loopexit786.loopexit:                            ; preds = %1620, %1609
  %.pn649.pn.pn = phi { ptr, i32 } [ %.pn649.pn, %1620 ], [ %1610, %1609 ]
  %.1 = phi i1 [ %.0, %1620 ], [ true, %1609 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %318) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %318) #9
  %1621 = getelementptr inbounds i8, ptr %313, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1621) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %313) #9
  br label %.loopexit786

.loopexit786:                                     ; preds = %.loopexit786.loopexit, %1607
  %.pn649.pn.pn.pn = phi { ptr, i32 } [ %1608, %1607 ], [ %.pn649.pn.pn, %.loopexit786.loopexit ]
  %.0166 = phi i1 [ true, %1607 ], [ false, %.loopexit786.loopexit ]
  %.2 = phi i1 [ true, %1607 ], [ %.1, %.loopexit786.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %316) #9
  br label %1622

1622:                                             ; preds = %.loopexit786, %1605
  %.pn649.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn649.pn.pn.pn, %.loopexit786 ], [ %1606, %1605 ]
  %.1167 = phi i1 [ %.0166, %.loopexit786 ], [ true, %1605 ]
  %.3 = phi i1 [ %.2, %.loopexit786 ], [ true, %1605 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %317) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %317) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %316) #9
  br label %1623

1623:                                             ; preds = %1603, %1622
  %.pn649.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn649.pn.pn.pn.pn, %1622 ], [ %1604, %1603 ]
  %.0170 = phi ptr [ %1469, %1622 ], [ %313, %1603 ]
  %.2168 = phi i1 [ %.1167, %1622 ], [ true, %1603 ]
  %.4 = phi i1 [ %.3, %1622 ], [ true, %1603 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %314) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %315) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %315) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %314) #9
  %1624 = icmp ne ptr %313, %.0170
  %or.cond55.not = select i1 %.2168, i1 %1624, i1 false
  br i1 %or.cond55.not, label %.preheader784, label %.loopexit785

.preheader784:                                    ; preds = %1623, %.preheader784
  %1625 = phi ptr [ %1626, %.preheader784 ], [ %.0170, %1623 ]
  %1626 = getelementptr inbounds i8, ptr %1625, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1626) #9
  %1627 = icmp eq ptr %1626, %313
  br i1 %1627, label %.loopexit785, label %.preheader784

.loopexit785:                                     ; preds = %.preheader784, %.thread757, %1623
  %.5764 = phi i1 [ true, %.thread757 ], [ %.4, %1623 ], [ %.4, %.preheader784 ]
  %.pn649.pn.pn.pn.pn.pn.pn763 = phi { ptr, i32 } [ %1602, %.thread757 ], [ %.pn649.pn.pn.pn.pn.pn, %1623 ], [ %.pn649.pn.pn.pn.pn.pn, %.preheader784 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %313) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %310) #9
  br label %1628

1628:                                             ; preds = %.loopexit785, %1600
  %.pn649.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn649.pn.pn.pn.pn.pn.pn763, %.loopexit785 ], [ %1601, %1600 ]
  %.6 = phi i1 [ %.5764, %.loopexit785 ], [ true, %1600 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %311) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %311) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %310) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %309) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %306) #9
  br label %1629

1629:                                             ; preds = %1628, %1598
  %.pn649.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn649.pn.pn.pn.pn.pn.pn.pn, %1628 ], [ %1599, %1598 ]
  %.7 = phi i1 [ %.6, %1628 ], [ true, %1598 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %307) #9
  br label %1630

1630:                                             ; preds = %1629, %1596
  %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn649.pn.pn.pn.pn.pn.pn.pn.pn, %1629 ], [ %1597, %1596 ]
  %.8 = phi i1 [ %.7, %1629 ], [ true, %1596 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %308) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %308) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %307) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %306) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %296) #9
  br label %1631

1631:                                             ; preds = %1630, %1594
  %.0335 = phi ptr [ %1460, %1630 ], [ %1445, %1594 ]
  %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1630 ], [ %1595, %1594 ]
  %.9 = phi i1 [ %.8, %1630 ], [ true, %1594 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %299) #9
  br label %.loopexit783.loopexit

.loopexit783.loopexit:                            ; preds = %1631, %1592
  %.1336 = phi ptr [ %.0335, %1631 ], [ %1445, %1592 ]
  %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1631 ], [ %1593, %1592 ]
  %.10 = phi i1 [ %.9, %1631 ], [ true, %1592 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %305) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %305) #9
  %1632 = getelementptr inbounds i8, ptr %300, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1632) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %300) #9
  br label %.loopexit783

.loopexit783:                                     ; preds = %.loopexit783.loopexit, %1590
  %.2337 = phi ptr [ %1445, %1590 ], [ %.1336, %.loopexit783.loopexit ]
  %.0323 = phi i1 [ true, %1590 ], [ false, %.loopexit783.loopexit ]
  %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1591, %1590 ], [ %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit783.loopexit ]
  %.11 = phi i1 [ true, %1590 ], [ %.10, %.loopexit783.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %303) #9
  br label %1633

1633:                                             ; preds = %.loopexit783, %1588
  %.3338 = phi ptr [ %.2337, %.loopexit783 ], [ %1445, %1588 ]
  %.1324 = phi i1 [ %.0323, %.loopexit783 ], [ true, %1588 ]
  %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit783 ], [ %1589, %1588 ]
  %.12 = phi i1 [ %.11, %.loopexit783 ], [ true, %1588 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %304) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %304) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %303) #9
  br label %1634

1634:                                             ; preds = %1586, %1633
  %.4339 = phi ptr [ %.3338, %1633 ], [ %1445, %1586 ]
  %.0327 = phi ptr [ %1454, %1633 ], [ %300, %1586 ]
  %.2325 = phi i1 [ %.1324, %1633 ], [ true, %1586 ]
  %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1633 ], [ %1587, %1586 ]
  %.13 = phi i1 [ %.12, %1633 ], [ true, %1586 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %301) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %302) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %302) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %301) #9
  %1635 = icmp ne ptr %300, %.0327
  %or.cond58.not = select i1 %.2325, i1 %1635, i1 false
  br i1 %or.cond58.not, label %.preheader781, label %.loopexit782

.preheader781:                                    ; preds = %1634, %.preheader781
  %1636 = phi ptr [ %1637, %.preheader781 ], [ %.0327, %1634 ]
  %1637 = getelementptr inbounds i8, ptr %1636, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1637) #9
  %1638 = icmp eq ptr %1637, %300
  br i1 %1638, label %.loopexit782, label %.preheader781

.loopexit782:                                     ; preds = %.preheader781, %.thread765, %1634
  %.14774 = phi i1 [ true, %.thread765 ], [ %.13, %1634 ], [ %.13, %.preheader781 ]
  %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn773 = phi { ptr, i32 } [ %1585, %.thread765 ], [ %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1634 ], [ %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.preheader781 ]
  %.5340772 = phi ptr [ %1445, %.thread765 ], [ %.4339, %1634 ], [ %.4339, %.preheader781 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %300) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %297) #9
  br label %1639

1639:                                             ; preds = %.loopexit782, %1583
  %.6341 = phi ptr [ %.5340772, %.loopexit782 ], [ %1445, %1583 ]
  %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn773, %.loopexit782 ], [ %1584, %1583 ]
  %.15 = phi i1 [ %.14774, %.loopexit782 ], [ true, %1583 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %298) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %298) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %297) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %296) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %293) #9
  br label %1640

1640:                                             ; preds = %1639, %1581
  %.7342 = phi ptr [ %.6341, %1639 ], [ %1445, %1581 ]
  %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1639 ], [ %1582, %1581 ]
  %.16 = phi i1 [ %.15, %1639 ], [ true, %1581 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %294) #9
  br label %1641

1641:                                             ; preds = %1640, %1579
  %.8343 = phi ptr [ %.7342, %1640 ], [ %1445, %1579 ]
  %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1640 ], [ %1580, %1579 ]
  %.17 = phi i1 [ %.16, %1640 ], [ true, %1579 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %295) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %295) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %294) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %293) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %290) #9
  br label %1642

1642:                                             ; preds = %1641, %1577
  %.9344 = phi ptr [ %.8343, %1641 ], [ %286, %1577 ]
  %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1641 ], [ %1578, %1577 ]
  %.18 = phi i1 [ %.17, %1641 ], [ true, %1577 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %291) #9
  br label %1643

1643:                                             ; preds = %1642, %1575
  %.10345 = phi ptr [ %.9344, %1642 ], [ %286, %1575 ]
  %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1642 ], [ %1576, %1575 ]
  %.19 = phi i1 [ %.18, %1642 ], [ true, %1575 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %292) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %292) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %291) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %290) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %287) #9
  br label %1644

1644:                                             ; preds = %1573, %1643
  %.11346 = phi ptr [ %.10345, %1643 ], [ %286, %1573 ]
  %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1643 ], [ %1574, %1573 ]
  %.20 = phi i1 [ %.19, %1643 ], [ true, %1573 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %288) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %289) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %289) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %288) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %287) #9
  %1645 = icmp ne ptr %286, %.11346
  %or.cond61.not = select i1 %.20, i1 %1645, i1 false
  br i1 %or.cond61.not, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %1644, %.preheader
  %1646 = phi ptr [ %1647, %.preheader ], [ %.11346, %1644 ]
  %1647 = getelementptr inbounds i8, ptr %1646, i64 -32
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1647) #9
  %1648 = icmp eq ptr %1647, %286
  br i1 %1648, label %.loopexit, label %.preheader

.loopexit:                                        ; preds = %.preheader, %.thread775, %1644
  %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn780 = phi { ptr, i32 } [ %1572, %.thread775 ], [ %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1644 ], [ %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.preheader ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %286) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %284) #9
  br label %1651

1649:                                             ; preds = %1490, %1488, %1485
  %1650 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %320) #9
  br label %1651

1651:                                             ; preds = %1649, %.loopexit, %1570
  %.pn650 = phi { ptr, i32 } [ %1650, %1649 ], [ %1571, %1570 ], [ %.pn649.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn780, %.loopexit ]
  %.185 = extractvalue { ptr, i32 } %.pn650, 0
  %1652 = call ptr @__cxa_begin_catch(ptr %.185) #9
  %1653 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1654 unwind label %1672

1654:                                             ; preds = %1651
  %1655 = load ptr, ptr %1653, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %321) #9
  %1656 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1657 unwind label %1674

1657:                                             ; preds = %1654
  %1658 = load ptr, ptr %1656, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %321, ptr noundef nonnull align 8 dereferenceable(30) %1658, i32 noundef 410)
          to label %1659 unwind label %1674

1659:                                             ; preds = %1657
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1655, ptr noundef nonnull align 8 dereferenceable(30) %321, ptr noundef nonnull @.str.102)
          to label %1660 unwind label %1674

1660:                                             ; preds = %1659
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %321) #9
  invoke void @__cxa_end_catch()
          to label %1661 unwind label %1676

1661:                                             ; preds = %1477, %1491, %1660
  %1662 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext true)
  br i1 %1662, label %1693, label %1663

1663:                                             ; preds = %1661
  %1664 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1665 unwind label %1679

1665:                                             ; preds = %1663
  %1666 = load ptr, ptr %1664, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %322) #9
  %1667 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1668 unwind label %1681

1668:                                             ; preds = %1665
  %1669 = load ptr, ptr %1667, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %322, ptr noundef nonnull align 8 dereferenceable(30) %1669, i32 noundef 414)
          to label %1670 unwind label %1681

1670:                                             ; preds = %1668
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1666, ptr noundef nonnull align 8 dereferenceable(30) %322, ptr noundef nonnull @.str.103)
          to label %1671 unwind label %1681

1671:                                             ; preds = %1670
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %322) #9
  br label %1693

1672:                                             ; preds = %1651
  %1673 = landingpad { ptr, i32 }
          cleanup
  br label %1678

1674:                                             ; preds = %1659, %1657, %1654
  %1675 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %321) #9
  br label %1678

1676:                                             ; preds = %1692, %1660
  %1677 = landingpad { ptr, i32 }
          cleanup
  br label %1699

1678:                                             ; preds = %1674, %1672
  %.pn651 = phi { ptr, i32 } [ %1675, %1674 ], [ %1673, %1672 ]
  invoke void @__cxa_end_catch()
          to label %1699 unwind label %1710

1679:                                             ; preds = %1663
  %1680 = landingpad { ptr, i32 }
          catch ptr null
  br label %1683

1681:                                             ; preds = %1670, %1668, %1665
  %1682 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %322) #9
  br label %1683

1683:                                             ; preds = %1681, %1679
  %.pn653 = phi { ptr, i32 } [ %1682, %1681 ], [ %1680, %1679 ]
  %.187 = extractvalue { ptr, i32 } %.pn653, 0
  %1684 = call ptr @__cxa_begin_catch(ptr %.187) #9
  %1685 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1686 unwind label %1694

1686:                                             ; preds = %1683
  %1687 = load ptr, ptr %1685, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %323) #9
  %1688 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1689 unwind label %1696

1689:                                             ; preds = %1686
  %1690 = load ptr, ptr %1688, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %323, ptr noundef nonnull align 8 dereferenceable(30) %1690, i32 noundef 414)
          to label %1691 unwind label %1696

1691:                                             ; preds = %1689
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1687, ptr noundef nonnull align 8 dereferenceable(30) %323, ptr noundef nonnull @.str.104)
          to label %1692 unwind label %1696

1692:                                             ; preds = %1691
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %323) #9
  invoke void @__cxa_end_catch()
          to label %1693 unwind label %1676

1693:                                             ; preds = %1661, %1671, %1692
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %249) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %249) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %218) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %218) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %215) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %215) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %193) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %193) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #9
  call void @_ZNSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #9
  ret void

1694:                                             ; preds = %1683
  %1695 = landingpad { ptr, i32 }
          cleanup
  br label %1698

1696:                                             ; preds = %1691, %1689, %1686
  %1697 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %323) #9
  br label %1698

1698:                                             ; preds = %1696, %1694
  %.pn654 = phi { ptr, i32 } [ %1697, %1696 ], [ %1695, %1694 ]
  invoke void @__cxa_end_catch()
          to label %1699 unwind label %1710

1699:                                             ; preds = %1698, %1678, %1676, %1569
  %.pn656 = phi { ptr, i32 } [ %1677, %1676 ], [ %.pn654, %1698 ], [ %.pn651, %1678 ], [ %.pn629.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1569 ]
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %249) #9
  br label %1700

1700:                                             ; preds = %1699, %1511
  %.pn656.pn = phi { ptr, i32 } [ %.pn656, %1699 ], [ %.pn627, %1511 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %249) #9
  br label %1701

1701:                                             ; preds = %1496, %1355, %1700, %1506, %1501, %1371, %1360, %1353, %1305
  %.pn656.pn.pn = phi { ptr, i32 } [ %.pn656.pn, %1700 ], [ %.pn625, %1506 ], [ %.pn623, %1501 ], [ %1354, %1353 ], [ %.pn621, %1496 ], [ %.pn616.pn.pn, %1371 ], [ %.pn614, %1360 ], [ %.pn612, %1355 ], [ %1306, %1305 ]
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %218) #9
  br label %1702

1702:                                             ; preds = %1701, %1304
  %.pn656.pn.pn.pn = phi { ptr, i32 } [ %.pn656.pn.pn, %1701 ], [ %.pn608, %1304 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %218) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %215) #9
  br label %1703

1703:                                             ; preds = %1702, %1299
  %.pn656.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn656.pn.pn.pn, %1702 ], [ %.pn606, %1299 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %215) #9
  br label %1704

1704:                                             ; preds = %1294, %1703, %1292, %1248
  %.pn656.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn656.pn.pn.pn.pn, %1703 ], [ %1293, %1292 ], [ %.pn604, %1294 ], [ %.pn592.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1248 ]
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %193) #9
  br label %1705

1705:                                             ; preds = %1704, %1213
  %.pn656.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn656.pn.pn.pn.pn.pn, %1704 ], [ %.pn590, %1213 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %193) #9
  br label %1706

1706:                                             ; preds = %1208, %1073, %917, %791, %685, %596, %532, %1705, %1121, %965, %839, %713, %610, %546, %530
  %.pn656.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn656.pn.pn.pn.pn.pn.pn, %1705 ], [ %531, %530 ], [ %.pn588, %1208 ], [ %.pn571.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1121 ], [ %.pn569, %1073 ], [ %.pn552.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %965 ], [ %.pn550, %917 ], [ %.pn534.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %839 ], [ %.pn532, %791 ], [ %.pn519.pn.pn.pn.pn.pn.pn.pn.pn.pn, %713 ], [ %.pn517, %685 ], [ %.pn510.pn.pn.pn, %610 ], [ %.pn508, %596 ], [ %.pn502.pn.pn.pn, %546 ], [ %.pn500, %532 ]
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #9
  br label %1707

1707:                                             ; preds = %1706, %488
  %.pn656.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn656.pn.pn.pn.pn.pn.pn.pn, %1706 ], [ %.pn494.pn.pn.pn, %488 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #9
  br label %1708

1708:                                             ; preds = %474, %424, %380, %1707, %378
  %.pn656.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn656.pn.pn.pn.pn.pn.pn.pn.pn, %1707 ], [ %379, %378 ], [ %.pn492, %474 ], [ %.pn488, %424 ], [ %.pn484, %380 ]
  call void @_ZNSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  br label %1709

1709:                                             ; preds = %1708, %339
  %.pn656.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn656.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1708 ], [ %340, %339 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #9
  resume { ptr, i32 } %.pn656.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn

1710:                                             ; preds = %1698, %1678, %1496, %1355, %1294, %1208, %1073, %917, %791, %685, %596, %532, %474, %424, %380
  %1711 = landingpad { ptr, i32 }
          catch ptr null
  %1712 = extractvalue { ptr, i32 } %1711, 0
  call void @__clang_call_terminate(ptr %1712) #12
  unreachable
}

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

declare void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.91") align 8, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10shared_ptrI7HtnTermEC2EDn(ptr noundef nonnull align 8 dereferenceable(16), ptr) unnamed_addr #3 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 #3 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 #5

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 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 #5

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S5_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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 #3 align 2

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

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

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