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

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

%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.85" = type { %"class.std::__shared_ptr.86" }
%"class.std::__shared_ptr.86" = type { ptr, %"class.std::__shared_count" }
%"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_ptr.56" = type { %"class.std::__shared_ptr.57" }
%"class.std::__shared_ptr.57" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.101" = type { %"class.std::__shared_ptr.102" }
%"class.std::__shared_ptr.102" = type { ptr, %"class.std::__shared_count" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.88" = type { i8 }
%"class.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 }
%"class.UnitTest::TestDetails" = type <{ ptr, ptr, ptr, i32, i8, i8, [2 x i8] }>
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<std::vector<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>, std::allocator<std::vector<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>, std::allocator<std::vector<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>, std::allocator<std::vector<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>, std::allocator<std::vector<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::initializer_list.104" = type { ptr, i64 }
%"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::allocator.10" = type { i8 }

@.str.77 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.502 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.505 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.506 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.507 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.508 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.509 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.510 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.511 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.512 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.513 = external hidden unnamed_addr constant [158 x i8], align 1
@.str.514 = external hidden unnamed_addr constant [188 x i8], align 1
@.str.515 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.516 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.517 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.518 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.519 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.520 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.521 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.522 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.523 = external hidden unnamed_addr constant [152 x i8], align 1
@.str.524 = external hidden unnamed_addr constant [182 x i8], align 1
@.str.525 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.526 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.527 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.528 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.529 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.530 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.531 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.532 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.533 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.534 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.535 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.536 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.537 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.538 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.539 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.540 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.541 = external hidden unnamed_addr constant [118 x i8], align 1
@.str.542 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.543 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.544 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.545 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.546 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.547 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.548 = external hidden unnamed_addr constant [120 x i8], align 1

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

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

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 #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z14CheckSolutionsSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EES8_(ptr noundef, ptr noundef) #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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10HtnRuleSetC2Ev(ptr noundef nonnull align 8 dereferenceable(144)) unnamed_addr #2 align 2

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

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

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

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

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

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

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 noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(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 @_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 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)) #4

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

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

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

; 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 #2 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_S2_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 zeroext i1 @_ZN25SuiteHtnGoalResolverTests6IsTrueESt10shared_ptrISt6vectorIS1_ISt4pairIS0_I7HtnTermES4_ESaIS5_EESaIS7_EEE(ptr noundef) #3

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

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

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

declare void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144)) #4

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

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

declare void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8, ptr noundef nonnull align 8 dereferenceable(64), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) #4

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

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

829:                                              ; preds = %1
  call void @_ZNSt10shared_ptrI14HtnTermFactoryEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef %828)
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #9
  %830 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 144) #10
          to label %831 unwind label %914

831:                                              ; preds = %829
  invoke void @_ZN10HtnRuleSetC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %830)
          to label %832 unwind label %918

832:                                              ; preds = %831
  invoke void @_ZNSt10shared_ptrI10HtnRuleSetEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef %830)
          to label %833 unwind label %914

833:                                              ; preds = %832
  call void @llvm.lifetime.start.p0(i64 16, ptr %7) #9
  %834 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #10
          to label %835 unwind label %922

835:                                              ; preds = %833
  invoke void @_ZN15HtnGoalResolverC1Ev(ptr noundef nonnull align 8 dereferenceable(64) %834)
          to label %836 unwind label %926

836:                                              ; preds = %835
  invoke void @_ZNSt10shared_ptrI15HtnGoalResolverEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef %834)
          to label %837 unwind label %922

837:                                              ; preds = %836
  call void @llvm.lifetime.start.p0(i64 16, ptr %8) #9
  call void @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #9
  %838 = 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 %10) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %839 unwind label %930

839:                                              ; preds = %837
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %9, ptr noundef nonnull align 8 dereferenceable(33088) %838, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %840 unwind label %934

840:                                              ; preds = %839
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #9
  %841 = 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 %13) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef @.str.91, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %842 unwind label %939

842:                                              ; preds = %840
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %12, ptr noundef nonnull align 8 dereferenceable(33088) %841, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %843 unwind label %943

843:                                              ; preds = %842
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #9
  %844 = 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 %16) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.97, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %845 unwind label %948

845:                                              ; preds = %843
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %15, ptr noundef nonnull align 8 dereferenceable(33088) %844, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %846 unwind label %952

846:                                              ; preds = %845
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #9
  %847 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %848 = 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 %19) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.502, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %849 unwind label %957

849:                                              ; preds = %846
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %18, ptr noundef nonnull align 8 dereferenceable(33088) %848, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %850 unwind label %961

850:                                              ; preds = %849
  call void @llvm.memset.p0.i64(ptr align 8 %21, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %847, ptr noundef %18, ptr noundef %21)
          to label %851 unwind label %965

851:                                              ; preds = %850
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #9
  %852 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %853 = 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 %23) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef @.str.505, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %854 unwind label %971

854:                                              ; preds = %851
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #9
  store i1 true, ptr %31, align 1
  store ptr %27, ptr %28, align 8
  %855 = 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 %29) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str.506, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %856 unwind label %975

856:                                              ; preds = %854
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %27, ptr noundef nonnull align 8 dereferenceable(33088) %855, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %857 unwind label %979

857:                                              ; preds = %856
  store i1 false, ptr %31, align 1
  %858 = getelementptr inbounds %"class.std::initializer_list.94", ptr %26, i32 0, i32 0
  store ptr %27, ptr %858, align 8, !tbaa !9
  %859 = getelementptr inbounds %"class.std::initializer_list.94", ptr %26, i32 0, i32 1
  store i64 1, ptr %859, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #9
  %860 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 0
  %861 = load ptr, ptr %860, align 8
  %862 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 1
  %863 = load i64, ptr %862, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr %861, i64 %863, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %864 unwind label %983

864:                                              ; preds = %857
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %22, ptr noundef nonnull align 8 dereferenceable(33088) %853, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef %25)
          to label %865 unwind label %987

865:                                              ; preds = %864
  call void @llvm.memset.p0.i64(ptr align 8 %33, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %852, ptr noundef %22, ptr noundef %33)
          to label %866 unwind label %991

866:                                              ; preds = %865
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #9
  %867 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %27, i32 0, i32 0
  %868 = getelementptr inbounds %"class.std::shared_ptr", ptr %867, i64 1
  br label %869

869:                                              ; preds = %869, %866
  %870 = phi ptr [ %868, %866 ], [ %871, %869 ]
  %871 = getelementptr inbounds %"class.std::shared_ptr", ptr %870, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %871) #9
  %872 = icmp eq ptr %871, %867
  br i1 %872, label %873, label %869

873:                                              ; preds = %869
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #9
  %874 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  %875 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %876 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %35) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #9
  store i1 true, ptr %41, align 1
  store ptr %37, ptr %38, align 8
  %877 = 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 %39) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef @.str.502, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %878 unwind label %1017

878:                                              ; preds = %873
  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) %877, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %879 unwind label %1021

879:                                              ; preds = %878
  store i1 false, ptr %41, align 1
  %880 = getelementptr inbounds %"class.std::initializer_list.94", ptr %36, i32 0, i32 0
  store ptr %37, ptr %880, align 8, !tbaa !9
  %881 = getelementptr inbounds %"class.std::initializer_list.94", ptr %36, i32 0, i32 1
  store i64 1, ptr %881, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #9
  %882 = getelementptr inbounds { ptr, i64 }, ptr %36, i32 0, i32 0
  %883 = load ptr, ptr %882, align 8
  %884 = getelementptr inbounds { ptr, i64 }, ptr %36, i32 0, i32 1
  %885 = load i64, ptr %884, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %35, ptr %883, i64 %885, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %886 unwind label %1025

886:                                              ; preds = %879
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %34, ptr noundef nonnull align 8 dereferenceable(64) %874, ptr noundef %875, ptr noundef %876, ptr noundef nonnull align 8 dereferenceable(24) %35, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %887 unwind label %1029

887:                                              ; preds = %886
  %888 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %34) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #9
  %889 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %37, i32 0, i32 0
  %890 = getelementptr inbounds %"class.std::shared_ptr", ptr %889, i64 1
  br label %891

891:                                              ; preds = %891, %887
  %892 = phi ptr [ %890, %887 ], [ %893, %891 ]
  %893 = getelementptr inbounds %"class.std::shared_ptr", ptr %892, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %893) #9
  %894 = icmp eq ptr %893, %889
  br i1 %894, label %895, label %891

895:                                              ; preds = %891
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #9
  br label %896

896:                                              ; preds = %895
  call void @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %43, ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  %897 = call noundef zeroext i1 @_ZN25SuiteHtnGoalResolverTests6IsTrueESt10shared_ptrISt6vectorIS1_ISt4pairIS0_I7HtnTermES4_ESaIS5_EESaIS7_EEE(ptr noundef %43)
  %898 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %897)
          to label %899 unwind label %1053

899:                                              ; preds = %896
  %900 = xor i1 %898, true
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #9
  br i1 %900, label %901, label %1133

901:                                              ; preds = %899
  %902 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %903 unwind label %1057

903:                                              ; preds = %901
  %904 = load ptr, ptr %902, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #9
  %905 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %906 unwind label %1061

906:                                              ; preds = %903
  %907 = load ptr, ptr %905, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %44, ptr noundef nonnull align 8 dereferenceable(30) %907, i32 noundef 2356)
          to label %908 unwind label %1061

908:                                              ; preds = %906
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %904, ptr noundef nonnull align 8 dereferenceable(30) %44, ptr noundef @.str.507)
          to label %909 unwind label %1061

909:                                              ; preds = %908
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #9
  br label %1133

910:                                              ; preds = %1
  %911 = landingpad { ptr, i32 }
          cleanup
  %912 = extractvalue { ptr, i32 } %911, 0
  store ptr %912, ptr %4, align 8
  %913 = extractvalue { ptr, i32 } %911, 1
  store i32 %913, ptr %5, align 4
  call void @_ZdlPvm(ptr noundef %828, i64 noundef 33088) #11
  br label %6404

914:                                              ; preds = %832, %829
  %915 = landingpad { ptr, i32 }
          cleanup
  %916 = extractvalue { ptr, i32 } %915, 0
  store ptr %916, ptr %4, align 8
  %917 = extractvalue { ptr, i32 } %915, 1
  store i32 %917, ptr %5, align 4
  br label %6403

918:                                              ; preds = %831
  %919 = landingpad { ptr, i32 }
          cleanup
  %920 = extractvalue { ptr, i32 } %919, 0
  store ptr %920, ptr %4, align 8
  %921 = extractvalue { ptr, i32 } %919, 1
  store i32 %921, ptr %5, align 4
  call void @_ZdlPvm(ptr noundef %830, i64 noundef 144) #11
  br label %6403

922:                                              ; preds = %836, %833
  %923 = landingpad { ptr, i32 }
          cleanup
  %924 = extractvalue { ptr, i32 } %923, 0
  store ptr %924, ptr %4, align 8
  %925 = extractvalue { ptr, i32 } %923, 1
  store i32 %925, ptr %5, align 4
  br label %6402

926:                                              ; preds = %835
  %927 = landingpad { ptr, i32 }
          cleanup
  %928 = extractvalue { ptr, i32 } %927, 0
  store ptr %928, ptr %4, align 8
  %929 = extractvalue { ptr, i32 } %927, 1
  store i32 %929, ptr %5, align 4
  call void @_ZdlPvm(ptr noundef %834, i64 noundef 64) #11
  br label %6402

930:                                              ; preds = %837
  %931 = landingpad { ptr, i32 }
          cleanup
  %932 = extractvalue { ptr, i32 } %931, 0
  store ptr %932, ptr %4, align 8
  %933 = extractvalue { ptr, i32 } %931, 1
  store i32 %933, ptr %5, align 4
  br label %938

934:                                              ; preds = %839
  %935 = landingpad { ptr, i32 }
          cleanup
  %936 = extractvalue { ptr, i32 } %935, 0
  store ptr %936, ptr %4, align 8
  %937 = extractvalue { ptr, i32 } %935, 1
  store i32 %937, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  br label %938

938:                                              ; preds = %934, %930
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #9
  br label %6401

939:                                              ; preds = %840
  %940 = landingpad { ptr, i32 }
          cleanup
  %941 = extractvalue { ptr, i32 } %940, 0
  store ptr %941, ptr %4, align 8
  %942 = extractvalue { ptr, i32 } %940, 1
  store i32 %942, ptr %5, align 4
  br label %947

943:                                              ; preds = %842
  %944 = landingpad { ptr, i32 }
          cleanup
  %945 = extractvalue { ptr, i32 } %944, 0
  store ptr %945, ptr %4, align 8
  %946 = extractvalue { ptr, i32 } %944, 1
  store i32 %946, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  br label %947

947:                                              ; preds = %943, %939
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #9
  br label %6400

948:                                              ; preds = %843
  %949 = landingpad { ptr, i32 }
          cleanup
  %950 = extractvalue { ptr, i32 } %949, 0
  store ptr %950, ptr %4, align 8
  %951 = extractvalue { ptr, i32 } %949, 1
  store i32 %951, ptr %5, align 4
  br label %956

952:                                              ; preds = %845
  %953 = landingpad { ptr, i32 }
          cleanup
  %954 = extractvalue { ptr, i32 } %953, 0
  store ptr %954, ptr %4, align 8
  %955 = extractvalue { ptr, i32 } %953, 1
  store i32 %955, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  br label %956

956:                                              ; preds = %952, %948
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #9
  br label %6399

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

961:                                              ; preds = %849
  %962 = landingpad { ptr, i32 }
          cleanup
  %963 = extractvalue { ptr, i32 } %962, 0
  store ptr %963, ptr %4, align 8
  %964 = extractvalue { ptr, i32 } %962, 1
  store i32 %964, ptr %5, align 4
  br label %969

965:                                              ; preds = %850
  %966 = landingpad { ptr, i32 }
          cleanup
  %967 = extractvalue { ptr, i32 } %966, 0
  store ptr %967, ptr %4, align 8
  %968 = extractvalue { ptr, i32 } %966, 1
  store i32 %968, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  br label %969

969:                                              ; preds = %965, %961
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  br label %970

970:                                              ; preds = %969, %957
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #9
  br label %6398

971:                                              ; preds = %851
  %972 = landingpad { ptr, i32 }
          cleanup
  %973 = extractvalue { ptr, i32 } %972, 0
  store ptr %973, ptr %4, align 8
  %974 = extractvalue { ptr, i32 } %972, 1
  store i32 %974, ptr %5, align 4
  br label %1016

975:                                              ; preds = %854
  %976 = landingpad { ptr, i32 }
          cleanup
  %977 = extractvalue { ptr, i32 } %976, 0
  store ptr %977, ptr %4, align 8
  %978 = extractvalue { ptr, i32 } %976, 1
  store i32 %978, ptr %5, align 4
  br label %1005

979:                                              ; preds = %856
  %980 = landingpad { ptr, i32 }
          cleanup
  %981 = extractvalue { ptr, i32 } %980, 0
  store ptr %981, ptr %4, align 8
  %982 = extractvalue { ptr, i32 } %980, 1
  store i32 %982, ptr %5, align 4
  br label %1004

983:                                              ; preds = %857
  %984 = landingpad { ptr, i32 }
          cleanup
  %985 = extractvalue { ptr, i32 } %984, 0
  store ptr %985, ptr %4, align 8
  %986 = extractvalue { ptr, i32 } %984, 1
  store i32 %986, ptr %5, align 4
  br label %996

987:                                              ; preds = %864
  %988 = landingpad { ptr, i32 }
          cleanup
  %989 = extractvalue { ptr, i32 } %988, 0
  store ptr %989, ptr %4, align 8
  %990 = extractvalue { ptr, i32 } %988, 1
  store i32 %990, ptr %5, align 4
  br label %995

991:                                              ; preds = %865
  %992 = landingpad { ptr, i32 }
          cleanup
  %993 = extractvalue { ptr, i32 } %992, 0
  store ptr %993, ptr %4, align 8
  %994 = extractvalue { ptr, i32 } %992, 1
  store i32 %994, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #9
  br label %995

995:                                              ; preds = %991, %987
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #9
  br label %996

996:                                              ; preds = %995, %983
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #9
  %997 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %27, i32 0, i32 0
  %998 = getelementptr inbounds %"class.std::shared_ptr", ptr %997, i64 1
  br label %999

999:                                              ; preds = %999, %996
  %1000 = phi ptr [ %998, %996 ], [ %1001, %999 ]
  %1001 = getelementptr inbounds %"class.std::shared_ptr", ptr %1000, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1001) #9
  %1002 = icmp eq ptr %1001, %997
  br i1 %1002, label %1003, label %999

1003:                                             ; preds = %999
  br label %1004

1004:                                             ; preds = %1003, %979
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  br label %1005

1005:                                             ; preds = %1004, %975
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #9
  %1006 = load i1, ptr %31, align 1
  br i1 %1006, label %1007, label %1015

1007:                                             ; preds = %1005
  %1008 = load ptr, ptr %28, align 8
  %1009 = icmp eq ptr %27, %1008
  br i1 %1009, label %1014, label %1010

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

1014:                                             ; preds = %1010, %1007
  br label %1015

1015:                                             ; preds = %1014, %1005
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  br label %1016

1016:                                             ; preds = %1015, %971
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #9
  br label %6398

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

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

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

1029:                                             ; preds = %886
  %1030 = landingpad { ptr, i32 }
          cleanup
  %1031 = extractvalue { ptr, i32 } %1030, 0
  store ptr %1031, ptr %4, align 8
  %1032 = extractvalue { ptr, i32 } %1030, 1
  store i32 %1032, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #9
  br label %1033

1033:                                             ; preds = %1029, %1025
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #9
  %1034 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %37, i32 0, i32 0
  %1035 = getelementptr inbounds %"class.std::shared_ptr", ptr %1034, i64 1
  br label %1036

1036:                                             ; preds = %1036, %1033
  %1037 = phi ptr [ %1035, %1033 ], [ %1038, %1036 ]
  %1038 = getelementptr inbounds %"class.std::shared_ptr", ptr %1037, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1038) #9
  %1039 = icmp eq ptr %1038, %1034
  br i1 %1039, label %1040, label %1036

1040:                                             ; preds = %1036
  br label %1041

1041:                                             ; preds = %1040, %1021
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  br label %1042

1042:                                             ; preds = %1041, %1017
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #9
  %1043 = load i1, ptr %41, align 1
  br i1 %1043, label %1044, label %1052

1044:                                             ; preds = %1042
  %1045 = load ptr, ptr %38, align 8
  %1046 = icmp eq ptr %37, %1045
  br i1 %1046, label %1051, label %1047

1047:                                             ; preds = %1047, %1044
  %1048 = phi ptr [ %1045, %1044 ], [ %1049, %1047 ]
  %1049 = getelementptr inbounds %"class.std::shared_ptr", ptr %1048, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1049) #9
  %1050 = icmp eq ptr %1049, %37
  br i1 %1050, label %1051, label %1047

1051:                                             ; preds = %1047, %1044
  br label %1052

1052:                                             ; preds = %1051, %1042
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #9
  br label %6398

1053:                                             ; preds = %896
  %1054 = landingpad { ptr, i32 }
          catch ptr null
  %1055 = extractvalue { ptr, i32 } %1054, 0
  store ptr %1055, ptr %4, align 8
  %1056 = extractvalue { ptr, i32 } %1054, 1
  store i32 %1056, ptr %5, align 4
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #9
  br label %1065

1057:                                             ; preds = %901
  %1058 = landingpad { ptr, i32 }
          catch ptr null
  %1059 = extractvalue { ptr, i32 } %1058, 0
  store ptr %1059, ptr %4, align 8
  %1060 = extractvalue { ptr, i32 } %1058, 1
  store i32 %1060, ptr %5, align 4
  br label %1065

1061:                                             ; preds = %908, %906, %903
  %1062 = landingpad { ptr, i32 }
          catch ptr null
  %1063 = extractvalue { ptr, i32 } %1062, 0
  store ptr %1063, ptr %4, align 8
  %1064 = extractvalue { ptr, i32 } %1062, 1
  store i32 %1064, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #9
  br label %1065

1065:                                             ; preds = %1061, %1057, %1053
  %1066 = load ptr, ptr %4, align 8
  %1067 = call ptr @__cxa_begin_catch(ptr %1066) #9
  %1068 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1069 unwind label %1134

1069:                                             ; preds = %1065
  %1070 = load ptr, ptr %1068, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #9
  %1071 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1072 unwind label %1138

1072:                                             ; preds = %1069
  %1073 = load ptr, ptr %1071, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %45, ptr noundef nonnull align 8 dereferenceable(30) %1073, i32 noundef 2356)
          to label %1074 unwind label %1138

1074:                                             ; preds = %1072
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1070, ptr noundef nonnull align 8 dereferenceable(30) %45, ptr noundef @.str.508)
          to label %1075 unwind label %1138

1075:                                             ; preds = %1074
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #9
  invoke void @__cxa_end_catch()
          to label %1076 unwind label %1142

1076:                                             ; preds = %1075
  br label %1077

1077:                                             ; preds = %1133, %1076
  br label %1078

1078:                                             ; preds = %1077
  br label %1079

1079:                                             ; preds = %1078
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #9
  %1080 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  %1081 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %1082 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %47) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #9
  store i1 true, ptr %61, align 1
  store ptr %49, ptr %50, align 8
  %1083 = 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 %51) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef @.str.505, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %1084 unwind label %1148

1084:                                             ; preds = %1079
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #9
  store i1 true, ptr %59, align 1
  store ptr %55, ptr %56, align 8
  %1085 = 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 %57) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef @.str.506, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %1086 unwind label %1152

1086:                                             ; preds = %1084
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %55, ptr noundef nonnull align 8 dereferenceable(33088) %1085, ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %1087 unwind label %1156

1087:                                             ; preds = %1086
  store i1 false, ptr %59, align 1
  %1088 = getelementptr inbounds %"class.std::initializer_list.94", ptr %54, i32 0, i32 0
  store ptr %55, ptr %1088, align 8, !tbaa !9
  %1089 = getelementptr inbounds %"class.std::initializer_list.94", ptr %54, i32 0, i32 1
  store i64 1, ptr %1089, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #9
  %1090 = getelementptr inbounds { ptr, i64 }, ptr %54, i32 0, i32 0
  %1091 = load ptr, ptr %1090, align 8
  %1092 = getelementptr inbounds { ptr, i64 }, ptr %54, i32 0, i32 1
  %1093 = load i64, ptr %1092, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %53, ptr %1091, i64 %1093, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %1094 unwind label %1160

1094:                                             ; preds = %1087
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %49, ptr noundef nonnull align 8 dereferenceable(33088) %1083, ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef %53)
          to label %1095 unwind label %1164

1095:                                             ; preds = %1094
  store i1 false, ptr %61, align 1
  %1096 = getelementptr inbounds %"class.std::initializer_list.94", ptr %48, i32 0, i32 0
  store ptr %49, ptr %1096, align 8, !tbaa !9
  %1097 = getelementptr inbounds %"class.std::initializer_list.94", ptr %48, i32 0, i32 1
  store i64 1, ptr %1097, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #9
  %1098 = getelementptr inbounds { ptr, i64 }, ptr %48, i32 0, i32 0
  %1099 = load ptr, ptr %1098, align 8
  %1100 = getelementptr inbounds { ptr, i64 }, ptr %48, i32 0, i32 1
  %1101 = load i64, ptr %1100, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr %1099, i64 %1101, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %1102 unwind label %1168

1102:                                             ; preds = %1095
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %46, ptr noundef nonnull align 8 dereferenceable(64) %1080, ptr noundef %1081, ptr noundef %1082, ptr noundef nonnull align 8 dereferenceable(24) %47, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %1103 unwind label %1172

1103:                                             ; preds = %1102
  %1104 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %46) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #9
  %1105 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %49, i32 0, i32 0
  %1106 = getelementptr inbounds %"class.std::shared_ptr", ptr %1105, i64 1
  br label %1107

1107:                                             ; preds = %1107, %1103
  %1108 = phi ptr [ %1106, %1103 ], [ %1109, %1107 ]
  %1109 = getelementptr inbounds %"class.std::shared_ptr", ptr %1108, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1109) #9
  %1110 = icmp eq ptr %1109, %1105
  br i1 %1110, label %1111, label %1107

1111:                                             ; preds = %1107
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #9
  %1112 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %55, i32 0, i32 0
  %1113 = getelementptr inbounds %"class.std::shared_ptr", ptr %1112, i64 1
  br label %1114

1114:                                             ; preds = %1114, %1111
  %1115 = phi ptr [ %1113, %1111 ], [ %1116, %1114 ]
  %1116 = getelementptr inbounds %"class.std::shared_ptr", ptr %1115, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1116) #9
  %1117 = icmp eq ptr %1116, %1112
  br i1 %1117, label %1118, label %1114

1118:                                             ; preds = %1114
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #9
  br label %1119

1119:                                             ; preds = %1118
  call void @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %63, ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  %1120 = call noundef zeroext i1 @_ZN25SuiteHtnGoalResolverTests6IsTrueESt10shared_ptrISt6vectorIS1_ISt4pairIS0_I7HtnTermES4_ESaIS5_EESaIS7_EEE(ptr noundef %63)
  %1121 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1120)
          to label %1122 unwind label %1216

1122:                                             ; preds = %1119
  %1123 = xor i1 %1121, true
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #9
  br i1 %1123, label %1124, label %1352

1124:                                             ; preds = %1122
  %1125 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1126 unwind label %1220

1126:                                             ; preds = %1124
  %1127 = load ptr, ptr %1125, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %64) #9
  %1128 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1129 unwind label %1224

1129:                                             ; preds = %1126
  %1130 = load ptr, ptr %1128, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %64, ptr noundef nonnull align 8 dereferenceable(30) %1130, i32 noundef 2358)
          to label %1131 unwind label %1224

1131:                                             ; preds = %1129
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1127, ptr noundef nonnull align 8 dereferenceable(30) %64, ptr noundef @.str.507)
          to label %1132 unwind label %1224

1132:                                             ; preds = %1131
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #9
  br label %1352

1133:                                             ; preds = %909, %899
  br label %1077

1134:                                             ; preds = %1065
  %1135 = landingpad { ptr, i32 }
          cleanup
  %1136 = extractvalue { ptr, i32 } %1135, 0
  store ptr %1136, ptr %4, align 8
  %1137 = extractvalue { ptr, i32 } %1135, 1
  store i32 %1137, ptr %5, align 4
  br label %1146

1138:                                             ; preds = %1074, %1072, %1069
  %1139 = landingpad { ptr, i32 }
          cleanup
  %1140 = extractvalue { ptr, i32 } %1139, 0
  store ptr %1140, ptr %4, align 8
  %1141 = extractvalue { ptr, i32 } %1139, 1
  store i32 %1141, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #9
  br label %1146

1142:                                             ; preds = %4395, %4391, %4098, %4094, %3923, %3919, %3340, %3336, %2757, %2753, %2291, %2287, %1896, %1892, %1538, %1242, %1238, %1075
  %1143 = landingpad { ptr, i32 }
          cleanup
  %1144 = extractvalue { ptr, i32 } %1143, 0
  store ptr %1144, ptr %4, align 8
  %1145 = extractvalue { ptr, i32 } %1143, 1
  store i32 %1145, ptr %5, align 4
  br label %6398

1146:                                             ; preds = %1138, %1134
  invoke void @__cxa_end_catch()
          to label %1147 unwind label %6410

1147:                                             ; preds = %1146
  br label %6398

1148:                                             ; preds = %1079
  %1149 = landingpad { ptr, i32 }
          cleanup
  %1150 = extractvalue { ptr, i32 } %1149, 0
  store ptr %1150, ptr %4, align 8
  %1151 = extractvalue { ptr, i32 } %1149, 1
  store i32 %1151, ptr %5, align 4
  br label %1205

1152:                                             ; preds = %1084
  %1153 = landingpad { ptr, i32 }
          cleanup
  %1154 = extractvalue { ptr, i32 } %1153, 0
  store ptr %1154, ptr %4, align 8
  %1155 = extractvalue { ptr, i32 } %1153, 1
  store i32 %1155, ptr %5, align 4
  br label %1194

1156:                                             ; preds = %1086
  %1157 = landingpad { ptr, i32 }
          cleanup
  %1158 = extractvalue { ptr, i32 } %1157, 0
  store ptr %1158, ptr %4, align 8
  %1159 = extractvalue { ptr, i32 } %1157, 1
  store i32 %1159, ptr %5, align 4
  br label %1193

1160:                                             ; preds = %1087
  %1161 = landingpad { ptr, i32 }
          cleanup
  %1162 = extractvalue { ptr, i32 } %1161, 0
  store ptr %1162, ptr %4, align 8
  %1163 = extractvalue { ptr, i32 } %1161, 1
  store i32 %1163, ptr %5, align 4
  br label %1185

1164:                                             ; preds = %1094
  %1165 = landingpad { ptr, i32 }
          cleanup
  %1166 = extractvalue { ptr, i32 } %1165, 0
  store ptr %1166, ptr %4, align 8
  %1167 = extractvalue { ptr, i32 } %1165, 1
  store i32 %1167, ptr %5, align 4
  br label %1184

1168:                                             ; preds = %1095
  %1169 = landingpad { ptr, i32 }
          cleanup
  %1170 = extractvalue { ptr, i32 } %1169, 0
  store ptr %1170, ptr %4, align 8
  %1171 = extractvalue { ptr, i32 } %1169, 1
  store i32 %1171, ptr %5, align 4
  br label %1176

1172:                                             ; preds = %1102
  %1173 = landingpad { ptr, i32 }
          cleanup
  %1174 = extractvalue { ptr, i32 } %1173, 0
  store ptr %1174, ptr %4, align 8
  %1175 = extractvalue { ptr, i32 } %1173, 1
  store i32 %1175, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #9
  br label %1176

1176:                                             ; preds = %1172, %1168
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #9
  %1177 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %49, i32 0, i32 0
  %1178 = getelementptr inbounds %"class.std::shared_ptr", ptr %1177, i64 1
  br label %1179

1179:                                             ; preds = %1179, %1176
  %1180 = phi ptr [ %1178, %1176 ], [ %1181, %1179 ]
  %1181 = getelementptr inbounds %"class.std::shared_ptr", ptr %1180, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1181) #9
  %1182 = icmp eq ptr %1181, %1177
  br i1 %1182, label %1183, label %1179

1183:                                             ; preds = %1179
  br label %1184

1184:                                             ; preds = %1183, %1164
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #9
  br label %1185

1185:                                             ; preds = %1184, %1160
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #9
  %1186 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %55, i32 0, i32 0
  %1187 = getelementptr inbounds %"class.std::shared_ptr", ptr %1186, i64 1
  br label %1188

1188:                                             ; preds = %1188, %1185
  %1189 = phi ptr [ %1187, %1185 ], [ %1190, %1188 ]
  %1190 = getelementptr inbounds %"class.std::shared_ptr", ptr %1189, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1190) #9
  %1191 = icmp eq ptr %1190, %1186
  br i1 %1191, label %1192, label %1188

1192:                                             ; preds = %1188
  br label %1193

1193:                                             ; preds = %1192, %1156
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  br label %1194

1194:                                             ; preds = %1193, %1152
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #9
  %1195 = load i1, ptr %59, align 1
  br i1 %1195, label %1196, label %1204

1196:                                             ; preds = %1194
  %1197 = load ptr, ptr %56, align 8
  %1198 = icmp eq ptr %55, %1197
  br i1 %1198, label %1203, label %1199

1199:                                             ; preds = %1199, %1196
  %1200 = phi ptr [ %1197, %1196 ], [ %1201, %1199 ]
  %1201 = getelementptr inbounds %"class.std::shared_ptr", ptr %1200, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1201) #9
  %1202 = icmp eq ptr %1201, %55
  br i1 %1202, label %1203, label %1199

1203:                                             ; preds = %1199, %1196
  br label %1204

1204:                                             ; preds = %1203, %1194
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  br label %1205

1205:                                             ; preds = %1204, %1148
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #9
  %1206 = load i1, ptr %61, align 1
  br i1 %1206, label %1207, label %1215

1207:                                             ; preds = %1205
  %1208 = load ptr, ptr %50, align 8
  %1209 = icmp eq ptr %49, %1208
  br i1 %1209, label %1214, label %1210

1210:                                             ; preds = %1210, %1207
  %1211 = phi ptr [ %1208, %1207 ], [ %1212, %1210 ]
  %1212 = getelementptr inbounds %"class.std::shared_ptr", ptr %1211, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1212) #9
  %1213 = icmp eq ptr %1212, %49
  br i1 %1213, label %1214, label %1210

1214:                                             ; preds = %1210, %1207
  br label %1215

1215:                                             ; preds = %1214, %1205
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #9
  br label %6398

1216:                                             ; preds = %1119
  %1217 = landingpad { ptr, i32 }
          catch ptr null
  %1218 = extractvalue { ptr, i32 } %1217, 0
  store ptr %1218, ptr %4, align 8
  %1219 = extractvalue { ptr, i32 } %1217, 1
  store i32 %1219, ptr %5, align 4
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #9
  br label %1228

1220:                                             ; preds = %1124
  %1221 = landingpad { ptr, i32 }
          catch ptr null
  %1222 = extractvalue { ptr, i32 } %1221, 0
  store ptr %1222, ptr %4, align 8
  %1223 = extractvalue { ptr, i32 } %1221, 1
  store i32 %1223, ptr %5, align 4
  br label %1228

1224:                                             ; preds = %1131, %1129, %1126
  %1225 = landingpad { ptr, i32 }
          catch ptr null
  %1226 = extractvalue { ptr, i32 } %1225, 0
  store ptr %1226, ptr %4, align 8
  %1227 = extractvalue { ptr, i32 } %1225, 1
  store i32 %1227, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #9
  br label %1228

1228:                                             ; preds = %1224, %1220, %1216
  %1229 = load ptr, ptr %4, align 8
  %1230 = call ptr @__cxa_begin_catch(ptr %1229) #9
  %1231 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1232 unwind label %1353

1232:                                             ; preds = %1228
  %1233 = load ptr, ptr %1231, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #9
  %1234 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1235 unwind label %1357

1235:                                             ; preds = %1232
  %1236 = load ptr, ptr %1234, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %65, ptr noundef nonnull align 8 dereferenceable(30) %1236, i32 noundef 2358)
          to label %1237 unwind label %1357

1237:                                             ; preds = %1235
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1233, ptr noundef nonnull align 8 dereferenceable(30) %65, ptr noundef @.str.508)
          to label %1238 unwind label %1357

1238:                                             ; preds = %1237
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #9
  invoke void @__cxa_end_catch()
          to label %1239 unwind label %1142

1239:                                             ; preds = %1238
  br label %1240

1240:                                             ; preds = %1352, %1239
  br label %1241

1241:                                             ; preds = %1240
  br label %1242

1242:                                             ; preds = %1241
  %1243 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %1243)
          to label %1244 unwind label %1142

1244:                                             ; preds = %1242
  %1245 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %1246 = 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 %67) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %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 @.str.509, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %1247 unwind label %1363

1247:                                             ; preds = %1244
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #9
  store i1 true, ptr %75, align 1
  store ptr %71, ptr %72, align 8
  %1248 = 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 %73) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef @.str.502, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %1249 unwind label %1367

1249:                                             ; preds = %1247
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %71, ptr noundef nonnull align 8 dereferenceable(33088) %1248, ptr noundef nonnull align 8 dereferenceable(32) %73)
          to label %1250 unwind label %1371

1250:                                             ; preds = %1249
  store i1 false, ptr %75, align 1
  %1251 = getelementptr inbounds %"class.std::initializer_list.94", ptr %70, i32 0, i32 0
  store ptr %71, ptr %1251, align 8, !tbaa !9
  %1252 = getelementptr inbounds %"class.std::initializer_list.94", ptr %70, i32 0, i32 1
  store i64 1, ptr %1252, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #9
  %1253 = getelementptr inbounds { ptr, i64 }, ptr %70, i32 0, i32 0
  %1254 = load ptr, ptr %1253, align 8
  %1255 = getelementptr inbounds { ptr, i64 }, ptr %70, i32 0, i32 1
  %1256 = load i64, ptr %1255, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr %1254, i64 %1256, ptr noundef nonnull align 1 dereferenceable(1) %76)
          to label %1257 unwind label %1375

1257:                                             ; preds = %1250
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %66, ptr noundef nonnull align 8 dereferenceable(33088) %1246, ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef %69)
          to label %1258 unwind label %1379

1258:                                             ; preds = %1257
  call void @llvm.memset.p0.i64(ptr align 8 %77, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %77) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %1245, ptr noundef %66, ptr noundef %77)
          to label %1259 unwind label %1383

1259:                                             ; preds = %1258
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %77) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #9
  %1260 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %71, i32 0, i32 0
  %1261 = getelementptr inbounds %"class.std::shared_ptr", ptr %1260, i64 1
  br label %1262

1262:                                             ; preds = %1262, %1259
  %1263 = phi ptr [ %1261, %1259 ], [ %1264, %1262 ]
  %1264 = getelementptr inbounds %"class.std::shared_ptr", ptr %1263, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1264) #9
  %1265 = icmp eq ptr %1264, %1260
  br i1 %1265, label %1266, label %1262

1266:                                             ; preds = %1262
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #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 %68) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #9
  %1267 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  %1268 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %1269 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %79) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %81) #9
  store i1 true, ptr %89, align 1
  store ptr %81, ptr %82, align 8
  %1270 = 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 %83) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef @.str.509, ptr noundef nonnull align 1 dereferenceable(1) %84)
          to label %1271 unwind label %1409

1271:                                             ; preds = %1266
  call void @llvm.lifetime.start.p0(i64 16, ptr %87) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %87, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  %1272 = getelementptr inbounds %"class.std::initializer_list.94", ptr %86, i32 0, i32 0
  store ptr %87, ptr %1272, align 8, !tbaa !9
  %1273 = getelementptr inbounds %"class.std::initializer_list.94", ptr %86, i32 0, i32 1
  store i64 1, ptr %1273, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #9
  %1274 = getelementptr inbounds { ptr, i64 }, ptr %86, i32 0, i32 0
  %1275 = load ptr, ptr %1274, align 8
  %1276 = getelementptr inbounds { ptr, i64 }, ptr %86, i32 0, i32 1
  %1277 = load i64, ptr %1276, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %85, ptr %1275, i64 %1277, ptr noundef nonnull align 1 dereferenceable(1) %88)
          to label %1278 unwind label %1413

1278:                                             ; preds = %1271
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %81, ptr noundef nonnull align 8 dereferenceable(33088) %1270, ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef %85)
          to label %1279 unwind label %1417

1279:                                             ; preds = %1278
  store i1 false, ptr %89, align 1
  %1280 = getelementptr inbounds %"class.std::initializer_list.94", ptr %80, i32 0, i32 0
  store ptr %81, ptr %1280, align 8, !tbaa !9
  %1281 = getelementptr inbounds %"class.std::initializer_list.94", ptr %80, i32 0, i32 1
  store i64 1, ptr %1281, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #9
  %1282 = getelementptr inbounds { ptr, i64 }, ptr %80, i32 0, i32 0
  %1283 = load ptr, ptr %1282, align 8
  %1284 = getelementptr inbounds { ptr, i64 }, ptr %80, i32 0, i32 1
  %1285 = load i64, ptr %1284, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %79, ptr %1283, i64 %1285, ptr noundef nonnull align 1 dereferenceable(1) %90)
          to label %1286 unwind label %1421

1286:                                             ; preds = %1279
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %78, ptr noundef nonnull align 8 dereferenceable(64) %1267, ptr noundef %1268, ptr noundef %1269, ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %1287 unwind label %1425

1287:                                             ; preds = %1286
  %1288 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %78) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #9
  %1289 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %81, i32 0, i32 0
  %1290 = getelementptr inbounds %"class.std::shared_ptr", ptr %1289, i64 1
  br label %1291

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

1295:                                             ; preds = %1291
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %85) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #9
  %1296 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %87, i32 0, i32 0
  %1297 = getelementptr inbounds %"class.std::shared_ptr", ptr %1296, i64 1
  br label %1298

1298:                                             ; preds = %1298, %1295
  %1299 = phi ptr [ %1297, %1295 ], [ %1300, %1298 ]
  %1300 = getelementptr inbounds %"class.std::shared_ptr", ptr %1299, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1300) #9
  %1301 = icmp eq ptr %1300, %1296
  br i1 %1301, label %1302, label %1298

1302:                                             ; preds = %1298
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %83) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %79) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #9
  br label %1303

1303:                                             ; preds = %1302
  %1304 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ERKS8_(ptr noundef nonnull align 8 dereferenceable(24) %91, ptr noundef nonnull align 8 dereferenceable(24) %1304)
          to label %1305 unwind label %1457

1305:                                             ; preds = %1303
  call void @llvm.lifetime.start.p0(i64 24, ptr %94) #9
  store i1 true, ptr %104, align 1
  store ptr %94, ptr %95, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %97) #9
  store i1 true, ptr %102, align 1
  store ptr %97, ptr %98, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %99) #9
  %1306 = 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 %100) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %101) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef @.str.502, ptr noundef nonnull align 1 dereferenceable(1) %101)
          to label %1307 unwind label %1461

1307:                                             ; preds = %1305
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %99, ptr noundef nonnull align 8 dereferenceable(33088) %1306, ptr noundef nonnull align 8 dereferenceable(32) %100)
          to label %1308 unwind label %1465

1308:                                             ; preds = %1307
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %99)
          to label %1309 unwind label %1469

1309:                                             ; preds = %1308
  store i1 false, ptr %102, align 1
  %1310 = getelementptr inbounds %"class.std::initializer_list", ptr %96, i32 0, i32 0
  store ptr %97, ptr %1310, align 8, !tbaa !13
  %1311 = getelementptr inbounds %"class.std::initializer_list", ptr %96, i32 0, i32 1
  store i64 1, ptr %1311, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %103) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #9
  %1312 = getelementptr inbounds { ptr, i64 }, ptr %96, i32 0, i32 0
  %1313 = load ptr, ptr %1312, align 8
  %1314 = getelementptr inbounds { ptr, i64 }, ptr %96, i32 0, i32 1
  %1315 = load i64, ptr %1314, align 8
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %94, ptr %1313, i64 %1315, ptr noundef nonnull align 1 dereferenceable(1) %103)
          to label %1316 unwind label %1473

1316:                                             ; preds = %1309
  store i1 false, ptr %104, align 1
  %1317 = getelementptr inbounds %"class.std::initializer_list.104", ptr %93, i32 0, i32 0
  store ptr %94, ptr %1317, align 8, !tbaa !16
  %1318 = getelementptr inbounds %"class.std::initializer_list.104", ptr %93, i32 0, i32 1
  store i64 1, ptr %1318, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #9
  call void @_ZNSaISt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #9
  %1319 = getelementptr inbounds { ptr, i64 }, ptr %93, i32 0, i32 0
  %1320 = load ptr, ptr %1319, align 8
  %1321 = getelementptr inbounds { ptr, i64 }, ptr %93, i32 0, i32 1
  %1322 = load i64, ptr %1321, align 8
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ESt16initializer_listIS6_ERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %92, ptr %1320, i64 %1322, ptr noundef nonnull align 1 dereferenceable(1) %105)
          to label %1323 unwind label %1477

1323:                                             ; preds = %1316
  %1324 = invoke noundef zeroext i1 @_Z14CheckSolutionsSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EES8_(ptr noundef %91, ptr noundef %92)
          to label %1325 unwind label %1481

1325:                                             ; preds = %1323
  %1326 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1324)
          to label %1327 unwind label %1481

1327:                                             ; preds = %1325
  %1328 = xor i1 %1326, true
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #9
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #9
  %1329 = getelementptr inbounds [1 x %"class.std::vector"], ptr %94, i32 0, i32 0
  %1330 = getelementptr inbounds %"class.std::vector", ptr %1329, i64 1
  br label %1331

1331:                                             ; preds = %1331, %1327
  %1332 = phi ptr [ %1330, %1327 ], [ %1333, %1331 ]
  %1333 = getelementptr inbounds %"class.std::vector", ptr %1332, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1333) #9
  %1334 = icmp eq ptr %1333, %1329
  br i1 %1334, label %1335, label %1331

1335:                                             ; preds = %1331
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #9
  %1336 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %97, i32 0, i32 0
  %1337 = getelementptr inbounds %"struct.std::pair", ptr %1336, i64 1
  br label %1338

1338:                                             ; preds = %1338, %1335
  %1339 = phi ptr [ %1337, %1335 ], [ %1340, %1338 ]
  %1340 = getelementptr inbounds %"struct.std::pair", ptr %1339, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1340) #9
  %1341 = icmp eq ptr %1340, %1336
  br i1 %1341, label %1342, label %1338

1342:                                             ; preds = %1338
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %99) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %97) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %94) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %91) #9
  br i1 %1328, label %1343, label %1669

1343:                                             ; preds = %1342
  %1344 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1345 unwind label %1457

1345:                                             ; preds = %1343
  %1346 = load ptr, ptr %1344, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %106) #9
  %1347 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1348 unwind label %1524

1348:                                             ; preds = %1345
  %1349 = load ptr, ptr %1347, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %106, ptr noundef nonnull align 8 dereferenceable(30) %1349, i32 noundef 2364)
          to label %1350 unwind label %1524

1350:                                             ; preds = %1348
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1346, ptr noundef nonnull align 8 dereferenceable(30) %106, ptr noundef @.str.510)
          to label %1351 unwind label %1524

1351:                                             ; preds = %1350
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #9
  br label %1669

1352:                                             ; preds = %1132, %1122
  br label %1240

1353:                                             ; preds = %1228
  %1354 = landingpad { ptr, i32 }
          cleanup
  %1355 = extractvalue { ptr, i32 } %1354, 0
  store ptr %1355, ptr %4, align 8
  %1356 = extractvalue { ptr, i32 } %1354, 1
  store i32 %1356, ptr %5, align 4
  br label %1361

1357:                                             ; preds = %1237, %1235, %1232
  %1358 = landingpad { ptr, i32 }
          cleanup
  %1359 = extractvalue { ptr, i32 } %1358, 0
  store ptr %1359, ptr %4, align 8
  %1360 = extractvalue { ptr, i32 } %1358, 1
  store i32 %1360, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #9
  br label %1361

1361:                                             ; preds = %1357, %1353
  invoke void @__cxa_end_catch()
          to label %1362 unwind label %6410

1362:                                             ; preds = %1361
  br label %6398

1363:                                             ; preds = %1244
  %1364 = landingpad { ptr, i32 }
          cleanup
  %1365 = extractvalue { ptr, i32 } %1364, 0
  store ptr %1365, ptr %4, align 8
  %1366 = extractvalue { ptr, i32 } %1364, 1
  store i32 %1366, ptr %5, align 4
  br label %1408

1367:                                             ; preds = %1247
  %1368 = landingpad { ptr, i32 }
          cleanup
  %1369 = extractvalue { ptr, i32 } %1368, 0
  store ptr %1369, ptr %4, align 8
  %1370 = extractvalue { ptr, i32 } %1368, 1
  store i32 %1370, ptr %5, align 4
  br label %1397

1371:                                             ; preds = %1249
  %1372 = landingpad { ptr, i32 }
          cleanup
  %1373 = extractvalue { ptr, i32 } %1372, 0
  store ptr %1373, ptr %4, align 8
  %1374 = extractvalue { ptr, i32 } %1372, 1
  store i32 %1374, ptr %5, align 4
  br label %1396

1375:                                             ; preds = %1250
  %1376 = landingpad { ptr, i32 }
          cleanup
  %1377 = extractvalue { ptr, i32 } %1376, 0
  store ptr %1377, ptr %4, align 8
  %1378 = extractvalue { ptr, i32 } %1376, 1
  store i32 %1378, ptr %5, align 4
  br label %1388

1379:                                             ; preds = %1257
  %1380 = landingpad { ptr, i32 }
          cleanup
  %1381 = extractvalue { ptr, i32 } %1380, 0
  store ptr %1381, ptr %4, align 8
  %1382 = extractvalue { ptr, i32 } %1380, 1
  store i32 %1382, ptr %5, align 4
  br label %1387

1383:                                             ; preds = %1258
  %1384 = landingpad { ptr, i32 }
          cleanup
  %1385 = extractvalue { ptr, i32 } %1384, 0
  store ptr %1385, ptr %4, align 8
  %1386 = extractvalue { ptr, i32 } %1384, 1
  store i32 %1386, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %77) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #9
  br label %1387

1387:                                             ; preds = %1383, %1379
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #9
  br label %1388

1388:                                             ; preds = %1387, %1375
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #9
  %1389 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %71, i32 0, i32 0
  %1390 = getelementptr inbounds %"class.std::shared_ptr", ptr %1389, i64 1
  br label %1391

1391:                                             ; preds = %1391, %1388
  %1392 = phi ptr [ %1390, %1388 ], [ %1393, %1391 ]
  %1393 = getelementptr inbounds %"class.std::shared_ptr", ptr %1392, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1393) #9
  %1394 = icmp eq ptr %1393, %1389
  br i1 %1394, label %1395, label %1391

1395:                                             ; preds = %1391
  br label %1396

1396:                                             ; preds = %1395, %1371
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #9
  br label %1397

1397:                                             ; preds = %1396, %1367
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #9
  %1398 = load i1, ptr %75, align 1
  br i1 %1398, label %1399, label %1407

1399:                                             ; preds = %1397
  %1400 = load ptr, ptr %72, align 8
  %1401 = icmp eq ptr %71, %1400
  br i1 %1401, label %1406, label %1402

1402:                                             ; preds = %1402, %1399
  %1403 = phi ptr [ %1400, %1399 ], [ %1404, %1402 ]
  %1404 = getelementptr inbounds %"class.std::shared_ptr", ptr %1403, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1404) #9
  %1405 = icmp eq ptr %1404, %71
  br i1 %1405, label %1406, label %1402

1406:                                             ; preds = %1402, %1399
  br label %1407

1407:                                             ; preds = %1406, %1397
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #9
  br label %1408

1408:                                             ; preds = %1407, %1363
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #9
  br label %6398

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

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

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

1421:                                             ; preds = %1279
  %1422 = landingpad { ptr, i32 }
          cleanup
  %1423 = extractvalue { ptr, i32 } %1422, 0
  store ptr %1423, ptr %4, align 8
  %1424 = extractvalue { ptr, i32 } %1422, 1
  store i32 %1424, ptr %5, align 4
  br label %1429

1425:                                             ; preds = %1286
  %1426 = landingpad { ptr, i32 }
          cleanup
  %1427 = extractvalue { ptr, i32 } %1426, 0
  store ptr %1427, ptr %4, align 8
  %1428 = extractvalue { ptr, i32 } %1426, 1
  store i32 %1428, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #9
  br label %1429

1429:                                             ; preds = %1425, %1421
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #9
  %1430 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %81, i32 0, i32 0
  %1431 = getelementptr inbounds %"class.std::shared_ptr", ptr %1430, i64 1
  br label %1432

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

1436:                                             ; preds = %1432
  br label %1437

1437:                                             ; preds = %1436, %1417
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %85) #9
  br label %1438

1438:                                             ; preds = %1437, %1413
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #9
  %1439 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %87, i32 0, i32 0
  %1440 = getelementptr inbounds %"class.std::shared_ptr", ptr %1439, i64 1
  br label %1441

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

1445:                                             ; preds = %1441
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #9
  br label %1446

1446:                                             ; preds = %1445, %1409
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %83) #9
  %1447 = load i1, ptr %89, align 1
  br i1 %1447, label %1448, label %1456

1448:                                             ; preds = %1446
  %1449 = load ptr, ptr %82, align 8
  %1450 = icmp eq ptr %81, %1449
  br i1 %1450, label %1455, label %1451

1451:                                             ; preds = %1451, %1448
  %1452 = phi ptr [ %1449, %1448 ], [ %1453, %1451 ]
  %1453 = getelementptr inbounds %"class.std::shared_ptr", ptr %1452, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1453) #9
  %1454 = icmp eq ptr %1453, %81
  br i1 %1454, label %1455, label %1451

1455:                                             ; preds = %1451, %1448
  br label %1456

1456:                                             ; preds = %1455, %1446
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %79) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #9
  br label %6398

1457:                                             ; preds = %1343, %1303
  %1458 = landingpad { ptr, i32 }
          catch ptr null
  %1459 = extractvalue { ptr, i32 } %1458, 0
  store ptr %1459, ptr %4, align 8
  %1460 = extractvalue { ptr, i32 } %1458, 1
  store i32 %1460, ptr %5, align 4
  br label %1528

1461:                                             ; preds = %1305
  %1462 = landingpad { ptr, i32 }
          catch ptr null
  %1463 = extractvalue { ptr, i32 } %1462, 0
  store ptr %1463, ptr %4, align 8
  %1464 = extractvalue { ptr, i32 } %1462, 1
  store i32 %1464, ptr %5, align 4
  br label %1503

1465:                                             ; preds = %1307
  %1466 = landingpad { ptr, i32 }
          catch ptr null
  %1467 = extractvalue { ptr, i32 } %1466, 0
  store ptr %1467, ptr %4, align 8
  %1468 = extractvalue { ptr, i32 } %1466, 1
  store i32 %1468, ptr %5, align 4
  br label %1502

1469:                                             ; preds = %1308
  %1470 = landingpad { ptr, i32 }
          catch ptr null
  %1471 = extractvalue { ptr, i32 } %1470, 0
  store ptr %1471, ptr %4, align 8
  %1472 = extractvalue { ptr, i32 } %1470, 1
  store i32 %1472, ptr %5, align 4
  br label %1501

1473:                                             ; preds = %1309
  %1474 = landingpad { ptr, i32 }
          catch ptr null
  %1475 = extractvalue { ptr, i32 } %1474, 0
  store ptr %1475, ptr %4, align 8
  %1476 = extractvalue { ptr, i32 } %1474, 1
  store i32 %1476, ptr %5, align 4
  br label %1493

1477:                                             ; preds = %1316
  %1478 = landingpad { ptr, i32 }
          catch ptr null
  %1479 = extractvalue { ptr, i32 } %1478, 0
  store ptr %1479, ptr %4, align 8
  %1480 = extractvalue { ptr, i32 } %1478, 1
  store i32 %1480, ptr %5, align 4
  br label %1485

1481:                                             ; preds = %1325, %1323
  %1482 = landingpad { ptr, i32 }
          catch ptr null
  %1483 = extractvalue { ptr, i32 } %1482, 0
  store ptr %1483, ptr %4, align 8
  %1484 = extractvalue { ptr, i32 } %1482, 1
  store i32 %1484, ptr %5, align 4
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #9
  br label %1485

1485:                                             ; preds = %1481, %1477
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #9
  %1486 = getelementptr inbounds [1 x %"class.std::vector"], ptr %94, i32 0, i32 0
  %1487 = getelementptr inbounds %"class.std::vector", ptr %1486, i64 1
  br label %1488

1488:                                             ; preds = %1488, %1485
  %1489 = phi ptr [ %1487, %1485 ], [ %1490, %1488 ]
  %1490 = getelementptr inbounds %"class.std::vector", ptr %1489, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1490) #9
  %1491 = icmp eq ptr %1490, %1486
  br i1 %1491, label %1492, label %1488

1492:                                             ; preds = %1488
  br label %1493

1493:                                             ; preds = %1492, %1473
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #9
  %1494 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %97, i32 0, i32 0
  %1495 = getelementptr inbounds %"struct.std::pair", ptr %1494, i64 1
  br label %1496

1496:                                             ; preds = %1496, %1493
  %1497 = phi ptr [ %1495, %1493 ], [ %1498, %1496 ]
  %1498 = getelementptr inbounds %"struct.std::pair", ptr %1497, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1498) #9
  %1499 = icmp eq ptr %1498, %1494
  br i1 %1499, label %1500, label %1496

1500:                                             ; preds = %1496
  br label %1501

1501:                                             ; preds = %1500, %1469
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %99) #9
  br label %1502

1502:                                             ; preds = %1501, %1465
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #9
  br label %1503

1503:                                             ; preds = %1502, %1461
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #9
  %1504 = load i1, ptr %102, align 1
  br i1 %1504, label %1505, label %1513

1505:                                             ; preds = %1503
  %1506 = load ptr, ptr %98, align 8
  %1507 = icmp eq ptr %97, %1506
  br i1 %1507, label %1512, label %1508

1508:                                             ; preds = %1508, %1505
  %1509 = phi ptr [ %1506, %1505 ], [ %1510, %1508 ]
  %1510 = getelementptr inbounds %"struct.std::pair", ptr %1509, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1510) #9
  %1511 = icmp eq ptr %1510, %97
  br i1 %1511, label %1512, label %1508

1512:                                             ; preds = %1508, %1505
  br label %1513

1513:                                             ; preds = %1512, %1503
  call void @llvm.lifetime.end.p0(i64 32, ptr %97) #9
  %1514 = load i1, ptr %104, align 1
  br i1 %1514, label %1515, label %1523

1515:                                             ; preds = %1513
  %1516 = load ptr, ptr %95, align 8
  %1517 = icmp eq ptr %94, %1516
  br i1 %1517, label %1522, label %1518

1518:                                             ; preds = %1518, %1515
  %1519 = phi ptr [ %1516, %1515 ], [ %1520, %1518 ]
  %1520 = getelementptr inbounds %"class.std::vector", ptr %1519, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1520) #9
  %1521 = icmp eq ptr %1520, %94
  br i1 %1521, label %1522, label %1518

1522:                                             ; preds = %1518, %1515
  br label %1523

1523:                                             ; preds = %1522, %1513
  call void @llvm.lifetime.end.p0(i64 24, ptr %94) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %91) #9
  br label %1528

1524:                                             ; preds = %1350, %1348, %1345
  %1525 = landingpad { ptr, i32 }
          catch ptr null
  %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
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #9
  br label %1528

1528:                                             ; preds = %1524, %1523, %1457
  %1529 = load ptr, ptr %4, align 8
  %1530 = call ptr @__cxa_begin_catch(ptr %1529) #9
  %1531 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1532 unwind label %1670

1532:                                             ; preds = %1528
  %1533 = load ptr, ptr %1531, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %107) #9
  %1534 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1535 unwind label %1674

1535:                                             ; preds = %1532
  %1536 = load ptr, ptr %1534, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %107, ptr noundef nonnull align 8 dereferenceable(30) %1536, i32 noundef 2364)
          to label %1537 unwind label %1674

1537:                                             ; preds = %1535
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1533, ptr noundef nonnull align 8 dereferenceable(30) %107, ptr noundef @.str.511)
          to label %1538 unwind label %1674

1538:                                             ; preds = %1537
  call void @llvm.lifetime.end.p0(i64 32, ptr %107) #9
  invoke void @__cxa_end_catch()
          to label %1539 unwind label %1142

1539:                                             ; preds = %1538
  br label %1540

1540:                                             ; preds = %1669, %1539
  br label %1541

1541:                                             ; preds = %1540
  br label %1542

1542:                                             ; preds = %1541
  %1543 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %1544 = 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 %109) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %110) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef @.str.509, ptr noundef nonnull align 1 dereferenceable(1) %110)
          to label %1545 unwind label %1680

1545:                                             ; preds = %1542
  call void @llvm.lifetime.start.p0(i64 16, ptr %113) #9
  store i1 true, ptr %117, align 1
  store ptr %113, ptr %114, align 8
  %1546 = 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.512, ptr noundef nonnull align 1 dereferenceable(1) %116)
          to label %1547 unwind label %1684

1547:                                             ; preds = %1545
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %113, ptr noundef nonnull align 8 dereferenceable(33088) %1546, ptr noundef nonnull align 8 dereferenceable(32) %115)
          to label %1548 unwind label %1688

1548:                                             ; preds = %1547
  store i1 false, ptr %117, align 1
  %1549 = getelementptr inbounds %"class.std::initializer_list.94", ptr %112, i32 0, i32 0
  store ptr %113, ptr %1549, align 8, !tbaa !9
  %1550 = getelementptr inbounds %"class.std::initializer_list.94", ptr %112, i32 0, i32 1
  store i64 1, ptr %1550, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %118) #9
  %1551 = getelementptr inbounds { ptr, i64 }, ptr %112, i32 0, i32 0
  %1552 = load ptr, ptr %1551, align 8
  %1553 = getelementptr inbounds { ptr, i64 }, ptr %112, i32 0, i32 1
  %1554 = load i64, ptr %1553, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %111, ptr %1552, i64 %1554, ptr noundef nonnull align 1 dereferenceable(1) %118)
          to label %1555 unwind label %1692

1555:                                             ; preds = %1548
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %108, ptr noundef nonnull align 8 dereferenceable(33088) %1544, ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef %111)
          to label %1556 unwind label %1696

1556:                                             ; preds = %1555
  call void @llvm.memset.p0.i64(ptr align 8 %119, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %119) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %1543, ptr noundef %108, ptr noundef %119)
          to label %1557 unwind label %1700

1557:                                             ; preds = %1556
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %119) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %108) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %111) #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
  %1558 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %113, i32 0, i32 0
  %1559 = getelementptr inbounds %"class.std::shared_ptr", ptr %1558, i64 1
  br label %1560

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

1564:                                             ; preds = %1560
  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 @llvm.lifetime.end.p0(i64 16, ptr %113) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %110) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %109) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %120) #9
  %1565 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  %1566 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %1567 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %121) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %123) #9
  store i1 true, ptr %131, align 1
  store ptr %123, ptr %124, align 8
  %1568 = 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 %125) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %126) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef @.str.509, ptr noundef nonnull align 1 dereferenceable(1) %126)
          to label %1569 unwind label %1726

1569:                                             ; preds = %1564
  call void @llvm.lifetime.start.p0(i64 16, ptr %129) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %129, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  %1570 = getelementptr inbounds %"class.std::initializer_list.94", ptr %128, i32 0, i32 0
  store ptr %129, ptr %1570, align 8, !tbaa !9
  %1571 = getelementptr inbounds %"class.std::initializer_list.94", ptr %128, i32 0, i32 1
  store i64 1, ptr %1571, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %130) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #9
  %1572 = getelementptr inbounds { ptr, i64 }, ptr %128, i32 0, i32 0
  %1573 = load ptr, ptr %1572, align 8
  %1574 = getelementptr inbounds { ptr, i64 }, ptr %128, i32 0, i32 1
  %1575 = load i64, ptr %1574, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %127, ptr %1573, i64 %1575, ptr noundef nonnull align 1 dereferenceable(1) %130)
          to label %1576 unwind label %1730

1576:                                             ; preds = %1569
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %123, ptr noundef nonnull align 8 dereferenceable(33088) %1568, ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef %127)
          to label %1577 unwind label %1734

1577:                                             ; preds = %1576
  store i1 false, ptr %131, align 1
  %1578 = getelementptr inbounds %"class.std::initializer_list.94", ptr %122, i32 0, i32 0
  store ptr %123, ptr %1578, align 8, !tbaa !9
  %1579 = getelementptr inbounds %"class.std::initializer_list.94", ptr %122, i32 0, i32 1
  store i64 1, ptr %1579, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %132) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #9
  %1580 = getelementptr inbounds { ptr, i64 }, ptr %122, i32 0, i32 0
  %1581 = load ptr, ptr %1580, align 8
  %1582 = getelementptr inbounds { ptr, i64 }, ptr %122, i32 0, i32 1
  %1583 = load i64, ptr %1582, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %121, ptr %1581, i64 %1583, ptr noundef nonnull align 1 dereferenceable(1) %132)
          to label %1584 unwind label %1738

1584:                                             ; preds = %1577
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %120, ptr noundef nonnull align 8 dereferenceable(64) %1565, ptr noundef %1566, ptr noundef %1567, ptr noundef nonnull align 8 dereferenceable(24) %121, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %1585 unwind label %1742

1585:                                             ; preds = %1584
  %1586 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %120) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %121) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %132) #9
  %1587 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %123, i32 0, i32 0
  %1588 = getelementptr inbounds %"class.std::shared_ptr", ptr %1587, i64 1
  br label %1589

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

1593:                                             ; preds = %1589
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %127) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #9
  %1594 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %129, i32 0, i32 0
  %1595 = getelementptr inbounds %"class.std::shared_ptr", ptr %1594, i64 1
  br label %1596

1596:                                             ; preds = %1596, %1593
  %1597 = phi ptr [ %1595, %1593 ], [ %1598, %1596 ]
  %1598 = getelementptr inbounds %"class.std::shared_ptr", ptr %1597, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1598) #9
  %1599 = icmp eq ptr %1598, %1594
  br i1 %1599, label %1600, label %1596

1600:                                             ; preds = %1596
  call void @llvm.lifetime.end.p0(i64 16, ptr %129) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %126) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %125) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %123) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %121) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #9
  br label %1601

1601:                                             ; preds = %1600
  %1602 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ERKS8_(ptr noundef nonnull align 8 dereferenceable(24) %133, ptr noundef nonnull align 8 dereferenceable(24) %1602)
          to label %1603 unwind label %1774

1603:                                             ; preds = %1601
  call void @llvm.lifetime.start.p0(i64 48, ptr %136) #9
  store i1 true, ptr %154, align 1
  store ptr %136, ptr %137, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %139) #9
  store i1 true, ptr %144, align 1
  store ptr %139, ptr %140, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %141) #9
  %1604 = 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 %142) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %143) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %142, ptr noundef @.str.502, ptr noundef nonnull align 1 dereferenceable(1) %143)
          to label %1605 unwind label %1778

1605:                                             ; preds = %1603
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %141, ptr noundef nonnull align 8 dereferenceable(33088) %1604, ptr noundef nonnull align 8 dereferenceable(32) %142)
          to label %1606 unwind label %1782

1606:                                             ; preds = %1605
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %139, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %141)
          to label %1607 unwind label %1786

1607:                                             ; preds = %1606
  store i1 false, ptr %144, align 1
  %1608 = getelementptr inbounds %"class.std::initializer_list", ptr %138, i32 0, i32 0
  store ptr %139, ptr %1608, align 8, !tbaa !13
  %1609 = getelementptr inbounds %"class.std::initializer_list", ptr %138, i32 0, i32 1
  store i64 1, ptr %1609, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %145) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #9
  %1610 = getelementptr inbounds { ptr, i64 }, ptr %138, i32 0, i32 0
  %1611 = load ptr, ptr %1610, align 8
  %1612 = getelementptr inbounds { ptr, i64 }, ptr %138, i32 0, i32 1
  %1613 = load i64, ptr %1612, align 8
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %136, ptr %1611, i64 %1613, ptr noundef nonnull align 1 dereferenceable(1) %145)
          to label %1614 unwind label %1790

1614:                                             ; preds = %1607
  %1615 = getelementptr inbounds %"class.std::vector", ptr %136, i64 1
  store ptr %1615, ptr %137, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %147) #9
  store i1 true, ptr %152, align 1
  store ptr %147, ptr %148, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %149) #9
  %1616 = 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 %150) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %151) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %151) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %150, ptr noundef @.str.512, ptr noundef nonnull align 1 dereferenceable(1) %151)
          to label %1617 unwind label %1794

1617:                                             ; preds = %1614
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %149, ptr noundef nonnull align 8 dereferenceable(33088) %1616, ptr noundef nonnull align 8 dereferenceable(32) %150)
          to label %1618 unwind label %1798

1618:                                             ; preds = %1617
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %147, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %149)
          to label %1619 unwind label %1802

1619:                                             ; preds = %1618
  store i1 false, ptr %152, align 1
  %1620 = getelementptr inbounds %"class.std::initializer_list", ptr %146, i32 0, i32 0
  store ptr %147, ptr %1620, align 8, !tbaa !13
  %1621 = getelementptr inbounds %"class.std::initializer_list", ptr %146, i32 0, i32 1
  store i64 1, ptr %1621, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %153) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %153) #9
  %1622 = getelementptr inbounds { ptr, i64 }, ptr %146, i32 0, i32 0
  %1623 = load ptr, ptr %1622, align 8
  %1624 = getelementptr inbounds { ptr, i64 }, ptr %146, i32 0, i32 1
  %1625 = load i64, ptr %1624, align 8
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %1615, ptr %1623, i64 %1625, ptr noundef nonnull align 1 dereferenceable(1) %153)
          to label %1626 unwind label %1806

1626:                                             ; preds = %1619
  store i1 false, ptr %154, align 1
  %1627 = getelementptr inbounds %"class.std::initializer_list.104", ptr %135, i32 0, i32 0
  store ptr %136, ptr %1627, align 8, !tbaa !16
  %1628 = getelementptr inbounds %"class.std::initializer_list.104", ptr %135, i32 0, i32 1
  store i64 2, ptr %1628, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 1, ptr %155) #9
  call void @_ZNSaISt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %155) #9
  %1629 = getelementptr inbounds { ptr, i64 }, ptr %135, i32 0, i32 0
  %1630 = load ptr, ptr %1629, align 8
  %1631 = getelementptr inbounds { ptr, i64 }, ptr %135, i32 0, i32 1
  %1632 = load i64, ptr %1631, align 8
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ESt16initializer_listIS6_ERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %134, ptr %1630, i64 %1632, ptr noundef nonnull align 1 dereferenceable(1) %155)
          to label %1633 unwind label %1810

1633:                                             ; preds = %1626
  %1634 = invoke noundef zeroext i1 @_Z14CheckSolutionsSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EES8_(ptr noundef %133, ptr noundef %134)
          to label %1635 unwind label %1814

1635:                                             ; preds = %1633
  %1636 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1634)
          to label %1637 unwind label %1814

1637:                                             ; preds = %1635
  %1638 = xor i1 %1636, true
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %134) #9
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %155) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %155) #9
  %1639 = getelementptr inbounds [2 x %"class.std::vector"], ptr %136, i32 0, i32 0
  %1640 = getelementptr inbounds %"class.std::vector", ptr %1639, i64 2
  br label %1641

1641:                                             ; preds = %1641, %1637
  %1642 = phi ptr [ %1640, %1637 ], [ %1643, %1641 ]
  %1643 = getelementptr inbounds %"class.std::vector", ptr %1642, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1643) #9
  %1644 = icmp eq ptr %1643, %1639
  br i1 %1644, label %1645, label %1641

1645:                                             ; preds = %1641
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %153) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %153) #9
  %1646 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %147, i32 0, i32 0
  %1647 = getelementptr inbounds %"struct.std::pair", ptr %1646, i64 1
  br label %1648

1648:                                             ; preds = %1648, %1645
  %1649 = phi ptr [ %1647, %1645 ], [ %1650, %1648 ]
  %1650 = getelementptr inbounds %"struct.std::pair", ptr %1649, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1650) #9
  %1651 = icmp eq ptr %1650, %1646
  br i1 %1651, label %1652, label %1648

1652:                                             ; preds = %1648
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %149) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %150) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %151) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %151) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %150) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %149) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %147) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %145) #9
  %1653 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %139, i32 0, i32 0
  %1654 = getelementptr inbounds %"struct.std::pair", ptr %1653, i64 1
  br label %1655

1655:                                             ; preds = %1655, %1652
  %1656 = phi ptr [ %1654, %1652 ], [ %1657, %1655 ]
  %1657 = getelementptr inbounds %"struct.std::pair", ptr %1656, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1657) #9
  %1658 = icmp eq ptr %1657, %1653
  br i1 %1658, label %1659, label %1655

1659:                                             ; preds = %1655
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %141) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %143) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %142) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %141) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %139) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %136) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #9
  br i1 %1638, label %1660, label %2030

1660:                                             ; preds = %1659
  %1661 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1662 unwind label %1774

1662:                                             ; preds = %1660
  %1663 = load ptr, ptr %1661, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %156) #9
  %1664 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1665 unwind label %1878

1665:                                             ; preds = %1662
  %1666 = load ptr, ptr %1664, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %156, ptr noundef nonnull align 8 dereferenceable(30) %1666, i32 noundef 2372)
          to label %1667 unwind label %1878

1667:                                             ; preds = %1665
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1663, ptr noundef nonnull align 8 dereferenceable(30) %156, ptr noundef @.str.513)
          to label %1668 unwind label %1878

1668:                                             ; preds = %1667
  call void @llvm.lifetime.end.p0(i64 32, ptr %156) #9
  br label %2030

1669:                                             ; preds = %1351, %1342
  br label %1540

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

1674:                                             ; preds = %1537, %1535, %1532
  %1675 = landingpad { ptr, i32 }
          cleanup
  %1676 = extractvalue { ptr, i32 } %1675, 0
  store ptr %1676, ptr %4, align 8
  %1677 = extractvalue { ptr, i32 } %1675, 1
  store i32 %1677, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %107) #9
  br label %1678

1678:                                             ; preds = %1674, %1670
  invoke void @__cxa_end_catch()
          to label %1679 unwind label %6410

1679:                                             ; preds = %1678
  br label %6398

1680:                                             ; preds = %1542
  %1681 = landingpad { ptr, i32 }
          cleanup
  %1682 = extractvalue { ptr, i32 } %1681, 0
  store ptr %1682, ptr %4, align 8
  %1683 = extractvalue { ptr, i32 } %1681, 1
  store i32 %1683, ptr %5, align 4
  br label %1725

1684:                                             ; preds = %1545
  %1685 = landingpad { ptr, i32 }
          cleanup
  %1686 = extractvalue { ptr, i32 } %1685, 0
  store ptr %1686, ptr %4, align 8
  %1687 = extractvalue { ptr, i32 } %1685, 1
  store i32 %1687, ptr %5, align 4
  br label %1714

1688:                                             ; preds = %1547
  %1689 = landingpad { ptr, i32 }
          cleanup
  %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
  br label %1713

1692:                                             ; preds = %1548
  %1693 = landingpad { ptr, i32 }
          cleanup
  %1694 = extractvalue { ptr, i32 } %1693, 0
  store ptr %1694, ptr %4, align 8
  %1695 = extractvalue { ptr, i32 } %1693, 1
  store i32 %1695, ptr %5, align 4
  br label %1705

1696:                                             ; preds = %1555
  %1697 = landingpad { ptr, i32 }
          cleanup
  %1698 = extractvalue { ptr, i32 } %1697, 0
  store ptr %1698, ptr %4, align 8
  %1699 = extractvalue { ptr, i32 } %1697, 1
  store i32 %1699, ptr %5, align 4
  br label %1704

1700:                                             ; preds = %1556
  %1701 = landingpad { ptr, i32 }
          cleanup
  %1702 = extractvalue { ptr, i32 } %1701, 0
  store ptr %1702, ptr %4, align 8
  %1703 = extractvalue { ptr, i32 } %1701, 1
  store i32 %1703, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %119) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %108) #9
  br label %1704

1704:                                             ; preds = %1700, %1696
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %111) #9
  br label %1705

1705:                                             ; preds = %1704, %1692
  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
  %1706 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %113, i32 0, i32 0
  %1707 = getelementptr inbounds %"class.std::shared_ptr", ptr %1706, i64 1
  br label %1708

1708:                                             ; preds = %1708, %1705
  %1709 = phi ptr [ %1707, %1705 ], [ %1710, %1708 ]
  %1710 = getelementptr inbounds %"class.std::shared_ptr", ptr %1709, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1710) #9
  %1711 = icmp eq ptr %1710, %1706
  br i1 %1711, label %1712, label %1708

1712:                                             ; preds = %1708
  br label %1713

1713:                                             ; preds = %1712, %1688
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #9
  br label %1714

1714:                                             ; preds = %1713, %1684
  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
  %1715 = load i1, ptr %117, align 1
  br i1 %1715, label %1716, label %1724

1716:                                             ; preds = %1714
  %1717 = load ptr, ptr %114, align 8
  %1718 = icmp eq ptr %113, %1717
  br i1 %1718, label %1723, label %1719

1719:                                             ; preds = %1719, %1716
  %1720 = phi ptr [ %1717, %1716 ], [ %1721, %1719 ]
  %1721 = getelementptr inbounds %"class.std::shared_ptr", ptr %1720, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1721) #9
  %1722 = icmp eq ptr %1721, %113
  br i1 %1722, label %1723, label %1719

1723:                                             ; preds = %1719, %1716
  br label %1724

1724:                                             ; preds = %1723, %1714
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #9
  br label %1725

1725:                                             ; preds = %1724, %1680
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %110) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %109) #9
  br label %6398

1726:                                             ; preds = %1564
  %1727 = landingpad { ptr, i32 }
          cleanup
  %1728 = extractvalue { ptr, i32 } %1727, 0
  store ptr %1728, ptr %4, align 8
  %1729 = extractvalue { ptr, i32 } %1727, 1
  store i32 %1729, ptr %5, align 4
  br label %1763

1730:                                             ; preds = %1569
  %1731 = landingpad { ptr, i32 }
          cleanup
  %1732 = extractvalue { ptr, i32 } %1731, 0
  store ptr %1732, ptr %4, align 8
  %1733 = extractvalue { ptr, i32 } %1731, 1
  store i32 %1733, ptr %5, align 4
  br label %1755

1734:                                             ; preds = %1576
  %1735 = landingpad { ptr, i32 }
          cleanup
  %1736 = extractvalue { ptr, i32 } %1735, 0
  store ptr %1736, ptr %4, align 8
  %1737 = extractvalue { ptr, i32 } %1735, 1
  store i32 %1737, ptr %5, align 4
  br label %1754

1738:                                             ; preds = %1577
  %1739 = landingpad { ptr, i32 }
          cleanup
  %1740 = extractvalue { ptr, i32 } %1739, 0
  store ptr %1740, ptr %4, align 8
  %1741 = extractvalue { ptr, i32 } %1739, 1
  store i32 %1741, ptr %5, align 4
  br label %1746

1742:                                             ; preds = %1584
  %1743 = landingpad { ptr, i32 }
          cleanup
  %1744 = extractvalue { ptr, i32 } %1743, 0
  store ptr %1744, ptr %4, align 8
  %1745 = extractvalue { ptr, i32 } %1743, 1
  store i32 %1745, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %121) #9
  br label %1746

1746:                                             ; preds = %1742, %1738
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %132) #9
  %1747 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %123, i32 0, i32 0
  %1748 = getelementptr inbounds %"class.std::shared_ptr", ptr %1747, i64 1
  br label %1749

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

1753:                                             ; preds = %1749
  br label %1754

1754:                                             ; preds = %1753, %1734
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %127) #9
  br label %1755

1755:                                             ; preds = %1754, %1730
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #9
  %1756 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %129, i32 0, i32 0
  %1757 = getelementptr inbounds %"class.std::shared_ptr", ptr %1756, i64 1
  br label %1758

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

1762:                                             ; preds = %1758
  call void @llvm.lifetime.end.p0(i64 16, ptr %129) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #9
  br label %1763

1763:                                             ; preds = %1762, %1726
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %126) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %125) #9
  %1764 = load i1, ptr %131, align 1
  br i1 %1764, label %1765, label %1773

1765:                                             ; preds = %1763
  %1766 = load ptr, ptr %124, align 8
  %1767 = icmp eq ptr %123, %1766
  br i1 %1767, label %1772, label %1768

1768:                                             ; preds = %1768, %1765
  %1769 = phi ptr [ %1766, %1765 ], [ %1770, %1768 ]
  %1770 = getelementptr inbounds %"class.std::shared_ptr", ptr %1769, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1770) #9
  %1771 = icmp eq ptr %1770, %123
  br i1 %1771, label %1772, label %1768

1772:                                             ; preds = %1768, %1765
  br label %1773

1773:                                             ; preds = %1772, %1763
  call void @llvm.lifetime.end.p0(i64 16, ptr %123) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %121) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #9
  br label %6398

1774:                                             ; preds = %1660, %1601
  %1775 = landingpad { ptr, i32 }
          catch ptr null
  %1776 = extractvalue { ptr, i32 } %1775, 0
  store ptr %1776, ptr %4, align 8
  %1777 = extractvalue { ptr, i32 } %1775, 1
  store i32 %1777, ptr %5, align 4
  br label %1882

1778:                                             ; preds = %1603
  %1779 = landingpad { ptr, i32 }
          catch ptr null
  %1780 = extractvalue { ptr, i32 } %1779, 0
  store ptr %1780, ptr %4, align 8
  %1781 = extractvalue { ptr, i32 } %1779, 1
  store i32 %1781, ptr %5, align 4
  br label %1857

1782:                                             ; preds = %1605
  %1783 = landingpad { ptr, i32 }
          catch ptr null
  %1784 = extractvalue { ptr, i32 } %1783, 0
  store ptr %1784, ptr %4, align 8
  %1785 = extractvalue { ptr, i32 } %1783, 1
  store i32 %1785, ptr %5, align 4
  br label %1856

1786:                                             ; preds = %1606
  %1787 = landingpad { ptr, i32 }
          catch ptr null
  %1788 = extractvalue { ptr, i32 } %1787, 0
  store ptr %1788, ptr %4, align 8
  %1789 = extractvalue { ptr, i32 } %1787, 1
  store i32 %1789, ptr %5, align 4
  br label %1855

1790:                                             ; preds = %1607
  %1791 = landingpad { ptr, i32 }
          catch ptr null
  %1792 = extractvalue { ptr, i32 } %1791, 0
  store ptr %1792, ptr %4, align 8
  %1793 = extractvalue { ptr, i32 } %1791, 1
  store i32 %1793, ptr %5, align 4
  br label %1847

1794:                                             ; preds = %1614
  %1795 = landingpad { ptr, i32 }
          catch ptr null
  %1796 = extractvalue { ptr, i32 } %1795, 0
  store ptr %1796, ptr %4, align 8
  %1797 = extractvalue { ptr, i32 } %1795, 1
  store i32 %1797, ptr %5, align 4
  br label %1836

1798:                                             ; preds = %1617
  %1799 = landingpad { ptr, i32 }
          catch ptr null
  %1800 = extractvalue { ptr, i32 } %1799, 0
  store ptr %1800, ptr %4, align 8
  %1801 = extractvalue { ptr, i32 } %1799, 1
  store i32 %1801, ptr %5, align 4
  br label %1835

1802:                                             ; preds = %1618
  %1803 = landingpad { ptr, i32 }
          catch ptr null
  %1804 = extractvalue { ptr, i32 } %1803, 0
  store ptr %1804, ptr %4, align 8
  %1805 = extractvalue { ptr, i32 } %1803, 1
  store i32 %1805, ptr %5, align 4
  br label %1834

1806:                                             ; preds = %1619
  %1807 = landingpad { ptr, i32 }
          catch ptr null
  %1808 = extractvalue { ptr, i32 } %1807, 0
  store ptr %1808, ptr %4, align 8
  %1809 = extractvalue { ptr, i32 } %1807, 1
  store i32 %1809, ptr %5, align 4
  br label %1826

1810:                                             ; preds = %1626
  %1811 = landingpad { ptr, i32 }
          catch ptr null
  %1812 = extractvalue { ptr, i32 } %1811, 0
  store ptr %1812, ptr %4, align 8
  %1813 = extractvalue { ptr, i32 } %1811, 1
  store i32 %1813, ptr %5, align 4
  br label %1818

1814:                                             ; preds = %1635, %1633
  %1815 = landingpad { ptr, i32 }
          catch ptr null
  %1816 = extractvalue { ptr, i32 } %1815, 0
  store ptr %1816, ptr %4, align 8
  %1817 = extractvalue { ptr, i32 } %1815, 1
  store i32 %1817, ptr %5, align 4
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %134) #9
  br label %1818

1818:                                             ; preds = %1814, %1810
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %155) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %155) #9
  %1819 = getelementptr inbounds [2 x %"class.std::vector"], ptr %136, i32 0, i32 0
  %1820 = getelementptr inbounds %"class.std::vector", ptr %1819, i64 2
  br label %1821

1821:                                             ; preds = %1821, %1818
  %1822 = phi ptr [ %1820, %1818 ], [ %1823, %1821 ]
  %1823 = getelementptr inbounds %"class.std::vector", ptr %1822, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1823) #9
  %1824 = icmp eq ptr %1823, %1819
  br i1 %1824, label %1825, label %1821

1825:                                             ; preds = %1821
  br label %1826

1826:                                             ; preds = %1825, %1806
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %153) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %153) #9
  %1827 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %147, i32 0, i32 0
  %1828 = getelementptr inbounds %"struct.std::pair", ptr %1827, i64 1
  br label %1829

1829:                                             ; preds = %1829, %1826
  %1830 = phi ptr [ %1828, %1826 ], [ %1831, %1829 ]
  %1831 = getelementptr inbounds %"struct.std::pair", ptr %1830, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1831) #9
  %1832 = icmp eq ptr %1831, %1827
  br i1 %1832, label %1833, label %1829

1833:                                             ; preds = %1829
  br label %1834

1834:                                             ; preds = %1833, %1802
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %149) #9
  br label %1835

1835:                                             ; preds = %1834, %1798
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %150) #9
  br label %1836

1836:                                             ; preds = %1835, %1794
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %151) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %151) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %150) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %149) #9
  %1837 = load i1, ptr %152, align 1
  br i1 %1837, label %1838, label %1846

1838:                                             ; preds = %1836
  %1839 = load ptr, ptr %148, align 8
  %1840 = icmp eq ptr %147, %1839
  br i1 %1840, label %1845, label %1841

1841:                                             ; preds = %1841, %1838
  %1842 = phi ptr [ %1839, %1838 ], [ %1843, %1841 ]
  %1843 = getelementptr inbounds %"struct.std::pair", ptr %1842, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1843) #9
  %1844 = icmp eq ptr %1843, %147
  br i1 %1844, label %1845, label %1841

1845:                                             ; preds = %1841, %1838
  br label %1846

1846:                                             ; preds = %1845, %1836
  call void @llvm.lifetime.end.p0(i64 32, ptr %147) #9
  br label %1847

1847:                                             ; preds = %1846, %1790
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %145) #9
  %1848 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %139, i32 0, i32 0
  %1849 = getelementptr inbounds %"struct.std::pair", ptr %1848, i64 1
  br label %1850

1850:                                             ; preds = %1850, %1847
  %1851 = phi ptr [ %1849, %1847 ], [ %1852, %1850 ]
  %1852 = getelementptr inbounds %"struct.std::pair", ptr %1851, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1852) #9
  %1853 = icmp eq ptr %1852, %1848
  br i1 %1853, label %1854, label %1850

1854:                                             ; preds = %1850
  br label %1855

1855:                                             ; preds = %1854, %1786
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %141) #9
  br label %1856

1856:                                             ; preds = %1855, %1782
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #9
  br label %1857

1857:                                             ; preds = %1856, %1778
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %143) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %142) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %141) #9
  %1858 = load i1, ptr %144, align 1
  br i1 %1858, label %1859, label %1867

1859:                                             ; preds = %1857
  %1860 = load ptr, ptr %140, align 8
  %1861 = icmp eq ptr %139, %1860
  br i1 %1861, label %1866, label %1862

1862:                                             ; preds = %1862, %1859
  %1863 = phi ptr [ %1860, %1859 ], [ %1864, %1862 ]
  %1864 = getelementptr inbounds %"struct.std::pair", ptr %1863, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1864) #9
  %1865 = icmp eq ptr %1864, %139
  br i1 %1865, label %1866, label %1862

1866:                                             ; preds = %1862, %1859
  br label %1867

1867:                                             ; preds = %1866, %1857
  call void @llvm.lifetime.end.p0(i64 32, ptr %139) #9
  %1868 = load i1, ptr %154, align 1
  br i1 %1868, label %1869, label %1877

1869:                                             ; preds = %1867
  %1870 = load ptr, ptr %137, align 8
  %1871 = icmp eq ptr %136, %1870
  br i1 %1871, label %1876, label %1872

1872:                                             ; preds = %1872, %1869
  %1873 = phi ptr [ %1870, %1869 ], [ %1874, %1872 ]
  %1874 = getelementptr inbounds %"class.std::vector", ptr %1873, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1874) #9
  %1875 = icmp eq ptr %1874, %136
  br i1 %1875, label %1876, label %1872

1876:                                             ; preds = %1872, %1869
  br label %1877

1877:                                             ; preds = %1876, %1867
  call void @llvm.lifetime.end.p0(i64 48, ptr %136) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #9
  br label %1882

1878:                                             ; preds = %1667, %1665, %1662
  %1879 = landingpad { ptr, i32 }
          catch ptr null
  %1880 = extractvalue { ptr, i32 } %1879, 0
  store ptr %1880, ptr %4, align 8
  %1881 = extractvalue { ptr, i32 } %1879, 1
  store i32 %1881, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %156) #9
  br label %1882

1882:                                             ; preds = %1878, %1877, %1774
  %1883 = load ptr, ptr %4, align 8
  %1884 = call ptr @__cxa_begin_catch(ptr %1883) #9
  %1885 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1886 unwind label %2031

1886:                                             ; preds = %1882
  %1887 = load ptr, ptr %1885, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %157) #9
  %1888 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1889 unwind label %2035

1889:                                             ; preds = %1886
  %1890 = load ptr, ptr %1888, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %157, ptr noundef nonnull align 8 dereferenceable(30) %1890, i32 noundef 2372)
          to label %1891 unwind label %2035

1891:                                             ; preds = %1889
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1887, ptr noundef nonnull align 8 dereferenceable(30) %157, ptr noundef @.str.514)
          to label %1892 unwind label %2035

1892:                                             ; preds = %1891
  call void @llvm.lifetime.end.p0(i64 32, ptr %157) #9
  invoke void @__cxa_end_catch()
          to label %1893 unwind label %1142

1893:                                             ; preds = %1892
  br label %1894

1894:                                             ; preds = %2030, %1893
  br label %1895

1895:                                             ; preds = %1894
  br label %1896

1896:                                             ; preds = %1895
  %1897 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %1897)
          to label %1898 unwind label %1142

1898:                                             ; preds = %1896
  %1899 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %1900 = 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.515, ptr noundef nonnull align 1 dereferenceable(1) %160)
          to label %1901 unwind label %2041

1901:                                             ; preds = %1898
  call void @llvm.lifetime.start.p0(i64 16, ptr %163) #9
  store i1 true, ptr %167, align 1
  store ptr %163, ptr %164, align 8
  %1902 = 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 %165) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %166) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %166) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %165, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %166)
          to label %1903 unwind label %2045

1903:                                             ; preds = %1901
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %163, ptr noundef nonnull align 8 dereferenceable(33088) %1902, ptr noundef nonnull align 8 dereferenceable(32) %165)
          to label %1904 unwind label %2049

1904:                                             ; preds = %1903
  store i1 false, ptr %167, align 1
  %1905 = getelementptr inbounds %"class.std::initializer_list.94", ptr %162, i32 0, i32 0
  store ptr %163, ptr %1905, align 8, !tbaa !9
  %1906 = getelementptr inbounds %"class.std::initializer_list.94", ptr %162, i32 0, i32 1
  store i64 1, ptr %1906, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %168) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %168) #9
  %1907 = getelementptr inbounds { ptr, i64 }, ptr %162, i32 0, i32 0
  %1908 = load ptr, ptr %1907, align 8
  %1909 = getelementptr inbounds { ptr, i64 }, ptr %162, i32 0, i32 1
  %1910 = load i64, ptr %1909, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %161, ptr %1908, i64 %1910, ptr noundef nonnull align 1 dereferenceable(1) %168)
          to label %1911 unwind label %2053

1911:                                             ; preds = %1904
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %158, ptr noundef nonnull align 8 dereferenceable(33088) %1900, ptr noundef nonnull align 8 dereferenceable(32) %159, ptr noundef %161)
          to label %1912 unwind label %2057

1912:                                             ; preds = %1911
  call void @llvm.lifetime.start.p0(i64 16, ptr %171) #9
  store i1 true, ptr %183, align 1
  store ptr %171, ptr %172, align 8
  %1913 = 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 %173) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %174) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %174) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %173, ptr noundef @.str.516, ptr noundef nonnull align 1 dereferenceable(1) %174)
          to label %1914 unwind label %2061

1914:                                             ; preds = %1912
  call void @llvm.lifetime.start.p0(i64 16, ptr %177) #9
  store i1 true, ptr %181, align 1
  store ptr %177, ptr %178, align 8
  %1915 = 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 %179) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %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 @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %180)
          to label %1916 unwind label %2065

1916:                                             ; preds = %1914
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %177, ptr noundef nonnull align 8 dereferenceable(33088) %1915, ptr noundef nonnull align 8 dereferenceable(32) %179)
          to label %1917 unwind label %2069

1917:                                             ; preds = %1916
  store i1 false, ptr %181, align 1
  %1918 = getelementptr inbounds %"class.std::initializer_list.94", ptr %176, i32 0, i32 0
  store ptr %177, ptr %1918, align 8, !tbaa !9
  %1919 = getelementptr inbounds %"class.std::initializer_list.94", ptr %176, i32 0, i32 1
  store i64 1, ptr %1919, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %182) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %182) #9
  %1920 = getelementptr inbounds { ptr, i64 }, ptr %176, i32 0, i32 0
  %1921 = load ptr, ptr %1920, align 8
  %1922 = getelementptr inbounds { ptr, i64 }, ptr %176, i32 0, i32 1
  %1923 = load i64, ptr %1922, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %175, ptr %1921, i64 %1923, ptr noundef nonnull align 1 dereferenceable(1) %182)
          to label %1924 unwind label %2073

1924:                                             ; preds = %1917
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %171, ptr noundef nonnull align 8 dereferenceable(33088) %1913, ptr noundef nonnull align 8 dereferenceable(32) %173, ptr noundef %175)
          to label %1925 unwind label %2077

1925:                                             ; preds = %1924
  store i1 false, ptr %183, align 1
  %1926 = getelementptr inbounds %"class.std::initializer_list.94", ptr %170, i32 0, i32 0
  store ptr %171, ptr %1926, align 8, !tbaa !9
  %1927 = getelementptr inbounds %"class.std::initializer_list.94", ptr %170, i32 0, i32 1
  store i64 1, ptr %1927, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %184) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %184) #9
  %1928 = getelementptr inbounds { ptr, i64 }, ptr %170, i32 0, i32 0
  %1929 = load ptr, ptr %1928, align 8
  %1930 = getelementptr inbounds { ptr, i64 }, ptr %170, i32 0, i32 1
  %1931 = load i64, ptr %1930, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %169, ptr %1929, i64 %1931, ptr noundef nonnull align 1 dereferenceable(1) %184)
          to label %1932 unwind label %2081

1932:                                             ; preds = %1925
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %1899, ptr noundef %158, ptr noundef %169)
          to label %1933 unwind label %2085

1933:                                             ; preds = %1932
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %169) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %184) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %184) #9
  %1934 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %171, i32 0, i32 0
  %1935 = getelementptr inbounds %"class.std::shared_ptr", ptr %1934, i64 1
  br label %1936

1936:                                             ; preds = %1936, %1933
  %1937 = phi ptr [ %1935, %1933 ], [ %1938, %1936 ]
  %1938 = getelementptr inbounds %"class.std::shared_ptr", ptr %1937, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1938) #9
  %1939 = icmp eq ptr %1938, %1934
  br i1 %1939, label %1940, label %1936

1940:                                             ; preds = %1936
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %175) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %182) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %182) #9
  %1941 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %177, i32 0, i32 0
  %1942 = getelementptr inbounds %"class.std::shared_ptr", ptr %1941, i64 1
  br label %1943

1943:                                             ; preds = %1943, %1940
  %1944 = phi ptr [ %1942, %1940 ], [ %1945, %1943 ]
  %1945 = getelementptr inbounds %"class.std::shared_ptr", ptr %1944, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1945) #9
  %1946 = icmp eq ptr %1945, %1941
  br i1 %1946, label %1947, label %1943

1947:                                             ; preds = %1943
  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 %180) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %179) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %177) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %173) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %174) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %174) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %173) #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) %158) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %161) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %168) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %168) #9
  %1948 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %163, i32 0, i32 0
  %1949 = getelementptr inbounds %"class.std::shared_ptr", ptr %1948, i64 1
  br label %1950

1950:                                             ; preds = %1950, %1947
  %1951 = phi ptr [ %1949, %1947 ], [ %1952, %1950 ]
  %1952 = getelementptr inbounds %"class.std::shared_ptr", ptr %1951, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1952) #9
  %1953 = icmp eq ptr %1952, %1948
  br i1 %1953, label %1954, label %1950

1954:                                             ; preds = %1950
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %165) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %166) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %166) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %165) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %163) #9
  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
  %1955 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %1956 = 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.516, ptr noundef nonnull align 1 dereferenceable(1) %187)
          to label %1957 unwind label %2151

1957:                                             ; preds = %1954
  call void @llvm.lifetime.start.p0(i64 16, ptr %190) #9
  store i1 true, ptr %194, align 1
  store ptr %190, ptr %191, align 8
  %1958 = 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.517, ptr noundef nonnull align 1 dereferenceable(1) %193)
          to label %1959 unwind label %2155

1959:                                             ; preds = %1957
  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) %1958, ptr noundef nonnull align 8 dereferenceable(32) %192)
          to label %1960 unwind label %2159

1960:                                             ; preds = %1959
  store i1 false, ptr %194, align 1
  %1961 = getelementptr inbounds %"class.std::initializer_list.94", ptr %189, i32 0, i32 0
  store ptr %190, ptr %1961, align 8, !tbaa !9
  %1962 = getelementptr inbounds %"class.std::initializer_list.94", ptr %189, i32 0, i32 1
  store i64 1, ptr %1962, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %195) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %195) #9
  %1963 = getelementptr inbounds { ptr, i64 }, ptr %189, i32 0, i32 0
  %1964 = load ptr, ptr %1963, align 8
  %1965 = getelementptr inbounds { ptr, i64 }, ptr %189, i32 0, i32 1
  %1966 = load i64, ptr %1965, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %188, ptr %1964, i64 %1966, ptr noundef nonnull align 1 dereferenceable(1) %195)
          to label %1967 unwind label %2163

1967:                                             ; preds = %1960
  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) %1956, ptr noundef nonnull align 8 dereferenceable(32) %186, ptr noundef %188)
          to label %1968 unwind label %2167

1968:                                             ; preds = %1967
  call void @llvm.memset.p0.i64(ptr align 8 %196, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %196) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %1955, ptr noundef %185, ptr noundef %196)
          to label %1969 unwind label %2171

1969:                                             ; preds = %1968
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %196) #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) %195) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %195) #9
  %1970 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %190, i32 0, i32 0
  %1971 = getelementptr inbounds %"class.std::shared_ptr", ptr %1970, i64 1
  br label %1972

1972:                                             ; preds = %1972, %1969
  %1973 = phi ptr [ %1971, %1969 ], [ %1974, %1972 ]
  %1974 = getelementptr inbounds %"class.std::shared_ptr", ptr %1973, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1974) #9
  %1975 = icmp eq ptr %1974, %1970
  br i1 %1975, label %1976, label %1972

1976:                                             ; preds = %1972
  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 16, 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.start.p0(i64 16, ptr %197) #9
  %1977 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  %1978 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %1979 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %198) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %200) #9
  store i1 true, ptr %212, align 1
  store ptr %200, ptr %201, align 8
  %1980 = 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 %202) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %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 @.str.515, ptr noundef nonnull align 1 dereferenceable(1) %203)
          to label %1981 unwind label %2197

1981:                                             ; preds = %1976
  call void @llvm.lifetime.start.p0(i64 16, ptr %206) #9
  store i1 true, ptr %210, align 1
  store ptr %206, ptr %207, align 8
  %1982 = 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 %208) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %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 @.str.517, ptr noundef nonnull align 1 dereferenceable(1) %209)
          to label %1983 unwind label %2201

1983:                                             ; preds = %1981
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %206, ptr noundef nonnull align 8 dereferenceable(33088) %1982, ptr noundef nonnull align 8 dereferenceable(32) %208)
          to label %1984 unwind label %2205

1984:                                             ; preds = %1983
  store i1 false, ptr %210, align 1
  %1985 = getelementptr inbounds %"class.std::initializer_list.94", ptr %205, i32 0, i32 0
  store ptr %206, ptr %1985, align 8, !tbaa !9
  %1986 = getelementptr inbounds %"class.std::initializer_list.94", ptr %205, i32 0, i32 1
  store i64 1, ptr %1986, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %211) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %211) #9
  %1987 = getelementptr inbounds { ptr, i64 }, ptr %205, i32 0, i32 0
  %1988 = load ptr, ptr %1987, align 8
  %1989 = getelementptr inbounds { ptr, i64 }, ptr %205, i32 0, i32 1
  %1990 = load i64, ptr %1989, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %204, ptr %1988, i64 %1990, ptr noundef nonnull align 1 dereferenceable(1) %211)
          to label %1991 unwind label %2209

1991:                                             ; preds = %1984
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %200, ptr noundef nonnull align 8 dereferenceable(33088) %1980, ptr noundef nonnull align 8 dereferenceable(32) %202, ptr noundef %204)
          to label %1992 unwind label %2213

1992:                                             ; preds = %1991
  store i1 false, ptr %212, align 1
  %1993 = getelementptr inbounds %"class.std::initializer_list.94", ptr %199, i32 0, i32 0
  store ptr %200, ptr %1993, align 8, !tbaa !9
  %1994 = getelementptr inbounds %"class.std::initializer_list.94", ptr %199, i32 0, i32 1
  store i64 1, ptr %1994, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %213) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %213) #9
  %1995 = getelementptr inbounds { ptr, i64 }, ptr %199, i32 0, i32 0
  %1996 = load ptr, ptr %1995, align 8
  %1997 = getelementptr inbounds { ptr, i64 }, ptr %199, i32 0, i32 1
  %1998 = load i64, ptr %1997, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %198, ptr %1996, i64 %1998, ptr noundef nonnull align 1 dereferenceable(1) %213)
          to label %1999 unwind label %2217

1999:                                             ; preds = %1992
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %197, ptr noundef nonnull align 8 dereferenceable(64) %1977, ptr noundef %1978, ptr noundef %1979, ptr noundef nonnull align 8 dereferenceable(24) %198, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %2000 unwind label %2221

2000:                                             ; preds = %1999
  %2001 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %197) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__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) %198) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %213) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %213) #9
  %2002 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %200, i32 0, i32 0
  %2003 = getelementptr inbounds %"class.std::shared_ptr", ptr %2002, i64 1
  br label %2004

2004:                                             ; preds = %2004, %2000
  %2005 = phi ptr [ %2003, %2000 ], [ %2006, %2004 ]
  %2006 = getelementptr inbounds %"class.std::shared_ptr", ptr %2005, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2006) #9
  %2007 = icmp eq ptr %2006, %2002
  br i1 %2007, label %2008, label %2004

2008:                                             ; preds = %2004
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %204) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %211) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %211) #9
  %2009 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %206, i32 0, i32 0
  %2010 = getelementptr inbounds %"class.std::shared_ptr", ptr %2009, i64 1
  br label %2011

2011:                                             ; preds = %2011, %2008
  %2012 = phi ptr [ %2010, %2008 ], [ %2013, %2011 ]
  %2013 = getelementptr inbounds %"class.std::shared_ptr", ptr %2012, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2013) #9
  %2014 = icmp eq ptr %2013, %2009
  br i1 %2014, label %2015, label %2011

2015:                                             ; preds = %2011
  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 %209) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %208) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %206) #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 %203) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %202) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %200) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %198) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %197) #9
  br label %2016

2016:                                             ; preds = %2015
  call void @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %214, ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  %2017 = call noundef zeroext i1 @_ZN25SuiteHtnGoalResolverTests6IsTrueESt10shared_ptrISt6vectorIS1_ISt4pairIS0_I7HtnTermES4_ESaIS5_EESaIS7_EEE(ptr noundef %214)
  %2018 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %2017)
          to label %2019 unwind label %2265

2019:                                             ; preds = %2016
  %2020 = xor i1 %2018, true
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %214) #9
  br i1 %2020, label %2021, label %2457

2021:                                             ; preds = %2019
  %2022 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2023 unwind label %2269

2023:                                             ; preds = %2021
  %2024 = load ptr, ptr %2022, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %215) #9
  %2025 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2026 unwind label %2273

2026:                                             ; preds = %2023
  %2027 = load ptr, ptr %2025, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %215, ptr noundef nonnull align 8 dereferenceable(30) %2027, i32 noundef 2382)
          to label %2028 unwind label %2273

2028:                                             ; preds = %2026
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2024, ptr noundef nonnull align 8 dereferenceable(30) %215, ptr noundef @.str.507)
          to label %2029 unwind label %2273

2029:                                             ; preds = %2028
  call void @llvm.lifetime.end.p0(i64 32, ptr %215) #9
  br label %2457

2030:                                             ; preds = %1668, %1659
  br label %1894

2031:                                             ; preds = %1882
  %2032 = landingpad { ptr, i32 }
          cleanup
  %2033 = extractvalue { ptr, i32 } %2032, 0
  store ptr %2033, ptr %4, align 8
  %2034 = extractvalue { ptr, i32 } %2032, 1
  store i32 %2034, ptr %5, align 4
  br label %2039

2035:                                             ; preds = %1891, %1889, %1886
  %2036 = landingpad { ptr, i32 }
          cleanup
  %2037 = extractvalue { ptr, i32 } %2036, 0
  store ptr %2037, ptr %4, align 8
  %2038 = extractvalue { ptr, i32 } %2036, 1
  store i32 %2038, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %157) #9
  br label %2039

2039:                                             ; preds = %2035, %2031
  invoke void @__cxa_end_catch()
          to label %2040 unwind label %6410

2040:                                             ; preds = %2039
  br label %6398

2041:                                             ; preds = %1898
  %2042 = landingpad { ptr, i32 }
          cleanup
  %2043 = extractvalue { ptr, i32 } %2042, 0
  store ptr %2043, ptr %4, align 8
  %2044 = extractvalue { ptr, i32 } %2042, 1
  store i32 %2044, ptr %5, align 4
  br label %2150

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

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

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

2057:                                             ; preds = %1911
  %2058 = landingpad { ptr, i32 }
          cleanup
  %2059 = extractvalue { ptr, i32 } %2058, 0
  store ptr %2059, ptr %4, align 8
  %2060 = extractvalue { ptr, i32 } %2058, 1
  store i32 %2060, ptr %5, align 4
  br label %2129

2061:                                             ; preds = %1912
  %2062 = landingpad { ptr, i32 }
          cleanup
  %2063 = extractvalue { ptr, i32 } %2062, 0
  store ptr %2063, ptr %4, align 8
  %2064 = extractvalue { ptr, i32 } %2062, 1
  store i32 %2064, ptr %5, align 4
  br label %2118

2065:                                             ; preds = %1914
  %2066 = landingpad { ptr, i32 }
          cleanup
  %2067 = extractvalue { ptr, i32 } %2066, 0
  store ptr %2067, ptr %4, align 8
  %2068 = extractvalue { ptr, i32 } %2066, 1
  store i32 %2068, ptr %5, align 4
  br label %2107

2069:                                             ; preds = %1916
  %2070 = landingpad { ptr, i32 }
          cleanup
  %2071 = extractvalue { ptr, i32 } %2070, 0
  store ptr %2071, ptr %4, align 8
  %2072 = extractvalue { ptr, i32 } %2070, 1
  store i32 %2072, ptr %5, align 4
  br label %2106

2073:                                             ; preds = %1917
  %2074 = landingpad { ptr, i32 }
          cleanup
  %2075 = extractvalue { ptr, i32 } %2074, 0
  store ptr %2075, ptr %4, align 8
  %2076 = extractvalue { ptr, i32 } %2074, 1
  store i32 %2076, ptr %5, align 4
  br label %2098

2077:                                             ; preds = %1924
  %2078 = landingpad { ptr, i32 }
          cleanup
  %2079 = extractvalue { ptr, i32 } %2078, 0
  store ptr %2079, ptr %4, align 8
  %2080 = extractvalue { ptr, i32 } %2078, 1
  store i32 %2080, ptr %5, align 4
  br label %2097

2081:                                             ; preds = %1925
  %2082 = landingpad { ptr, i32 }
          cleanup
  %2083 = extractvalue { ptr, i32 } %2082, 0
  store ptr %2083, ptr %4, align 8
  %2084 = extractvalue { ptr, i32 } %2082, 1
  store i32 %2084, ptr %5, align 4
  br label %2089

2085:                                             ; preds = %1932
  %2086 = landingpad { ptr, i32 }
          cleanup
  %2087 = extractvalue { ptr, i32 } %2086, 0
  store ptr %2087, ptr %4, align 8
  %2088 = extractvalue { ptr, i32 } %2086, 1
  store i32 %2088, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %169) #9
  br label %2089

2089:                                             ; preds = %2085, %2081
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %184) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %184) #9
  %2090 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %171, i32 0, i32 0
  %2091 = getelementptr inbounds %"class.std::shared_ptr", ptr %2090, i64 1
  br label %2092

2092:                                             ; preds = %2092, %2089
  %2093 = phi ptr [ %2091, %2089 ], [ %2094, %2092 ]
  %2094 = getelementptr inbounds %"class.std::shared_ptr", ptr %2093, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2094) #9
  %2095 = icmp eq ptr %2094, %2090
  br i1 %2095, label %2096, label %2092

2096:                                             ; preds = %2092
  br label %2097

2097:                                             ; preds = %2096, %2077
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %175) #9
  br label %2098

2098:                                             ; preds = %2097, %2073
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %182) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %182) #9
  %2099 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %177, i32 0, i32 0
  %2100 = getelementptr inbounds %"class.std::shared_ptr", ptr %2099, i64 1
  br label %2101

2101:                                             ; preds = %2101, %2098
  %2102 = phi ptr [ %2100, %2098 ], [ %2103, %2101 ]
  %2103 = getelementptr inbounds %"class.std::shared_ptr", ptr %2102, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2103) #9
  %2104 = icmp eq ptr %2103, %2099
  br i1 %2104, label %2105, label %2101

2105:                                             ; preds = %2101
  br label %2106

2106:                                             ; preds = %2105, %2069
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #9
  br label %2107

2107:                                             ; preds = %2106, %2065
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %180) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %180) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %179) #9
  %2108 = load i1, ptr %181, align 1
  br i1 %2108, label %2109, label %2117

2109:                                             ; preds = %2107
  %2110 = load ptr, ptr %178, align 8
  %2111 = icmp eq ptr %177, %2110
  br i1 %2111, label %2116, label %2112

2112:                                             ; preds = %2112, %2109
  %2113 = phi ptr [ %2110, %2109 ], [ %2114, %2112 ]
  %2114 = getelementptr inbounds %"class.std::shared_ptr", ptr %2113, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2114) #9
  %2115 = icmp eq ptr %2114, %177
  br i1 %2115, label %2116, label %2112

2116:                                             ; preds = %2112, %2109
  br label %2117

2117:                                             ; preds = %2116, %2107
  call void @llvm.lifetime.end.p0(i64 16, ptr %177) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %173) #9
  br label %2118

2118:                                             ; preds = %2117, %2061
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %174) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %174) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %173) #9
  %2119 = load i1, ptr %183, align 1
  br i1 %2119, label %2120, label %2128

2120:                                             ; preds = %2118
  %2121 = load ptr, ptr %172, align 8
  %2122 = icmp eq ptr %171, %2121
  br i1 %2122, label %2127, label %2123

2123:                                             ; preds = %2123, %2120
  %2124 = phi ptr [ %2121, %2120 ], [ %2125, %2123 ]
  %2125 = getelementptr inbounds %"class.std::shared_ptr", ptr %2124, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2125) #9
  %2126 = icmp eq ptr %2125, %171
  br i1 %2126, label %2127, label %2123

2127:                                             ; preds = %2123, %2120
  br label %2128

2128:                                             ; preds = %2127, %2118
  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) %158) #9
  br label %2129

2129:                                             ; preds = %2128, %2057
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %161) #9
  br label %2130

2130:                                             ; preds = %2129, %2053
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %168) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %168) #9
  %2131 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %163, i32 0, i32 0
  %2132 = getelementptr inbounds %"class.std::shared_ptr", ptr %2131, i64 1
  br label %2133

2133:                                             ; preds = %2133, %2130
  %2134 = phi ptr [ %2132, %2130 ], [ %2135, %2133 ]
  %2135 = getelementptr inbounds %"class.std::shared_ptr", ptr %2134, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2135) #9
  %2136 = icmp eq ptr %2135, %2131
  br i1 %2136, label %2137, label %2133

2137:                                             ; preds = %2133
  br label %2138

2138:                                             ; preds = %2137, %2049
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %165) #9
  br label %2139

2139:                                             ; preds = %2138, %2045
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %166) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %166) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %165) #9
  %2140 = load i1, ptr %167, align 1
  br i1 %2140, label %2141, label %2149

2141:                                             ; preds = %2139
  %2142 = load ptr, ptr %164, align 8
  %2143 = icmp eq ptr %163, %2142
  br i1 %2143, label %2148, label %2144

2144:                                             ; preds = %2144, %2141
  %2145 = phi ptr [ %2142, %2141 ], [ %2146, %2144 ]
  %2146 = getelementptr inbounds %"class.std::shared_ptr", ptr %2145, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2146) #9
  %2147 = icmp eq ptr %2146, %163
  br i1 %2147, label %2148, label %2144

2148:                                             ; preds = %2144, %2141
  br label %2149

2149:                                             ; preds = %2148, %2139
  call void @llvm.lifetime.end.p0(i64 16, ptr %163) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #9
  br label %2150

2150:                                             ; preds = %2149, %2041
  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 %6398

2151:                                             ; preds = %1954
  %2152 = landingpad { ptr, i32 }
          cleanup
  %2153 = extractvalue { ptr, i32 } %2152, 0
  store ptr %2153, ptr %4, align 8
  %2154 = extractvalue { ptr, i32 } %2152, 1
  store i32 %2154, ptr %5, align 4
  br label %2196

2155:                                             ; preds = %1957
  %2156 = landingpad { ptr, i32 }
          cleanup
  %2157 = extractvalue { ptr, i32 } %2156, 0
  store ptr %2157, ptr %4, align 8
  %2158 = extractvalue { ptr, i32 } %2156, 1
  store i32 %2158, ptr %5, align 4
  br label %2185

2159:                                             ; preds = %1959
  %2160 = landingpad { ptr, i32 }
          cleanup
  %2161 = extractvalue { ptr, i32 } %2160, 0
  store ptr %2161, ptr %4, align 8
  %2162 = extractvalue { ptr, i32 } %2160, 1
  store i32 %2162, ptr %5, align 4
  br label %2184

2163:                                             ; preds = %1960
  %2164 = landingpad { ptr, i32 }
          cleanup
  %2165 = extractvalue { ptr, i32 } %2164, 0
  store ptr %2165, ptr %4, align 8
  %2166 = extractvalue { ptr, i32 } %2164, 1
  store i32 %2166, ptr %5, align 4
  br label %2176

2167:                                             ; preds = %1967
  %2168 = landingpad { ptr, i32 }
          cleanup
  %2169 = extractvalue { ptr, i32 } %2168, 0
  store ptr %2169, ptr %4, align 8
  %2170 = extractvalue { ptr, i32 } %2168, 1
  store i32 %2170, ptr %5, align 4
  br label %2175

2171:                                             ; preds = %1968
  %2172 = landingpad { ptr, i32 }
          cleanup
  %2173 = extractvalue { ptr, i32 } %2172, 0
  store ptr %2173, ptr %4, align 8
  %2174 = extractvalue { ptr, i32 } %2172, 1
  store i32 %2174, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %196) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %185) #9
  br label %2175

2175:                                             ; preds = %2171, %2167
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %188) #9
  br label %2176

2176:                                             ; preds = %2175, %2163
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %195) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %195) #9
  %2177 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %190, i32 0, i32 0
  %2178 = getelementptr inbounds %"class.std::shared_ptr", ptr %2177, i64 1
  br label %2179

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

2183:                                             ; preds = %2179
  br label %2184

2184:                                             ; preds = %2183, %2159
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %192) #9
  br label %2185

2185:                                             ; preds = %2184, %2155
  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
  %2186 = load i1, ptr %194, align 1
  br i1 %2186, label %2187, label %2195

2187:                                             ; preds = %2185
  %2188 = load ptr, ptr %191, align 8
  %2189 = icmp eq ptr %190, %2188
  br i1 %2189, label %2194, label %2190

2190:                                             ; preds = %2190, %2187
  %2191 = phi ptr [ %2188, %2187 ], [ %2192, %2190 ]
  %2192 = getelementptr inbounds %"class.std::shared_ptr", ptr %2191, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2192) #9
  %2193 = icmp eq ptr %2192, %190
  br i1 %2193, label %2194, label %2190

2194:                                             ; preds = %2190, %2187
  br label %2195

2195:                                             ; preds = %2194, %2185
  call void @llvm.lifetime.end.p0(i64 16, ptr %190) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %186) #9
  br label %2196

2196:                                             ; preds = %2195, %2151
  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
  br label %6398

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

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

2205:                                             ; preds = %1983
  %2206 = landingpad { ptr, i32 }
          cleanup
  %2207 = extractvalue { ptr, i32 } %2206, 0
  store ptr %2207, ptr %4, align 8
  %2208 = extractvalue { ptr, i32 } %2206, 1
  store i32 %2208, ptr %5, align 4
  br label %2242

2209:                                             ; preds = %1984
  %2210 = landingpad { ptr, i32 }
          cleanup
  %2211 = extractvalue { ptr, i32 } %2210, 0
  store ptr %2211, ptr %4, align 8
  %2212 = extractvalue { ptr, i32 } %2210, 1
  store i32 %2212, ptr %5, align 4
  br label %2234

2213:                                             ; preds = %1991
  %2214 = landingpad { ptr, i32 }
          cleanup
  %2215 = extractvalue { ptr, i32 } %2214, 0
  store ptr %2215, ptr %4, align 8
  %2216 = extractvalue { ptr, i32 } %2214, 1
  store i32 %2216, ptr %5, align 4
  br label %2233

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

2221:                                             ; preds = %1999
  %2222 = landingpad { ptr, i32 }
          cleanup
  %2223 = extractvalue { ptr, i32 } %2222, 0
  store ptr %2223, ptr %4, align 8
  %2224 = extractvalue { ptr, i32 } %2222, 1
  store i32 %2224, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %198) #9
  br label %2225

2225:                                             ; preds = %2221, %2217
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %213) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %213) #9
  %2226 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %200, i32 0, i32 0
  %2227 = getelementptr inbounds %"class.std::shared_ptr", ptr %2226, i64 1
  br label %2228

2228:                                             ; preds = %2228, %2225
  %2229 = phi ptr [ %2227, %2225 ], [ %2230, %2228 ]
  %2230 = getelementptr inbounds %"class.std::shared_ptr", ptr %2229, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2230) #9
  %2231 = icmp eq ptr %2230, %2226
  br i1 %2231, label %2232, label %2228

2232:                                             ; preds = %2228
  br label %2233

2233:                                             ; preds = %2232, %2213
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %204) #9
  br label %2234

2234:                                             ; preds = %2233, %2209
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %211) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %211) #9
  %2235 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %206, i32 0, i32 0
  %2236 = getelementptr inbounds %"class.std::shared_ptr", ptr %2235, i64 1
  br label %2237

2237:                                             ; preds = %2237, %2234
  %2238 = phi ptr [ %2236, %2234 ], [ %2239, %2237 ]
  %2239 = getelementptr inbounds %"class.std::shared_ptr", ptr %2238, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2239) #9
  %2240 = icmp eq ptr %2239, %2235
  br i1 %2240, label %2241, label %2237

2241:                                             ; preds = %2237
  br label %2242

2242:                                             ; preds = %2241, %2205
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %208) #9
  br label %2243

2243:                                             ; preds = %2242, %2201
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %209) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %209) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %208) #9
  %2244 = load i1, ptr %210, align 1
  br i1 %2244, label %2245, label %2253

2245:                                             ; preds = %2243
  %2246 = load ptr, ptr %207, align 8
  %2247 = icmp eq ptr %206, %2246
  br i1 %2247, label %2252, label %2248

2248:                                             ; preds = %2248, %2245
  %2249 = phi ptr [ %2246, %2245 ], [ %2250, %2248 ]
  %2250 = getelementptr inbounds %"class.std::shared_ptr", ptr %2249, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2250) #9
  %2251 = icmp eq ptr %2250, %206
  br i1 %2251, label %2252, label %2248

2252:                                             ; preds = %2248, %2245
  br label %2253

2253:                                             ; preds = %2252, %2243
  call void @llvm.lifetime.end.p0(i64 16, ptr %206) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #9
  br label %2254

2254:                                             ; preds = %2253, %2197
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %203) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %203) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %202) #9
  %2255 = load i1, ptr %212, align 1
  br i1 %2255, label %2256, label %2264

2256:                                             ; preds = %2254
  %2257 = load ptr, ptr %201, align 8
  %2258 = icmp eq ptr %200, %2257
  br i1 %2258, label %2263, label %2259

2259:                                             ; preds = %2259, %2256
  %2260 = phi ptr [ %2257, %2256 ], [ %2261, %2259 ]
  %2261 = getelementptr inbounds %"class.std::shared_ptr", ptr %2260, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2261) #9
  %2262 = icmp eq ptr %2261, %200
  br i1 %2262, label %2263, label %2259

2263:                                             ; preds = %2259, %2256
  br label %2264

2264:                                             ; preds = %2263, %2254
  call void @llvm.lifetime.end.p0(i64 16, ptr %200) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %198) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %197) #9
  br label %6398

2265:                                             ; preds = %2016
  %2266 = landingpad { ptr, i32 }
          catch ptr null
  %2267 = extractvalue { ptr, i32 } %2266, 0
  store ptr %2267, ptr %4, align 8
  %2268 = extractvalue { ptr, i32 } %2266, 1
  store i32 %2268, ptr %5, align 4
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %214) #9
  br label %2277

2269:                                             ; preds = %2021
  %2270 = landingpad { ptr, i32 }
          catch ptr null
  %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 = %2028, %2026, %2023
  %2274 = landingpad { ptr, i32 }
          catch ptr null
  %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 @llvm.lifetime.end.p0(i64 32, ptr %215) #9
  br label %2277

2277:                                             ; preds = %2273, %2269, %2265
  %2278 = load ptr, ptr %4, align 8
  %2279 = call ptr @__cxa_begin_catch(ptr %2278) #9
  %2280 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2281 unwind label %2458

2281:                                             ; preds = %2277
  %2282 = load ptr, ptr %2280, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %216) #9
  %2283 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2284 unwind label %2462

2284:                                             ; preds = %2281
  %2285 = load ptr, ptr %2283, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %216, ptr noundef nonnull align 8 dereferenceable(30) %2285, i32 noundef 2382)
          to label %2286 unwind label %2462

2286:                                             ; preds = %2284
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2282, ptr noundef nonnull align 8 dereferenceable(30) %216, ptr noundef @.str.508)
          to label %2287 unwind label %2462

2287:                                             ; preds = %2286
  call void @llvm.lifetime.end.p0(i64 32, ptr %216) #9
  invoke void @__cxa_end_catch()
          to label %2288 unwind label %1142

2288:                                             ; preds = %2287
  br label %2289

2289:                                             ; preds = %2457, %2288
  br label %2290

2290:                                             ; preds = %2289
  br label %2291

2291:                                             ; preds = %2290
  %2292 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %2292)
          to label %2293 unwind label %1142

2293:                                             ; preds = %2291
  %2294 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %2295 = 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 %218) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %219) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %219) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %218, ptr noundef @.str.515, ptr noundef nonnull align 1 dereferenceable(1) %219)
          to label %2296 unwind label %2468

2296:                                             ; preds = %2293
  call void @llvm.lifetime.start.p0(i64 16, ptr %222) #9
  store i1 true, ptr %226, align 1
  store ptr %222, ptr %223, align 8
  %2297 = 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 %224) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %225) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %225) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %224, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %225)
          to label %2298 unwind label %2472

2298:                                             ; preds = %2296
  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) %2297, ptr noundef nonnull align 8 dereferenceable(32) %224)
          to label %2299 unwind label %2476

2299:                                             ; preds = %2298
  store i1 false, ptr %226, align 1
  %2300 = getelementptr inbounds %"class.std::initializer_list.94", ptr %221, i32 0, i32 0
  store ptr %222, ptr %2300, align 8, !tbaa !9
  %2301 = getelementptr inbounds %"class.std::initializer_list.94", ptr %221, i32 0, i32 1
  store i64 1, ptr %2301, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %227) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %227) #9
  %2302 = getelementptr inbounds { ptr, i64 }, ptr %221, i32 0, i32 0
  %2303 = load ptr, ptr %2302, align 8
  %2304 = getelementptr inbounds { ptr, i64 }, ptr %221, i32 0, i32 1
  %2305 = load i64, ptr %2304, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %220, ptr %2303, i64 %2305, ptr noundef nonnull align 1 dereferenceable(1) %227)
          to label %2306 unwind label %2480

2306:                                             ; preds = %2299
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %217, ptr noundef nonnull align 8 dereferenceable(33088) %2295, ptr noundef nonnull align 8 dereferenceable(32) %218, ptr noundef %220)
          to label %2307 unwind label %2484

2307:                                             ; preds = %2306
  call void @llvm.lifetime.start.p0(i64 16, ptr %230) #9
  store i1 true, ptr %242, align 1
  store ptr %230, ptr %231, align 8
  %2308 = 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 %232) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %233) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %233) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %232, ptr noundef @.str.516, ptr noundef nonnull align 1 dereferenceable(1) %233)
          to label %2309 unwind label %2488

2309:                                             ; preds = %2307
  call void @llvm.lifetime.start.p0(i64 16, ptr %236) #9
  store i1 true, ptr %240, align 1
  store ptr %236, ptr %237, align 8
  %2310 = 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 %238) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %239) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %239) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %238, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %239)
          to label %2311 unwind label %2492

2311:                                             ; preds = %2309
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %236, ptr noundef nonnull align 8 dereferenceable(33088) %2310, ptr noundef nonnull align 8 dereferenceable(32) %238)
          to label %2312 unwind label %2496

2312:                                             ; preds = %2311
  store i1 false, ptr %240, align 1
  %2313 = getelementptr inbounds %"class.std::initializer_list.94", ptr %235, i32 0, i32 0
  store ptr %236, ptr %2313, align 8, !tbaa !9
  %2314 = getelementptr inbounds %"class.std::initializer_list.94", ptr %235, i32 0, i32 1
  store i64 1, ptr %2314, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %241) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %241) #9
  %2315 = getelementptr inbounds { ptr, i64 }, ptr %235, i32 0, i32 0
  %2316 = load ptr, ptr %2315, align 8
  %2317 = getelementptr inbounds { ptr, i64 }, ptr %235, i32 0, i32 1
  %2318 = load i64, ptr %2317, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %234, ptr %2316, i64 %2318, ptr noundef nonnull align 1 dereferenceable(1) %241)
          to label %2319 unwind label %2500

2319:                                             ; preds = %2312
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %230, ptr noundef nonnull align 8 dereferenceable(33088) %2308, ptr noundef nonnull align 8 dereferenceable(32) %232, ptr noundef %234)
          to label %2320 unwind label %2504

2320:                                             ; preds = %2319
  store i1 false, ptr %242, align 1
  %2321 = getelementptr inbounds %"class.std::initializer_list.94", ptr %229, i32 0, i32 0
  store ptr %230, ptr %2321, align 8, !tbaa !9
  %2322 = getelementptr inbounds %"class.std::initializer_list.94", ptr %229, i32 0, i32 1
  store i64 1, ptr %2322, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %243) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %243) #9
  %2323 = getelementptr inbounds { ptr, i64 }, ptr %229, i32 0, i32 0
  %2324 = load ptr, ptr %2323, align 8
  %2325 = getelementptr inbounds { ptr, i64 }, ptr %229, i32 0, i32 1
  %2326 = load i64, ptr %2325, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %228, ptr %2324, i64 %2326, ptr noundef nonnull align 1 dereferenceable(1) %243)
          to label %2327 unwind label %2508

2327:                                             ; preds = %2320
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %2294, ptr noundef %217, ptr noundef %228)
          to label %2328 unwind label %2512

2328:                                             ; preds = %2327
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %228) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %243) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %243) #9
  %2329 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %230, i32 0, i32 0
  %2330 = getelementptr inbounds %"class.std::shared_ptr", ptr %2329, i64 1
  br label %2331

2331:                                             ; preds = %2331, %2328
  %2332 = phi ptr [ %2330, %2328 ], [ %2333, %2331 ]
  %2333 = getelementptr inbounds %"class.std::shared_ptr", ptr %2332, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2333) #9
  %2334 = icmp eq ptr %2333, %2329
  br i1 %2334, label %2335, label %2331

2335:                                             ; preds = %2331
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %234) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %241) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %241) #9
  %2336 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %236, i32 0, i32 0
  %2337 = getelementptr inbounds %"class.std::shared_ptr", ptr %2336, i64 1
  br label %2338

2338:                                             ; preds = %2338, %2335
  %2339 = phi ptr [ %2337, %2335 ], [ %2340, %2338 ]
  %2340 = getelementptr inbounds %"class.std::shared_ptr", ptr %2339, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2340) #9
  %2341 = icmp eq ptr %2340, %2336
  br i1 %2341, label %2342, label %2338

2342:                                             ; preds = %2338
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %238) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %239) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %239) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %238) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %236) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %233) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %233) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %232) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %230) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %217) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %220) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %227) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %227) #9
  %2343 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %222, i32 0, i32 0
  %2344 = getelementptr inbounds %"class.std::shared_ptr", ptr %2343, i64 1
  br label %2345

2345:                                             ; preds = %2345, %2342
  %2346 = phi ptr [ %2344, %2342 ], [ %2347, %2345 ]
  %2347 = getelementptr inbounds %"class.std::shared_ptr", ptr %2346, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2347) #9
  %2348 = icmp eq ptr %2347, %2343
  br i1 %2348, label %2349, label %2345

2349:                                             ; preds = %2345
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %224) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %225) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %225) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %224) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %222) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %218) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %219) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %219) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %218) #9
  %2350 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %2351 = 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.516, ptr noundef nonnull align 1 dereferenceable(1) %246)
          to label %2352 unwind label %2578

2352:                                             ; preds = %2349
  call void @llvm.lifetime.start.p0(i64 16, ptr %249) #9
  store i1 true, ptr %253, align 1
  store ptr %249, ptr %250, align 8
  %2353 = 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 %251) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %252) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %252) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %251, ptr noundef @.str.517, ptr noundef nonnull align 1 dereferenceable(1) %252)
          to label %2354 unwind label %2582

2354:                                             ; preds = %2352
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %249, ptr noundef nonnull align 8 dereferenceable(33088) %2353, ptr noundef nonnull align 8 dereferenceable(32) %251)
          to label %2355 unwind label %2586

2355:                                             ; preds = %2354
  store i1 false, ptr %253, align 1
  %2356 = getelementptr inbounds %"class.std::initializer_list.94", ptr %248, i32 0, i32 0
  store ptr %249, ptr %2356, align 8, !tbaa !9
  %2357 = getelementptr inbounds %"class.std::initializer_list.94", ptr %248, i32 0, i32 1
  store i64 1, ptr %2357, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %254) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %254) #9
  %2358 = getelementptr inbounds { ptr, i64 }, ptr %248, i32 0, i32 0
  %2359 = load ptr, ptr %2358, align 8
  %2360 = getelementptr inbounds { ptr, i64 }, ptr %248, i32 0, i32 1
  %2361 = load i64, ptr %2360, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %247, ptr %2359, i64 %2361, ptr noundef nonnull align 1 dereferenceable(1) %254)
          to label %2362 unwind label %2590

2362:                                             ; preds = %2355
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %244, ptr noundef nonnull align 8 dereferenceable(33088) %2351, ptr noundef nonnull align 8 dereferenceable(32) %245, ptr noundef %247)
          to label %2363 unwind label %2594

2363:                                             ; preds = %2362
  call void @llvm.memset.p0.i64(ptr align 8 %255, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %255) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %2350, ptr noundef %244, ptr noundef %255)
          to label %2364 unwind label %2598

2364:                                             ; preds = %2363
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %255) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %244) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %247) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %254) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %254) #9
  %2365 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %249, i32 0, i32 0
  %2366 = getelementptr inbounds %"class.std::shared_ptr", ptr %2365, i64 1
  br label %2367

2367:                                             ; preds = %2367, %2364
  %2368 = phi ptr [ %2366, %2364 ], [ %2369, %2367 ]
  %2369 = getelementptr inbounds %"class.std::shared_ptr", ptr %2368, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2369) #9
  %2370 = icmp eq ptr %2369, %2365
  br i1 %2370, label %2371, label %2367

2371:                                             ; preds = %2367
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %251) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %252) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %252) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %251) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %249) #9
  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 @llvm.lifetime.start.p0(i64 16, ptr %256) #9
  %2372 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  %2373 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %2374 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %257) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %259) #9
  store i1 true, ptr %267, align 1
  store ptr %259, ptr %260, align 8
  %2375 = 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 %261) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %262) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %262) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %261, ptr noundef @.str.515, ptr noundef nonnull align 1 dereferenceable(1) %262)
          to label %2376 unwind label %2624

2376:                                             ; preds = %2371
  call void @llvm.lifetime.start.p0(i64 16, ptr %265) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %265, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  %2377 = getelementptr inbounds %"class.std::initializer_list.94", ptr %264, i32 0, i32 0
  store ptr %265, ptr %2377, align 8, !tbaa !9
  %2378 = getelementptr inbounds %"class.std::initializer_list.94", ptr %264, i32 0, i32 1
  store i64 1, ptr %2378, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %266) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %266) #9
  %2379 = getelementptr inbounds { ptr, i64 }, ptr %264, i32 0, i32 0
  %2380 = load ptr, ptr %2379, align 8
  %2381 = getelementptr inbounds { ptr, i64 }, ptr %264, i32 0, i32 1
  %2382 = load i64, ptr %2381, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %263, ptr %2380, i64 %2382, ptr noundef nonnull align 1 dereferenceable(1) %266)
          to label %2383 unwind label %2628

2383:                                             ; preds = %2376
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %259, ptr noundef nonnull align 8 dereferenceable(33088) %2375, ptr noundef nonnull align 8 dereferenceable(32) %261, ptr noundef %263)
          to label %2384 unwind label %2632

2384:                                             ; preds = %2383
  store i1 false, ptr %267, align 1
  %2385 = getelementptr inbounds %"class.std::initializer_list.94", ptr %258, i32 0, i32 0
  store ptr %259, ptr %2385, align 8, !tbaa !9
  %2386 = getelementptr inbounds %"class.std::initializer_list.94", ptr %258, i32 0, i32 1
  store i64 1, ptr %2386, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %268) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %268) #9
  %2387 = getelementptr inbounds { ptr, i64 }, ptr %258, i32 0, i32 0
  %2388 = load ptr, ptr %2387, align 8
  %2389 = getelementptr inbounds { ptr, i64 }, ptr %258, i32 0, i32 1
  %2390 = load i64, ptr %2389, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %257, ptr %2388, i64 %2390, ptr noundef nonnull align 1 dereferenceable(1) %268)
          to label %2391 unwind label %2636

2391:                                             ; preds = %2384
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %256, ptr noundef nonnull align 8 dereferenceable(64) %2372, ptr noundef %2373, ptr noundef %2374, ptr noundef nonnull align 8 dereferenceable(24) %257, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %2392 unwind label %2640

2392:                                             ; preds = %2391
  %2393 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %256) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %256) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %257) #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 %268) #9
  %2394 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %259, i32 0, i32 0
  %2395 = getelementptr inbounds %"class.std::shared_ptr", ptr %2394, i64 1
  br label %2396

2396:                                             ; preds = %2396, %2392
  %2397 = phi ptr [ %2395, %2392 ], [ %2398, %2396 ]
  %2398 = getelementptr inbounds %"class.std::shared_ptr", ptr %2397, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2398) #9
  %2399 = icmp eq ptr %2398, %2394
  br i1 %2399, label %2400, label %2396

2400:                                             ; preds = %2396
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %263) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %266) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %266) #9
  %2401 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %265, i32 0, i32 0
  %2402 = getelementptr inbounds %"class.std::shared_ptr", ptr %2401, i64 1
  br label %2403

2403:                                             ; preds = %2403, %2400
  %2404 = phi ptr [ %2402, %2400 ], [ %2405, %2403 ]
  %2405 = getelementptr inbounds %"class.std::shared_ptr", ptr %2404, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2405) #9
  %2406 = icmp eq ptr %2405, %2401
  br i1 %2406, label %2407, label %2403

2407:                                             ; preds = %2403
  call void @llvm.lifetime.end.p0(i64 16, ptr %265) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %261) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %262) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %262) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %261) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %259) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %257) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %256) #9
  br label %2408

2408:                                             ; preds = %2407
  %2409 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ERKS8_(ptr noundef nonnull align 8 dereferenceable(24) %269, ptr noundef nonnull align 8 dereferenceable(24) %2409)
          to label %2410 unwind label %2672

2410:                                             ; preds = %2408
  call void @llvm.lifetime.start.p0(i64 24, ptr %272) #9
  store i1 true, ptr %282, align 1
  store ptr %272, ptr %273, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %275) #9
  store i1 true, ptr %280, align 1
  store ptr %275, ptr %276, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %277) #9
  %2411 = 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 %278) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %279) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %279) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %278, ptr noundef @.str.517, ptr noundef nonnull align 1 dereferenceable(1) %279)
          to label %2412 unwind label %2676

2412:                                             ; preds = %2410
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %277, ptr noundef nonnull align 8 dereferenceable(33088) %2411, ptr noundef nonnull align 8 dereferenceable(32) %278)
          to label %2413 unwind label %2680

2413:                                             ; preds = %2412
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %275, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %277)
          to label %2414 unwind label %2684

2414:                                             ; preds = %2413
  store i1 false, ptr %280, align 1
  %2415 = getelementptr inbounds %"class.std::initializer_list", ptr %274, i32 0, i32 0
  store ptr %275, ptr %2415, align 8, !tbaa !13
  %2416 = getelementptr inbounds %"class.std::initializer_list", ptr %274, i32 0, i32 1
  store i64 1, ptr %2416, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %281) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %281) #9
  %2417 = getelementptr inbounds { ptr, i64 }, ptr %274, i32 0, i32 0
  %2418 = load ptr, ptr %2417, align 8
  %2419 = getelementptr inbounds { ptr, i64 }, ptr %274, i32 0, i32 1
  %2420 = load i64, ptr %2419, align 8
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %272, ptr %2418, i64 %2420, ptr noundef nonnull align 1 dereferenceable(1) %281)
          to label %2421 unwind label %2688

2421:                                             ; preds = %2414
  store i1 false, ptr %282, align 1
  %2422 = getelementptr inbounds %"class.std::initializer_list.104", ptr %271, i32 0, i32 0
  store ptr %272, ptr %2422, align 8, !tbaa !16
  %2423 = getelementptr inbounds %"class.std::initializer_list.104", ptr %271, i32 0, i32 1
  store i64 1, ptr %2423, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 1, ptr %283) #9
  call void @_ZNSaISt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %283) #9
  %2424 = getelementptr inbounds { ptr, i64 }, ptr %271, i32 0, i32 0
  %2425 = load ptr, ptr %2424, align 8
  %2426 = getelementptr inbounds { ptr, i64 }, ptr %271, i32 0, i32 1
  %2427 = load i64, ptr %2426, align 8
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ESt16initializer_listIS6_ERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %270, ptr %2425, i64 %2427, ptr noundef nonnull align 1 dereferenceable(1) %283)
          to label %2428 unwind label %2692

2428:                                             ; preds = %2421
  %2429 = invoke noundef zeroext i1 @_Z14CheckSolutionsSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EES8_(ptr noundef %269, ptr noundef %270)
          to label %2430 unwind label %2696

2430:                                             ; preds = %2428
  %2431 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %2429)
          to label %2432 unwind label %2696

2432:                                             ; preds = %2430
  %2433 = xor i1 %2431, true
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %270) #9
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %283) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %283) #9
  %2434 = getelementptr inbounds [1 x %"class.std::vector"], ptr %272, i32 0, i32 0
  %2435 = getelementptr inbounds %"class.std::vector", ptr %2434, i64 1
  br label %2436

2436:                                             ; preds = %2436, %2432
  %2437 = phi ptr [ %2435, %2432 ], [ %2438, %2436 ]
  %2438 = getelementptr inbounds %"class.std::vector", ptr %2437, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2438) #9
  %2439 = icmp eq ptr %2438, %2434
  br i1 %2439, label %2440, label %2436

2440:                                             ; preds = %2436
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %281) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %281) #9
  %2441 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %275, i32 0, i32 0
  %2442 = getelementptr inbounds %"struct.std::pair", ptr %2441, i64 1
  br label %2443

2443:                                             ; preds = %2443, %2440
  %2444 = phi ptr [ %2442, %2440 ], [ %2445, %2443 ]
  %2445 = getelementptr inbounds %"struct.std::pair", ptr %2444, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2445) #9
  %2446 = icmp eq ptr %2445, %2441
  br i1 %2446, label %2447, label %2443

2447:                                             ; preds = %2443
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %277) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %278) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %279) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %279) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %278) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %277) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %275) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %272) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %269) #9
  br i1 %2433, label %2448, label %2967

2448:                                             ; preds = %2447
  %2449 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2450 unwind label %2672

2450:                                             ; preds = %2448
  %2451 = load ptr, ptr %2449, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %284) #9
  %2452 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2453 unwind label %2739

2453:                                             ; preds = %2450
  %2454 = load ptr, ptr %2452, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %284, ptr noundef nonnull align 8 dereferenceable(30) %2454, i32 noundef 2394)
          to label %2455 unwind label %2739

2455:                                             ; preds = %2453
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2451, ptr noundef nonnull align 8 dereferenceable(30) %284, ptr noundef @.str.518)
          to label %2456 unwind label %2739

2456:                                             ; preds = %2455
  call void @llvm.lifetime.end.p0(i64 32, ptr %284) #9
  br label %2967

2457:                                             ; preds = %2029, %2019
  br label %2289

2458:                                             ; preds = %2277
  %2459 = landingpad { ptr, i32 }
          cleanup
  %2460 = extractvalue { ptr, i32 } %2459, 0
  store ptr %2460, ptr %4, align 8
  %2461 = extractvalue { ptr, i32 } %2459, 1
  store i32 %2461, ptr %5, align 4
  br label %2466

2462:                                             ; preds = %2286, %2284, %2281
  %2463 = landingpad { ptr, i32 }
          cleanup
  %2464 = extractvalue { ptr, i32 } %2463, 0
  store ptr %2464, ptr %4, align 8
  %2465 = extractvalue { ptr, i32 } %2463, 1
  store i32 %2465, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %216) #9
  br label %2466

2466:                                             ; preds = %2462, %2458
  invoke void @__cxa_end_catch()
          to label %2467 unwind label %6410

2467:                                             ; preds = %2466
  br label %6398

2468:                                             ; preds = %2293
  %2469 = landingpad { ptr, i32 }
          cleanup
  %2470 = extractvalue { ptr, i32 } %2469, 0
  store ptr %2470, ptr %4, align 8
  %2471 = extractvalue { ptr, i32 } %2469, 1
  store i32 %2471, ptr %5, align 4
  br label %2577

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

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

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

2484:                                             ; preds = %2306
  %2485 = landingpad { ptr, i32 }
          cleanup
  %2486 = extractvalue { ptr, i32 } %2485, 0
  store ptr %2486, ptr %4, align 8
  %2487 = extractvalue { ptr, i32 } %2485, 1
  store i32 %2487, ptr %5, align 4
  br label %2556

2488:                                             ; preds = %2307
  %2489 = landingpad { ptr, i32 }
          cleanup
  %2490 = extractvalue { ptr, i32 } %2489, 0
  store ptr %2490, ptr %4, align 8
  %2491 = extractvalue { ptr, i32 } %2489, 1
  store i32 %2491, ptr %5, align 4
  br label %2545

2492:                                             ; preds = %2309
  %2493 = landingpad { ptr, i32 }
          cleanup
  %2494 = extractvalue { ptr, i32 } %2493, 0
  store ptr %2494, ptr %4, align 8
  %2495 = extractvalue { ptr, i32 } %2493, 1
  store i32 %2495, ptr %5, align 4
  br label %2534

2496:                                             ; preds = %2311
  %2497 = landingpad { ptr, i32 }
          cleanup
  %2498 = extractvalue { ptr, i32 } %2497, 0
  store ptr %2498, ptr %4, align 8
  %2499 = extractvalue { ptr, i32 } %2497, 1
  store i32 %2499, ptr %5, align 4
  br label %2533

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

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

2508:                                             ; preds = %2320
  %2509 = landingpad { ptr, i32 }
          cleanup
  %2510 = extractvalue { ptr, i32 } %2509, 0
  store ptr %2510, ptr %4, align 8
  %2511 = extractvalue { ptr, i32 } %2509, 1
  store i32 %2511, ptr %5, align 4
  br label %2516

2512:                                             ; preds = %2327
  %2513 = landingpad { ptr, i32 }
          cleanup
  %2514 = extractvalue { ptr, i32 } %2513, 0
  store ptr %2514, ptr %4, align 8
  %2515 = extractvalue { ptr, i32 } %2513, 1
  store i32 %2515, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %228) #9
  br label %2516

2516:                                             ; preds = %2512, %2508
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %243) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %243) #9
  %2517 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %230, i32 0, i32 0
  %2518 = getelementptr inbounds %"class.std::shared_ptr", ptr %2517, i64 1
  br label %2519

2519:                                             ; preds = %2519, %2516
  %2520 = phi ptr [ %2518, %2516 ], [ %2521, %2519 ]
  %2521 = getelementptr inbounds %"class.std::shared_ptr", ptr %2520, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2521) #9
  %2522 = icmp eq ptr %2521, %2517
  br i1 %2522, label %2523, label %2519

2523:                                             ; preds = %2519
  br label %2524

2524:                                             ; preds = %2523, %2504
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %234) #9
  br label %2525

2525:                                             ; preds = %2524, %2500
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %241) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %241) #9
  %2526 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %236, i32 0, i32 0
  %2527 = getelementptr inbounds %"class.std::shared_ptr", ptr %2526, i64 1
  br label %2528

2528:                                             ; preds = %2528, %2525
  %2529 = phi ptr [ %2527, %2525 ], [ %2530, %2528 ]
  %2530 = getelementptr inbounds %"class.std::shared_ptr", ptr %2529, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2530) #9
  %2531 = icmp eq ptr %2530, %2526
  br i1 %2531, label %2532, label %2528

2532:                                             ; preds = %2528
  br label %2533

2533:                                             ; preds = %2532, %2496
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %238) #9
  br label %2534

2534:                                             ; preds = %2533, %2492
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %239) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %239) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %238) #9
  %2535 = load i1, ptr %240, align 1
  br i1 %2535, label %2536, label %2544

2536:                                             ; preds = %2534
  %2537 = load ptr, ptr %237, align 8
  %2538 = icmp eq ptr %236, %2537
  br i1 %2538, label %2543, label %2539

2539:                                             ; preds = %2539, %2536
  %2540 = phi ptr [ %2537, %2536 ], [ %2541, %2539 ]
  %2541 = getelementptr inbounds %"class.std::shared_ptr", ptr %2540, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2541) #9
  %2542 = icmp eq ptr %2541, %236
  br i1 %2542, label %2543, label %2539

2543:                                             ; preds = %2539, %2536
  br label %2544

2544:                                             ; preds = %2543, %2534
  call void @llvm.lifetime.end.p0(i64 16, ptr %236) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #9
  br label %2545

2545:                                             ; preds = %2544, %2488
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %233) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %233) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %232) #9
  %2546 = load i1, ptr %242, align 1
  br i1 %2546, label %2547, label %2555

2547:                                             ; preds = %2545
  %2548 = load ptr, ptr %231, align 8
  %2549 = icmp eq ptr %230, %2548
  br i1 %2549, label %2554, label %2550

2550:                                             ; preds = %2550, %2547
  %2551 = phi ptr [ %2548, %2547 ], [ %2552, %2550 ]
  %2552 = getelementptr inbounds %"class.std::shared_ptr", ptr %2551, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2552) #9
  %2553 = icmp eq ptr %2552, %230
  br i1 %2553, label %2554, label %2550

2554:                                             ; preds = %2550, %2547
  br label %2555

2555:                                             ; preds = %2554, %2545
  call void @llvm.lifetime.end.p0(i64 16, ptr %230) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %217) #9
  br label %2556

2556:                                             ; preds = %2555, %2484
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %220) #9
  br label %2557

2557:                                             ; preds = %2556, %2480
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %227) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %227) #9
  %2558 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %222, i32 0, i32 0
  %2559 = getelementptr inbounds %"class.std::shared_ptr", ptr %2558, i64 1
  br label %2560

2560:                                             ; preds = %2560, %2557
  %2561 = phi ptr [ %2559, %2557 ], [ %2562, %2560 ]
  %2562 = getelementptr inbounds %"class.std::shared_ptr", ptr %2561, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2562) #9
  %2563 = icmp eq ptr %2562, %2558
  br i1 %2563, label %2564, label %2560

2564:                                             ; preds = %2560
  br label %2565

2565:                                             ; preds = %2564, %2476
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %224) #9
  br label %2566

2566:                                             ; preds = %2565, %2472
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %225) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %225) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %224) #9
  %2567 = load i1, ptr %226, align 1
  br i1 %2567, label %2568, label %2576

2568:                                             ; preds = %2566
  %2569 = load ptr, ptr %223, align 8
  %2570 = icmp eq ptr %222, %2569
  br i1 %2570, label %2575, label %2571

2571:                                             ; preds = %2571, %2568
  %2572 = phi ptr [ %2569, %2568 ], [ %2573, %2571 ]
  %2573 = getelementptr inbounds %"class.std::shared_ptr", ptr %2572, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2573) #9
  %2574 = icmp eq ptr %2573, %222
  br i1 %2574, label %2575, label %2571

2575:                                             ; preds = %2571, %2568
  br label %2576

2576:                                             ; preds = %2575, %2566
  call void @llvm.lifetime.end.p0(i64 16, ptr %222) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %218) #9
  br label %2577

2577:                                             ; preds = %2576, %2468
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %219) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %219) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %218) #9
  br label %6398

2578:                                             ; preds = %2349
  %2579 = landingpad { ptr, i32 }
          cleanup
  %2580 = extractvalue { ptr, i32 } %2579, 0
  store ptr %2580, ptr %4, align 8
  %2581 = extractvalue { ptr, i32 } %2579, 1
  store i32 %2581, ptr %5, align 4
  br label %2623

2582:                                             ; preds = %2352
  %2583 = landingpad { ptr, i32 }
          cleanup
  %2584 = extractvalue { ptr, i32 } %2583, 0
  store ptr %2584, ptr %4, align 8
  %2585 = extractvalue { ptr, i32 } %2583, 1
  store i32 %2585, ptr %5, align 4
  br label %2612

2586:                                             ; preds = %2354
  %2587 = landingpad { ptr, i32 }
          cleanup
  %2588 = extractvalue { ptr, i32 } %2587, 0
  store ptr %2588, ptr %4, align 8
  %2589 = extractvalue { ptr, i32 } %2587, 1
  store i32 %2589, ptr %5, align 4
  br label %2611

2590:                                             ; preds = %2355
  %2591 = landingpad { ptr, i32 }
          cleanup
  %2592 = extractvalue { ptr, i32 } %2591, 0
  store ptr %2592, ptr %4, align 8
  %2593 = extractvalue { ptr, i32 } %2591, 1
  store i32 %2593, ptr %5, align 4
  br label %2603

2594:                                             ; preds = %2362
  %2595 = landingpad { ptr, i32 }
          cleanup
  %2596 = extractvalue { ptr, i32 } %2595, 0
  store ptr %2596, ptr %4, align 8
  %2597 = extractvalue { ptr, i32 } %2595, 1
  store i32 %2597, ptr %5, align 4
  br label %2602

2598:                                             ; preds = %2363
  %2599 = landingpad { ptr, i32 }
          cleanup
  %2600 = extractvalue { ptr, i32 } %2599, 0
  store ptr %2600, ptr %4, align 8
  %2601 = extractvalue { ptr, i32 } %2599, 1
  store i32 %2601, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %255) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %244) #9
  br label %2602

2602:                                             ; preds = %2598, %2594
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %247) #9
  br label %2603

2603:                                             ; preds = %2602, %2590
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %254) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %254) #9
  %2604 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %249, i32 0, i32 0
  %2605 = getelementptr inbounds %"class.std::shared_ptr", ptr %2604, i64 1
  br label %2606

2606:                                             ; preds = %2606, %2603
  %2607 = phi ptr [ %2605, %2603 ], [ %2608, %2606 ]
  %2608 = getelementptr inbounds %"class.std::shared_ptr", ptr %2607, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2608) #9
  %2609 = icmp eq ptr %2608, %2604
  br i1 %2609, label %2610, label %2606

2610:                                             ; preds = %2606
  br label %2611

2611:                                             ; preds = %2610, %2586
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %251) #9
  br label %2612

2612:                                             ; preds = %2611, %2582
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %252) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %252) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %251) #9
  %2613 = load i1, ptr %253, align 1
  br i1 %2613, label %2614, label %2622

2614:                                             ; preds = %2612
  %2615 = load ptr, ptr %250, align 8
  %2616 = icmp eq ptr %249, %2615
  br i1 %2616, label %2621, label %2617

2617:                                             ; preds = %2617, %2614
  %2618 = phi ptr [ %2615, %2614 ], [ %2619, %2617 ]
  %2619 = getelementptr inbounds %"class.std::shared_ptr", ptr %2618, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2619) #9
  %2620 = icmp eq ptr %2619, %249
  br i1 %2620, label %2621, label %2617

2621:                                             ; preds = %2617, %2614
  br label %2622

2622:                                             ; preds = %2621, %2612
  call void @llvm.lifetime.end.p0(i64 16, ptr %249) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %245) #9
  br label %2623

2623:                                             ; preds = %2622, %2578
  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 %6398

2624:                                             ; preds = %2371
  %2625 = landingpad { ptr, i32 }
          cleanup
  %2626 = extractvalue { ptr, i32 } %2625, 0
  store ptr %2626, ptr %4, align 8
  %2627 = extractvalue { ptr, i32 } %2625, 1
  store i32 %2627, ptr %5, align 4
  br label %2661

2628:                                             ; preds = %2376
  %2629 = landingpad { ptr, i32 }
          cleanup
  %2630 = extractvalue { ptr, i32 } %2629, 0
  store ptr %2630, ptr %4, align 8
  %2631 = extractvalue { ptr, i32 } %2629, 1
  store i32 %2631, ptr %5, align 4
  br label %2653

2632:                                             ; preds = %2383
  %2633 = landingpad { ptr, i32 }
          cleanup
  %2634 = extractvalue { ptr, i32 } %2633, 0
  store ptr %2634, ptr %4, align 8
  %2635 = extractvalue { ptr, i32 } %2633, 1
  store i32 %2635, ptr %5, align 4
  br label %2652

2636:                                             ; preds = %2384
  %2637 = landingpad { ptr, i32 }
          cleanup
  %2638 = extractvalue { ptr, i32 } %2637, 0
  store ptr %2638, ptr %4, align 8
  %2639 = extractvalue { ptr, i32 } %2637, 1
  store i32 %2639, ptr %5, align 4
  br label %2644

2640:                                             ; preds = %2391
  %2641 = landingpad { ptr, i32 }
          cleanup
  %2642 = extractvalue { ptr, i32 } %2641, 0
  store ptr %2642, ptr %4, align 8
  %2643 = extractvalue { ptr, i32 } %2641, 1
  store i32 %2643, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %257) #9
  br label %2644

2644:                                             ; preds = %2640, %2636
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %268) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %268) #9
  %2645 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %259, i32 0, i32 0
  %2646 = getelementptr inbounds %"class.std::shared_ptr", ptr %2645, i64 1
  br label %2647

2647:                                             ; preds = %2647, %2644
  %2648 = phi ptr [ %2646, %2644 ], [ %2649, %2647 ]
  %2649 = getelementptr inbounds %"class.std::shared_ptr", ptr %2648, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2649) #9
  %2650 = icmp eq ptr %2649, %2645
  br i1 %2650, label %2651, label %2647

2651:                                             ; preds = %2647
  br label %2652

2652:                                             ; preds = %2651, %2632
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %263) #9
  br label %2653

2653:                                             ; preds = %2652, %2628
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %266) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %266) #9
  %2654 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %265, i32 0, i32 0
  %2655 = getelementptr inbounds %"class.std::shared_ptr", ptr %2654, i64 1
  br label %2656

2656:                                             ; preds = %2656, %2653
  %2657 = phi ptr [ %2655, %2653 ], [ %2658, %2656 ]
  %2658 = getelementptr inbounds %"class.std::shared_ptr", ptr %2657, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2658) #9
  %2659 = icmp eq ptr %2658, %2654
  br i1 %2659, label %2660, label %2656

2660:                                             ; preds = %2656
  call void @llvm.lifetime.end.p0(i64 16, ptr %265) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %261) #9
  br label %2661

2661:                                             ; preds = %2660, %2624
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %262) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %262) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %261) #9
  %2662 = load i1, ptr %267, align 1
  br i1 %2662, label %2663, label %2671

2663:                                             ; preds = %2661
  %2664 = load ptr, ptr %260, align 8
  %2665 = icmp eq ptr %259, %2664
  br i1 %2665, label %2670, label %2666

2666:                                             ; preds = %2666, %2663
  %2667 = phi ptr [ %2664, %2663 ], [ %2668, %2666 ]
  %2668 = getelementptr inbounds %"class.std::shared_ptr", ptr %2667, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2668) #9
  %2669 = icmp eq ptr %2668, %259
  br i1 %2669, label %2670, label %2666

2670:                                             ; preds = %2666, %2663
  br label %2671

2671:                                             ; preds = %2670, %2661
  call void @llvm.lifetime.end.p0(i64 16, ptr %259) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %257) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %256) #9
  br label %6398

2672:                                             ; preds = %2448, %2408
  %2673 = landingpad { ptr, i32 }
          catch ptr null
  %2674 = extractvalue { ptr, i32 } %2673, 0
  store ptr %2674, ptr %4, align 8
  %2675 = extractvalue { ptr, i32 } %2673, 1
  store i32 %2675, ptr %5, align 4
  br label %2743

2676:                                             ; preds = %2410
  %2677 = landingpad { ptr, i32 }
          catch ptr null
  %2678 = extractvalue { ptr, i32 } %2677, 0
  store ptr %2678, ptr %4, align 8
  %2679 = extractvalue { ptr, i32 } %2677, 1
  store i32 %2679, ptr %5, align 4
  br label %2718

2680:                                             ; preds = %2412
  %2681 = landingpad { ptr, i32 }
          catch ptr null
  %2682 = extractvalue { ptr, i32 } %2681, 0
  store ptr %2682, ptr %4, align 8
  %2683 = extractvalue { ptr, i32 } %2681, 1
  store i32 %2683, ptr %5, align 4
  br label %2717

2684:                                             ; preds = %2413
  %2685 = landingpad { ptr, i32 }
          catch ptr null
  %2686 = extractvalue { ptr, i32 } %2685, 0
  store ptr %2686, ptr %4, align 8
  %2687 = extractvalue { ptr, i32 } %2685, 1
  store i32 %2687, ptr %5, align 4
  br label %2716

2688:                                             ; preds = %2414
  %2689 = landingpad { ptr, i32 }
          catch ptr null
  %2690 = extractvalue { ptr, i32 } %2689, 0
  store ptr %2690, ptr %4, align 8
  %2691 = extractvalue { ptr, i32 } %2689, 1
  store i32 %2691, ptr %5, align 4
  br label %2708

2692:                                             ; preds = %2421
  %2693 = landingpad { ptr, i32 }
          catch ptr null
  %2694 = extractvalue { ptr, i32 } %2693, 0
  store ptr %2694, ptr %4, align 8
  %2695 = extractvalue { ptr, i32 } %2693, 1
  store i32 %2695, ptr %5, align 4
  br label %2700

2696:                                             ; preds = %2430, %2428
  %2697 = landingpad { ptr, i32 }
          catch ptr null
  %2698 = extractvalue { ptr, i32 } %2697, 0
  store ptr %2698, ptr %4, align 8
  %2699 = extractvalue { ptr, i32 } %2697, 1
  store i32 %2699, ptr %5, align 4
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %270) #9
  br label %2700

2700:                                             ; preds = %2696, %2692
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %283) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %283) #9
  %2701 = getelementptr inbounds [1 x %"class.std::vector"], ptr %272, i32 0, i32 0
  %2702 = getelementptr inbounds %"class.std::vector", ptr %2701, i64 1
  br label %2703

2703:                                             ; preds = %2703, %2700
  %2704 = phi ptr [ %2702, %2700 ], [ %2705, %2703 ]
  %2705 = getelementptr inbounds %"class.std::vector", ptr %2704, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2705) #9
  %2706 = icmp eq ptr %2705, %2701
  br i1 %2706, label %2707, label %2703

2707:                                             ; preds = %2703
  br label %2708

2708:                                             ; preds = %2707, %2688
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %281) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %281) #9
  %2709 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %275, i32 0, i32 0
  %2710 = getelementptr inbounds %"struct.std::pair", ptr %2709, i64 1
  br label %2711

2711:                                             ; preds = %2711, %2708
  %2712 = phi ptr [ %2710, %2708 ], [ %2713, %2711 ]
  %2713 = getelementptr inbounds %"struct.std::pair", ptr %2712, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2713) #9
  %2714 = icmp eq ptr %2713, %2709
  br i1 %2714, label %2715, label %2711

2715:                                             ; preds = %2711
  br label %2716

2716:                                             ; preds = %2715, %2684
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %277) #9
  br label %2717

2717:                                             ; preds = %2716, %2680
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %278) #9
  br label %2718

2718:                                             ; preds = %2717, %2676
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %279) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %279) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %278) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %277) #9
  %2719 = load i1, ptr %280, align 1
  br i1 %2719, label %2720, label %2728

2720:                                             ; preds = %2718
  %2721 = load ptr, ptr %276, align 8
  %2722 = icmp eq ptr %275, %2721
  br i1 %2722, label %2727, label %2723

2723:                                             ; preds = %2723, %2720
  %2724 = phi ptr [ %2721, %2720 ], [ %2725, %2723 ]
  %2725 = getelementptr inbounds %"struct.std::pair", ptr %2724, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2725) #9
  %2726 = icmp eq ptr %2725, %275
  br i1 %2726, label %2727, label %2723

2727:                                             ; preds = %2723, %2720
  br label %2728

2728:                                             ; preds = %2727, %2718
  call void @llvm.lifetime.end.p0(i64 32, ptr %275) #9
  %2729 = load i1, ptr %282, align 1
  br i1 %2729, label %2730, label %2738

2730:                                             ; preds = %2728
  %2731 = load ptr, ptr %273, align 8
  %2732 = icmp eq ptr %272, %2731
  br i1 %2732, label %2737, label %2733

2733:                                             ; preds = %2733, %2730
  %2734 = phi ptr [ %2731, %2730 ], [ %2735, %2733 ]
  %2735 = getelementptr inbounds %"class.std::vector", ptr %2734, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2735) #9
  %2736 = icmp eq ptr %2735, %272
  br i1 %2736, label %2737, label %2733

2737:                                             ; preds = %2733, %2730
  br label %2738

2738:                                             ; preds = %2737, %2728
  call void @llvm.lifetime.end.p0(i64 24, ptr %272) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %269) #9
  br label %2743

2739:                                             ; preds = %2455, %2453, %2450
  %2740 = landingpad { ptr, i32 }
          catch ptr null
  %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
  call void @llvm.lifetime.end.p0(i64 32, ptr %284) #9
  br label %2743

2743:                                             ; preds = %2739, %2738, %2672
  %2744 = load ptr, ptr %4, align 8
  %2745 = call ptr @__cxa_begin_catch(ptr %2744) #9
  %2746 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2747 unwind label %2968

2747:                                             ; preds = %2743
  %2748 = load ptr, ptr %2746, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %285) #9
  %2749 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2750 unwind label %2972

2750:                                             ; preds = %2747
  %2751 = load ptr, ptr %2749, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %285, ptr noundef nonnull align 8 dereferenceable(30) %2751, i32 noundef 2394)
          to label %2752 unwind label %2972

2752:                                             ; preds = %2750
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2748, ptr noundef nonnull align 8 dereferenceable(30) %285, ptr noundef @.str.519)
          to label %2753 unwind label %2972

2753:                                             ; preds = %2752
  call void @llvm.lifetime.end.p0(i64 32, ptr %285) #9
  invoke void @__cxa_end_catch()
          to label %2754 unwind label %1142

2754:                                             ; preds = %2753
  br label %2755

2755:                                             ; preds = %2967, %2754
  br label %2756

2756:                                             ; preds = %2755
  br label %2757

2757:                                             ; preds = %2756
  %2758 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %2758)
          to label %2759 unwind label %1142

2759:                                             ; preds = %2757
  %2760 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %2761 = 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 %287) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %288) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %288) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %287, ptr noundef @.str.520, ptr noundef nonnull align 1 dereferenceable(1) %288)
          to label %2762 unwind label %2978

2762:                                             ; preds = %2759
  call void @llvm.lifetime.start.p0(i64 32, ptr %291) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %291, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  %2763 = getelementptr inbounds %"class.std::shared_ptr", ptr %291, i64 1
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %2763, ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  %2764 = getelementptr inbounds %"class.std::initializer_list.94", ptr %290, i32 0, i32 0
  store ptr %291, ptr %2764, align 8, !tbaa !9
  %2765 = getelementptr inbounds %"class.std::initializer_list.94", ptr %290, i32 0, i32 1
  store i64 2, ptr %2765, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %292) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %292) #9
  %2766 = getelementptr inbounds { ptr, i64 }, ptr %290, i32 0, i32 0
  %2767 = load ptr, ptr %2766, align 8
  %2768 = getelementptr inbounds { ptr, i64 }, ptr %290, i32 0, i32 1
  %2769 = load i64, ptr %2768, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %289, ptr %2767, i64 %2769, ptr noundef nonnull align 1 dereferenceable(1) %292)
          to label %2770 unwind label %2982

2770:                                             ; preds = %2762
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %286, ptr noundef nonnull align 8 dereferenceable(33088) %2761, ptr noundef nonnull align 8 dereferenceable(32) %287, ptr noundef %289)
          to label %2771 unwind label %2986

2771:                                             ; preds = %2770
  call void @llvm.lifetime.start.p0(i64 16, ptr %295) #9
  store i1 true, ptr %303, align 1
  store ptr %295, ptr %296, align 8
  %2772 = 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 %297) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %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 @.str.521, ptr noundef nonnull align 1 dereferenceable(1) %298)
          to label %2773 unwind label %2990

2773:                                             ; preds = %2771
  call void @llvm.lifetime.start.p0(i64 16, ptr %301) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %301, ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  %2774 = getelementptr inbounds %"class.std::initializer_list.94", ptr %300, i32 0, i32 0
  store ptr %301, ptr %2774, align 8, !tbaa !9
  %2775 = getelementptr inbounds %"class.std::initializer_list.94", ptr %300, i32 0, i32 1
  store i64 1, ptr %2775, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %302) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %302) #9
  %2776 = getelementptr inbounds { ptr, i64 }, ptr %300, i32 0, i32 0
  %2777 = load ptr, ptr %2776, align 8
  %2778 = getelementptr inbounds { ptr, i64 }, ptr %300, i32 0, i32 1
  %2779 = load i64, ptr %2778, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %299, ptr %2777, i64 %2779, ptr noundef nonnull align 1 dereferenceable(1) %302)
          to label %2780 unwind label %2994

2780:                                             ; preds = %2773
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %295, ptr noundef nonnull align 8 dereferenceable(33088) %2772, ptr noundef nonnull align 8 dereferenceable(32) %297, ptr noundef %299)
          to label %2781 unwind label %2998

2781:                                             ; preds = %2780
  store i1 false, ptr %303, align 1
  %2782 = getelementptr inbounds %"class.std::initializer_list.94", ptr %294, i32 0, i32 0
  store ptr %295, ptr %2782, align 8, !tbaa !9
  %2783 = getelementptr inbounds %"class.std::initializer_list.94", ptr %294, i32 0, i32 1
  store i64 1, ptr %2783, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %304) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %304) #9
  %2784 = getelementptr inbounds { ptr, i64 }, ptr %294, i32 0, i32 0
  %2785 = load ptr, ptr %2784, align 8
  %2786 = getelementptr inbounds { ptr, i64 }, ptr %294, i32 0, i32 1
  %2787 = load i64, ptr %2786, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %293, ptr %2785, i64 %2787, ptr noundef nonnull align 1 dereferenceable(1) %304)
          to label %2788 unwind label %3002

2788:                                             ; preds = %2781
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %2760, ptr noundef %286, ptr noundef %293)
          to label %2789 unwind label %3006

2789:                                             ; preds = %2788
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %293) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %304) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %304) #9
  %2790 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %295, i32 0, i32 0
  %2791 = getelementptr inbounds %"class.std::shared_ptr", ptr %2790, i64 1
  br label %2792

2792:                                             ; preds = %2792, %2789
  %2793 = phi ptr [ %2791, %2789 ], [ %2794, %2792 ]
  %2794 = getelementptr inbounds %"class.std::shared_ptr", ptr %2793, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2794) #9
  %2795 = icmp eq ptr %2794, %2790
  br i1 %2795, label %2796, label %2792

2796:                                             ; preds = %2792
  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) %302) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %302) #9
  %2797 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %301, i32 0, i32 0
  %2798 = getelementptr inbounds %"class.std::shared_ptr", ptr %2797, i64 1
  br label %2799

2799:                                             ; preds = %2799, %2796
  %2800 = phi ptr [ %2798, %2796 ], [ %2801, %2799 ]
  %2801 = getelementptr inbounds %"class.std::shared_ptr", ptr %2800, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2801) #9
  %2802 = icmp eq ptr %2801, %2797
  br i1 %2802, label %2803, label %2799

2803:                                             ; preds = %2799
  call void @llvm.lifetime.end.p0(i64 16, ptr %301) #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 %298) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %297) #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) %286) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %289) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %292) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %292) #9
  %2804 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %291, i32 0, i32 0
  %2805 = getelementptr inbounds %"class.std::shared_ptr", ptr %2804, i64 2
  br label %2806

2806:                                             ; preds = %2806, %2803
  %2807 = phi ptr [ %2805, %2803 ], [ %2808, %2806 ]
  %2808 = getelementptr inbounds %"class.std::shared_ptr", ptr %2807, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2808) #9
  %2809 = icmp eq ptr %2808, %2804
  br i1 %2809, label %2810, label %2806

2810:                                             ; preds = %2806
  call void @llvm.lifetime.end.p0(i64 32, ptr %291) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %287) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %288) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %288) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %287) #9
  %2811 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %2812 = 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.520, ptr noundef nonnull align 1 dereferenceable(1) %307)
          to label %2813 unwind label %3048

2813:                                             ; preds = %2810
  call void @llvm.lifetime.start.p0(i64 32, ptr %310) #9
  store i1 true, ptr %316, align 1
  store ptr %310, ptr %311, align 8
  %2814 = 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.77, ptr noundef nonnull align 1 dereferenceable(1) %313)
          to label %2815 unwind label %3052

2815:                                             ; preds = %2813
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %310, ptr noundef nonnull align 8 dereferenceable(33088) %2814, ptr noundef nonnull align 8 dereferenceable(32) %312)
          to label %2816 unwind label %3056

2816:                                             ; preds = %2815
  %2817 = getelementptr inbounds %"class.std::shared_ptr", ptr %310, i64 1
  store ptr %2817, ptr %311, align 8
  %2818 = 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 %314) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %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 @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %315)
          to label %2819 unwind label %3060

2819:                                             ; preds = %2816
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %2817, ptr noundef nonnull align 8 dereferenceable(33088) %2818, ptr noundef nonnull align 8 dereferenceable(32) %314)
          to label %2820 unwind label %3064

2820:                                             ; preds = %2819
  store i1 false, ptr %316, align 1
  %2821 = getelementptr inbounds %"class.std::initializer_list.94", ptr %309, i32 0, i32 0
  store ptr %310, ptr %2821, align 8, !tbaa !9
  %2822 = getelementptr inbounds %"class.std::initializer_list.94", ptr %309, i32 0, i32 1
  store i64 2, ptr %2822, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %317) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %317) #9
  %2823 = getelementptr inbounds { ptr, i64 }, ptr %309, i32 0, i32 0
  %2824 = load ptr, ptr %2823, align 8
  %2825 = getelementptr inbounds { ptr, i64 }, ptr %309, i32 0, i32 1
  %2826 = load i64, ptr %2825, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %308, ptr %2824, i64 %2826, ptr noundef nonnull align 1 dereferenceable(1) %317)
          to label %2827 unwind label %3068

2827:                                             ; preds = %2820
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %305, ptr noundef nonnull align 8 dereferenceable(33088) %2812, ptr noundef nonnull align 8 dereferenceable(32) %306, ptr noundef %308)
          to label %2828 unwind label %3072

2828:                                             ; preds = %2827
  call void @llvm.memset.p0.i64(ptr align 8 %318, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %318) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %2811, ptr noundef %305, ptr noundef %318)
          to label %2829 unwind label %3076

2829:                                             ; preds = %2828
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %318) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %305) #9
  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) %317) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %317) #9
  %2830 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %310, i32 0, i32 0
  %2831 = getelementptr inbounds %"class.std::shared_ptr", ptr %2830, i64 2
  br label %2832

2832:                                             ; preds = %2832, %2829
  %2833 = phi ptr [ %2831, %2829 ], [ %2834, %2832 ]
  %2834 = getelementptr inbounds %"class.std::shared_ptr", ptr %2833, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2834) #9
  %2835 = icmp eq ptr %2834, %2830
  br i1 %2835, label %2836, label %2832

2836:                                             ; preds = %2832
  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 %315) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %314) #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
  %2837 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %2838 = 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 %320) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %321) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %321) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %320, ptr noundef @.str.521, ptr noundef nonnull align 1 dereferenceable(1) %321)
          to label %2839 unwind label %3104

2839:                                             ; preds = %2836
  call void @llvm.lifetime.start.p0(i64 16, ptr %324) #9
  store i1 true, ptr %328, align 1
  store ptr %324, ptr %325, align 8
  %2840 = 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 %326) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %327) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %327) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %326, ptr noundef @.str.522, ptr noundef nonnull align 1 dereferenceable(1) %327)
          to label %2841 unwind label %3108

2841:                                             ; preds = %2839
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %324, ptr noundef nonnull align 8 dereferenceable(33088) %2840, ptr noundef nonnull align 8 dereferenceable(32) %326)
          to label %2842 unwind label %3112

2842:                                             ; preds = %2841
  store i1 false, ptr %328, align 1
  %2843 = getelementptr inbounds %"class.std::initializer_list.94", ptr %323, i32 0, i32 0
  store ptr %324, ptr %2843, align 8, !tbaa !9
  %2844 = getelementptr inbounds %"class.std::initializer_list.94", ptr %323, i32 0, i32 1
  store i64 1, ptr %2844, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %329) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %329) #9
  %2845 = getelementptr inbounds { ptr, i64 }, ptr %323, i32 0, i32 0
  %2846 = load ptr, ptr %2845, align 8
  %2847 = getelementptr inbounds { ptr, i64 }, ptr %323, i32 0, i32 1
  %2848 = load i64, ptr %2847, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %322, ptr %2846, i64 %2848, ptr noundef nonnull align 1 dereferenceable(1) %329)
          to label %2849 unwind label %3116

2849:                                             ; preds = %2842
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %319, ptr noundef nonnull align 8 dereferenceable(33088) %2838, ptr noundef nonnull align 8 dereferenceable(32) %320, ptr noundef %322)
          to label %2850 unwind label %3120

2850:                                             ; preds = %2849
  call void @llvm.memset.p0.i64(ptr align 8 %330, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %330) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %2837, ptr noundef %319, ptr noundef %330)
          to label %2851 unwind label %3124

2851:                                             ; preds = %2850
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %330) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %319) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %322) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %329) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %329) #9
  %2852 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %324, i32 0, i32 0
  %2853 = getelementptr inbounds %"class.std::shared_ptr", ptr %2852, i64 1
  br label %2854

2854:                                             ; preds = %2854, %2851
  %2855 = phi ptr [ %2853, %2851 ], [ %2856, %2854 ]
  %2856 = getelementptr inbounds %"class.std::shared_ptr", ptr %2855, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2856) #9
  %2857 = icmp eq ptr %2856, %2852
  br i1 %2857, label %2858, label %2854

2858:                                             ; preds = %2854
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %326) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %327) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %327) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %326) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %324) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %320) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %321) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %321) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %320) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %331) #9
  %2859 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  %2860 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %2861 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %332) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %334) #9
  store i1 true, ptr %346, align 1
  store ptr %334, ptr %335, align 8
  %2862 = 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 %336) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %337) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %337) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %336, ptr noundef @.str.520, ptr noundef nonnull align 1 dereferenceable(1) %337)
          to label %2863 unwind label %3150

2863:                                             ; preds = %2858
  call void @llvm.lifetime.start.p0(i64 32, ptr %340) #9
  store i1 true, ptr %344, align 1
  store ptr %340, ptr %341, align 8
  %2864 = 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 %342) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %343) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %343) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %342, ptr noundef @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %343)
          to label %2865 unwind label %3154

2865:                                             ; preds = %2863
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %340, ptr noundef nonnull align 8 dereferenceable(33088) %2864, ptr noundef nonnull align 8 dereferenceable(32) %342)
          to label %2866 unwind label %3158

2866:                                             ; preds = %2865
  %2867 = getelementptr inbounds %"class.std::shared_ptr", ptr %340, i64 1
  store ptr %2867, ptr %341, align 8
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %2867, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  store i1 false, ptr %344, align 1
  %2868 = getelementptr inbounds %"class.std::initializer_list.94", ptr %339, i32 0, i32 0
  store ptr %340, ptr %2868, align 8, !tbaa !9
  %2869 = getelementptr inbounds %"class.std::initializer_list.94", ptr %339, i32 0, i32 1
  store i64 2, ptr %2869, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %345) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %345) #9
  %2870 = getelementptr inbounds { ptr, i64 }, ptr %339, i32 0, i32 0
  %2871 = load ptr, ptr %2870, align 8
  %2872 = getelementptr inbounds { ptr, i64 }, ptr %339, i32 0, i32 1
  %2873 = load i64, ptr %2872, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %338, ptr %2871, i64 %2873, ptr noundef nonnull align 1 dereferenceable(1) %345)
          to label %2874 unwind label %3162

2874:                                             ; preds = %2866
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %334, ptr noundef nonnull align 8 dereferenceable(33088) %2862, ptr noundef nonnull align 8 dereferenceable(32) %336, ptr noundef %338)
          to label %2875 unwind label %3166

2875:                                             ; preds = %2874
  store i1 false, ptr %346, align 1
  %2876 = getelementptr inbounds %"class.std::initializer_list.94", ptr %333, i32 0, i32 0
  store ptr %334, ptr %2876, align 8, !tbaa !9
  %2877 = getelementptr inbounds %"class.std::initializer_list.94", ptr %333, i32 0, i32 1
  store i64 1, ptr %2877, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %347) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %347) #9
  %2878 = getelementptr inbounds { ptr, i64 }, ptr %333, i32 0, i32 0
  %2879 = load ptr, ptr %2878, align 8
  %2880 = getelementptr inbounds { ptr, i64 }, ptr %333, i32 0, i32 1
  %2881 = load i64, ptr %2880, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %332, ptr %2879, i64 %2881, ptr noundef nonnull align 1 dereferenceable(1) %347)
          to label %2882 unwind label %3170

2882:                                             ; preds = %2875
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %331, ptr noundef nonnull align 8 dereferenceable(64) %2859, ptr noundef %2860, ptr noundef %2861, ptr noundef nonnull align 8 dereferenceable(24) %332, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %2883 unwind label %3174

2883:                                             ; preds = %2882
  %2884 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %331) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %331) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %332) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %347) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %347) #9
  %2885 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %334, i32 0, i32 0
  %2886 = getelementptr inbounds %"class.std::shared_ptr", ptr %2885, i64 1
  br label %2887

2887:                                             ; preds = %2887, %2883
  %2888 = phi ptr [ %2886, %2883 ], [ %2889, %2887 ]
  %2889 = getelementptr inbounds %"class.std::shared_ptr", ptr %2888, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2889) #9
  %2890 = icmp eq ptr %2889, %2885
  br i1 %2890, label %2891, label %2887

2891:                                             ; preds = %2887
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %338) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %345) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %345) #9
  %2892 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %340, i32 0, i32 0
  %2893 = getelementptr inbounds %"class.std::shared_ptr", ptr %2892, i64 2
  br label %2894

2894:                                             ; preds = %2894, %2891
  %2895 = phi ptr [ %2893, %2891 ], [ %2896, %2894 ]
  %2896 = getelementptr inbounds %"class.std::shared_ptr", ptr %2895, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2896) #9
  %2897 = icmp eq ptr %2896, %2892
  br i1 %2897, label %2898, label %2894

2898:                                             ; preds = %2894
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %342) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %343) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %343) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %342) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %340) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %336) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %337) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %337) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %336) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %334) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %332) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %331) #9
  br label %2899

2899:                                             ; preds = %2898
  %2900 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ERKS8_(ptr noundef nonnull align 8 dereferenceable(24) %348, ptr noundef nonnull align 8 dereferenceable(24) %2900)
          to label %2901 unwind label %3218

2901:                                             ; preds = %2899
  call void @llvm.lifetime.start.p0(i64 48, ptr %351) #9
  store i1 true, ptr %369, align 1
  store ptr %351, ptr %352, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %354) #9
  store i1 true, ptr %359, align 1
  store ptr %354, ptr %355, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %356) #9
  %2902 = 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.80, ptr noundef nonnull align 1 dereferenceable(1) %358)
          to label %2903 unwind label %3222

2903:                                             ; preds = %2901
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %356, ptr noundef nonnull align 8 dereferenceable(33088) %2902, ptr noundef nonnull align 8 dereferenceable(32) %357)
          to label %2904 unwind label %3226

2904:                                             ; preds = %2903
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %354, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %356)
          to label %2905 unwind label %3230

2905:                                             ; preds = %2904
  store i1 false, ptr %359, align 1
  %2906 = getelementptr inbounds %"class.std::initializer_list", ptr %353, i32 0, i32 0
  store ptr %354, ptr %2906, align 8, !tbaa !13
  %2907 = getelementptr inbounds %"class.std::initializer_list", ptr %353, i32 0, i32 1
  store i64 1, ptr %2907, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %360) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %360) #9
  %2908 = getelementptr inbounds { ptr, i64 }, ptr %353, i32 0, i32 0
  %2909 = load ptr, ptr %2908, align 8
  %2910 = getelementptr inbounds { ptr, i64 }, ptr %353, i32 0, i32 1
  %2911 = load i64, ptr %2910, align 8
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %351, ptr %2909, i64 %2911, ptr noundef nonnull align 1 dereferenceable(1) %360)
          to label %2912 unwind label %3234

2912:                                             ; preds = %2905
  %2913 = getelementptr inbounds %"class.std::vector", ptr %351, i64 1
  store ptr %2913, ptr %352, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %362) #9
  store i1 true, ptr %367, align 1
  store ptr %362, ptr %363, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %364) #9
  %2914 = 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 %365) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %366) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %366) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %365, ptr noundef @.str.522, ptr noundef nonnull align 1 dereferenceable(1) %366)
          to label %2915 unwind label %3238

2915:                                             ; preds = %2912
  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) %2914, ptr noundef nonnull align 8 dereferenceable(32) %365)
          to label %2916 unwind label %3242

2916:                                             ; preds = %2915
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %362, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %364)
          to label %2917 unwind label %3246

2917:                                             ; preds = %2916
  store i1 false, ptr %367, align 1
  %2918 = getelementptr inbounds %"class.std::initializer_list", ptr %361, i32 0, i32 0
  store ptr %362, ptr %2918, align 8, !tbaa !13
  %2919 = getelementptr inbounds %"class.std::initializer_list", ptr %361, i32 0, i32 1
  store i64 1, ptr %2919, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %368) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %368) #9
  %2920 = getelementptr inbounds { ptr, i64 }, ptr %361, i32 0, i32 0
  %2921 = load ptr, ptr %2920, align 8
  %2922 = getelementptr inbounds { ptr, i64 }, ptr %361, i32 0, i32 1
  %2923 = load i64, ptr %2922, align 8
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %2913, ptr %2921, i64 %2923, ptr noundef nonnull align 1 dereferenceable(1) %368)
          to label %2924 unwind label %3250

2924:                                             ; preds = %2917
  store i1 false, ptr %369, align 1
  %2925 = getelementptr inbounds %"class.std::initializer_list.104", ptr %350, i32 0, i32 0
  store ptr %351, ptr %2925, align 8, !tbaa !16
  %2926 = getelementptr inbounds %"class.std::initializer_list.104", ptr %350, i32 0, i32 1
  store i64 2, ptr %2926, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 1, ptr %370) #9
  call void @_ZNSaISt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %370) #9
  %2927 = getelementptr inbounds { ptr, i64 }, ptr %350, i32 0, i32 0
  %2928 = load ptr, ptr %2927, align 8
  %2929 = getelementptr inbounds { ptr, i64 }, ptr %350, i32 0, i32 1
  %2930 = load i64, ptr %2929, align 8
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ESt16initializer_listIS6_ERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %349, ptr %2928, i64 %2930, ptr noundef nonnull align 1 dereferenceable(1) %370)
          to label %2931 unwind label %3254

2931:                                             ; preds = %2924
  %2932 = invoke noundef zeroext i1 @_Z14CheckSolutionsSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EES8_(ptr noundef %348, ptr noundef %349)
          to label %2933 unwind label %3258

2933:                                             ; preds = %2931
  %2934 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %2932)
          to label %2935 unwind label %3258

2935:                                             ; preds = %2933
  %2936 = xor i1 %2934, true
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %349) #9
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %370) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %370) #9
  %2937 = getelementptr inbounds [2 x %"class.std::vector"], ptr %351, i32 0, i32 0
  %2938 = getelementptr inbounds %"class.std::vector", ptr %2937, i64 2
  br label %2939

2939:                                             ; preds = %2939, %2935
  %2940 = phi ptr [ %2938, %2935 ], [ %2941, %2939 ]
  %2941 = getelementptr inbounds %"class.std::vector", ptr %2940, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2941) #9
  %2942 = icmp eq ptr %2941, %2937
  br i1 %2942, label %2943, label %2939

2943:                                             ; preds = %2939
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %368) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %368) #9
  %2944 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %362, i32 0, i32 0
  %2945 = getelementptr inbounds %"struct.std::pair", ptr %2944, i64 1
  br label %2946

2946:                                             ; preds = %2946, %2943
  %2947 = phi ptr [ %2945, %2943 ], [ %2948, %2946 ]
  %2948 = getelementptr inbounds %"struct.std::pair", ptr %2947, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2948) #9
  %2949 = icmp eq ptr %2948, %2944
  br i1 %2949, label %2950, label %2946

2950:                                             ; preds = %2946
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %364) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %365) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %366) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %366) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %365) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %364) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %362) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %360) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %360) #9
  %2951 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %354, i32 0, i32 0
  %2952 = getelementptr inbounds %"struct.std::pair", ptr %2951, i64 1
  br label %2953

2953:                                             ; preds = %2953, %2950
  %2954 = phi ptr [ %2952, %2950 ], [ %2955, %2953 ]
  %2955 = getelementptr inbounds %"struct.std::pair", ptr %2954, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2955) #9
  %2956 = icmp eq ptr %2955, %2951
  br i1 %2956, label %2957, label %2953

2957:                                             ; preds = %2953
  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 @llvm.lifetime.end.p0(i64 32, ptr %354) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %351) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %348) #9
  br i1 %2936, label %2958, label %3555

2958:                                             ; preds = %2957
  %2959 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2960 unwind label %3218

2960:                                             ; preds = %2958
  %2961 = load ptr, ptr %2959, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %371) #9
  %2962 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2963 unwind label %3322

2963:                                             ; preds = %2960
  %2964 = load ptr, ptr %2962, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %371, ptr noundef nonnull align 8 dereferenceable(30) %2964, i32 noundef 2410)
          to label %2965 unwind label %3322

2965:                                             ; preds = %2963
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2961, ptr noundef nonnull align 8 dereferenceable(30) %371, ptr noundef @.str.523)
          to label %2966 unwind label %3322

2966:                                             ; preds = %2965
  call void @llvm.lifetime.end.p0(i64 32, ptr %371) #9
  br label %3555

2967:                                             ; preds = %2456, %2447
  br label %2755

2968:                                             ; preds = %2743
  %2969 = landingpad { ptr, i32 }
          cleanup
  %2970 = extractvalue { ptr, i32 } %2969, 0
  store ptr %2970, ptr %4, align 8
  %2971 = extractvalue { ptr, i32 } %2969, 1
  store i32 %2971, ptr %5, align 4
  br label %2976

2972:                                             ; preds = %2752, %2750, %2747
  %2973 = landingpad { ptr, i32 }
          cleanup
  %2974 = extractvalue { ptr, i32 } %2973, 0
  store ptr %2974, ptr %4, align 8
  %2975 = extractvalue { ptr, i32 } %2973, 1
  store i32 %2975, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %285) #9
  br label %2976

2976:                                             ; preds = %2972, %2968
  invoke void @__cxa_end_catch()
          to label %2977 unwind label %6410

2977:                                             ; preds = %2976
  br label %6398

2978:                                             ; preds = %2759
  %2979 = landingpad { ptr, i32 }
          cleanup
  %2980 = extractvalue { ptr, i32 } %2979, 0
  store ptr %2980, ptr %4, align 8
  %2981 = extractvalue { ptr, i32 } %2979, 1
  store i32 %2981, ptr %5, align 4
  br label %3047

2982:                                             ; preds = %2762
  %2983 = landingpad { ptr, i32 }
          cleanup
  %2984 = extractvalue { ptr, i32 } %2983, 0
  store ptr %2984, ptr %4, align 8
  %2985 = extractvalue { ptr, i32 } %2983, 1
  store i32 %2985, ptr %5, align 4
  br label %3039

2986:                                             ; preds = %2770
  %2987 = landingpad { ptr, i32 }
          cleanup
  %2988 = extractvalue { ptr, i32 } %2987, 0
  store ptr %2988, ptr %4, align 8
  %2989 = extractvalue { ptr, i32 } %2987, 1
  store i32 %2989, ptr %5, align 4
  br label %3038

2990:                                             ; preds = %2771
  %2991 = landingpad { ptr, i32 }
          cleanup
  %2992 = extractvalue { ptr, i32 } %2991, 0
  store ptr %2992, ptr %4, align 8
  %2993 = extractvalue { ptr, i32 } %2991, 1
  store i32 %2993, ptr %5, align 4
  br label %3027

2994:                                             ; preds = %2773
  %2995 = landingpad { ptr, i32 }
          cleanup
  %2996 = extractvalue { ptr, i32 } %2995, 0
  store ptr %2996, ptr %4, align 8
  %2997 = extractvalue { ptr, i32 } %2995, 1
  store i32 %2997, ptr %5, align 4
  br label %3019

2998:                                             ; preds = %2780
  %2999 = landingpad { ptr, i32 }
          cleanup
  %3000 = extractvalue { ptr, i32 } %2999, 0
  store ptr %3000, ptr %4, align 8
  %3001 = extractvalue { ptr, i32 } %2999, 1
  store i32 %3001, ptr %5, align 4
  br label %3018

3002:                                             ; preds = %2781
  %3003 = landingpad { ptr, i32 }
          cleanup
  %3004 = extractvalue { ptr, i32 } %3003, 0
  store ptr %3004, ptr %4, align 8
  %3005 = extractvalue { ptr, i32 } %3003, 1
  store i32 %3005, ptr %5, align 4
  br label %3010

3006:                                             ; preds = %2788
  %3007 = landingpad { ptr, i32 }
          cleanup
  %3008 = extractvalue { ptr, i32 } %3007, 0
  store ptr %3008, ptr %4, align 8
  %3009 = extractvalue { ptr, i32 } %3007, 1
  store i32 %3009, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %293) #9
  br label %3010

3010:                                             ; preds = %3006, %3002
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %304) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %304) #9
  %3011 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %295, i32 0, i32 0
  %3012 = getelementptr inbounds %"class.std::shared_ptr", ptr %3011, i64 1
  br label %3013

3013:                                             ; preds = %3013, %3010
  %3014 = phi ptr [ %3012, %3010 ], [ %3015, %3013 ]
  %3015 = getelementptr inbounds %"class.std::shared_ptr", ptr %3014, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3015) #9
  %3016 = icmp eq ptr %3015, %3011
  br i1 %3016, label %3017, label %3013

3017:                                             ; preds = %3013
  br label %3018

3018:                                             ; preds = %3017, %2998
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %299) #9
  br label %3019

3019:                                             ; preds = %3018, %2994
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %302) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %302) #9
  %3020 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %301, i32 0, i32 0
  %3021 = getelementptr inbounds %"class.std::shared_ptr", ptr %3020, i64 1
  br label %3022

3022:                                             ; preds = %3022, %3019
  %3023 = phi ptr [ %3021, %3019 ], [ %3024, %3022 ]
  %3024 = getelementptr inbounds %"class.std::shared_ptr", ptr %3023, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3024) #9
  %3025 = icmp eq ptr %3024, %3020
  br i1 %3025, label %3026, label %3022

3026:                                             ; preds = %3022
  call void @llvm.lifetime.end.p0(i64 16, ptr %301) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %297) #9
  br label %3027

3027:                                             ; preds = %3026, %2990
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %298) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %298) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %297) #9
  %3028 = load i1, ptr %303, align 1
  br i1 %3028, label %3029, label %3037

3029:                                             ; preds = %3027
  %3030 = load ptr, ptr %296, align 8
  %3031 = icmp eq ptr %295, %3030
  br i1 %3031, label %3036, label %3032

3032:                                             ; preds = %3032, %3029
  %3033 = phi ptr [ %3030, %3029 ], [ %3034, %3032 ]
  %3034 = getelementptr inbounds %"class.std::shared_ptr", ptr %3033, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3034) #9
  %3035 = icmp eq ptr %3034, %295
  br i1 %3035, label %3036, label %3032

3036:                                             ; preds = %3032, %3029
  br label %3037

3037:                                             ; preds = %3036, %3027
  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) %286) #9
  br label %3038

3038:                                             ; preds = %3037, %2986
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %289) #9
  br label %3039

3039:                                             ; preds = %3038, %2982
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %292) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %292) #9
  %3040 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %291, i32 0, i32 0
  %3041 = getelementptr inbounds %"class.std::shared_ptr", ptr %3040, i64 2
  br label %3042

3042:                                             ; preds = %3042, %3039
  %3043 = phi ptr [ %3041, %3039 ], [ %3044, %3042 ]
  %3044 = getelementptr inbounds %"class.std::shared_ptr", ptr %3043, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3044) #9
  %3045 = icmp eq ptr %3044, %3040
  br i1 %3045, label %3046, label %3042

3046:                                             ; preds = %3042
  call void @llvm.lifetime.end.p0(i64 32, ptr %291) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %287) #9
  br label %3047

3047:                                             ; preds = %3046, %2978
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %288) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %288) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %287) #9
  br label %6398

3048:                                             ; preds = %2810
  %3049 = landingpad { ptr, i32 }
          cleanup
  %3050 = extractvalue { ptr, i32 } %3049, 0
  store ptr %3050, ptr %4, align 8
  %3051 = extractvalue { ptr, i32 } %3049, 1
  store i32 %3051, ptr %5, align 4
  br label %3103

3052:                                             ; preds = %2813
  %3053 = landingpad { ptr, i32 }
          cleanup
  %3054 = extractvalue { ptr, i32 } %3053, 0
  store ptr %3054, ptr %4, align 8
  %3055 = extractvalue { ptr, i32 } %3053, 1
  store i32 %3055, ptr %5, align 4
  br label %3092

3056:                                             ; preds = %2815
  %3057 = landingpad { ptr, i32 }
          cleanup
  %3058 = extractvalue { ptr, i32 } %3057, 0
  store ptr %3058, ptr %4, align 8
  %3059 = extractvalue { ptr, i32 } %3057, 1
  store i32 %3059, ptr %5, align 4
  br label %3091

3060:                                             ; preds = %2816
  %3061 = landingpad { ptr, i32 }
          cleanup
  %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
  br label %3090

3064:                                             ; preds = %2819
  %3065 = landingpad { ptr, i32 }
          cleanup
  %3066 = extractvalue { ptr, i32 } %3065, 0
  store ptr %3066, ptr %4, align 8
  %3067 = extractvalue { ptr, i32 } %3065, 1
  store i32 %3067, ptr %5, align 4
  br label %3089

3068:                                             ; preds = %2820
  %3069 = landingpad { ptr, i32 }
          cleanup
  %3070 = extractvalue { ptr, i32 } %3069, 0
  store ptr %3070, ptr %4, align 8
  %3071 = extractvalue { ptr, i32 } %3069, 1
  store i32 %3071, ptr %5, align 4
  br label %3081

3072:                                             ; preds = %2827
  %3073 = landingpad { ptr, i32 }
          cleanup
  %3074 = extractvalue { ptr, i32 } %3073, 0
  store ptr %3074, ptr %4, align 8
  %3075 = extractvalue { ptr, i32 } %3073, 1
  store i32 %3075, ptr %5, align 4
  br label %3080

3076:                                             ; preds = %2828
  %3077 = landingpad { ptr, i32 }
          cleanup
  %3078 = extractvalue { ptr, i32 } %3077, 0
  store ptr %3078, ptr %4, align 8
  %3079 = extractvalue { ptr, i32 } %3077, 1
  store i32 %3079, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %318) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %305) #9
  br label %3080

3080:                                             ; preds = %3076, %3072
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %308) #9
  br label %3081

3081:                                             ; preds = %3080, %3068
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %317) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %317) #9
  %3082 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %310, i32 0, i32 0
  %3083 = getelementptr inbounds %"class.std::shared_ptr", ptr %3082, i64 2
  br label %3084

3084:                                             ; preds = %3084, %3081
  %3085 = phi ptr [ %3083, %3081 ], [ %3086, %3084 ]
  %3086 = getelementptr inbounds %"class.std::shared_ptr", ptr %3085, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3086) #9
  %3087 = icmp eq ptr %3086, %3082
  br i1 %3087, label %3088, label %3084

3088:                                             ; preds = %3084
  br label %3089

3089:                                             ; preds = %3088, %3064
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %314) #9
  br label %3090

3090:                                             ; preds = %3089, %3060
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %315) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %315) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %314) #9
  br label %3091

3091:                                             ; preds = %3090, %3056
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %312) #9
  br label %3092

3092:                                             ; preds = %3091, %3052
  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
  %3093 = load i1, ptr %316, align 1
  br i1 %3093, label %3094, label %3102

3094:                                             ; preds = %3092
  %3095 = load ptr, ptr %311, align 8
  %3096 = icmp eq ptr %310, %3095
  br i1 %3096, label %3101, label %3097

3097:                                             ; preds = %3097, %3094
  %3098 = phi ptr [ %3095, %3094 ], [ %3099, %3097 ]
  %3099 = getelementptr inbounds %"class.std::shared_ptr", ptr %3098, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3099) #9
  %3100 = icmp eq ptr %3099, %310
  br i1 %3100, label %3101, label %3097

3101:                                             ; preds = %3097, %3094
  br label %3102

3102:                                             ; preds = %3101, %3092
  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 %3103

3103:                                             ; preds = %3102, %3048
  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
  br label %6398

3104:                                             ; preds = %2836
  %3105 = landingpad { ptr, i32 }
          cleanup
  %3106 = extractvalue { ptr, i32 } %3105, 0
  store ptr %3106, ptr %4, align 8
  %3107 = extractvalue { ptr, i32 } %3105, 1
  store i32 %3107, ptr %5, align 4
  br label %3149

3108:                                             ; preds = %2839
  %3109 = landingpad { ptr, i32 }
          cleanup
  %3110 = extractvalue { ptr, i32 } %3109, 0
  store ptr %3110, ptr %4, align 8
  %3111 = extractvalue { ptr, i32 } %3109, 1
  store i32 %3111, ptr %5, align 4
  br label %3138

3112:                                             ; preds = %2841
  %3113 = landingpad { ptr, i32 }
          cleanup
  %3114 = extractvalue { ptr, i32 } %3113, 0
  store ptr %3114, ptr %4, align 8
  %3115 = extractvalue { ptr, i32 } %3113, 1
  store i32 %3115, ptr %5, align 4
  br label %3137

3116:                                             ; preds = %2842
  %3117 = landingpad { ptr, i32 }
          cleanup
  %3118 = extractvalue { ptr, i32 } %3117, 0
  store ptr %3118, ptr %4, align 8
  %3119 = extractvalue { ptr, i32 } %3117, 1
  store i32 %3119, ptr %5, align 4
  br label %3129

3120:                                             ; preds = %2849
  %3121 = landingpad { ptr, i32 }
          cleanup
  %3122 = extractvalue { ptr, i32 } %3121, 0
  store ptr %3122, ptr %4, align 8
  %3123 = extractvalue { ptr, i32 } %3121, 1
  store i32 %3123, ptr %5, align 4
  br label %3128

3124:                                             ; preds = %2850
  %3125 = landingpad { ptr, i32 }
          cleanup
  %3126 = extractvalue { ptr, i32 } %3125, 0
  store ptr %3126, ptr %4, align 8
  %3127 = extractvalue { ptr, i32 } %3125, 1
  store i32 %3127, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %330) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %319) #9
  br label %3128

3128:                                             ; preds = %3124, %3120
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %322) #9
  br label %3129

3129:                                             ; preds = %3128, %3116
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %329) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %329) #9
  %3130 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %324, i32 0, i32 0
  %3131 = getelementptr inbounds %"class.std::shared_ptr", ptr %3130, i64 1
  br label %3132

3132:                                             ; preds = %3132, %3129
  %3133 = phi ptr [ %3131, %3129 ], [ %3134, %3132 ]
  %3134 = getelementptr inbounds %"class.std::shared_ptr", ptr %3133, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3134) #9
  %3135 = icmp eq ptr %3134, %3130
  br i1 %3135, label %3136, label %3132

3136:                                             ; preds = %3132
  br label %3137

3137:                                             ; preds = %3136, %3112
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %326) #9
  br label %3138

3138:                                             ; preds = %3137, %3108
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %327) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %327) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %326) #9
  %3139 = load i1, ptr %328, align 1
  br i1 %3139, label %3140, label %3148

3140:                                             ; preds = %3138
  %3141 = load ptr, ptr %325, align 8
  %3142 = icmp eq ptr %324, %3141
  br i1 %3142, label %3147, label %3143

3143:                                             ; preds = %3143, %3140
  %3144 = phi ptr [ %3141, %3140 ], [ %3145, %3143 ]
  %3145 = getelementptr inbounds %"class.std::shared_ptr", ptr %3144, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3145) #9
  %3146 = icmp eq ptr %3145, %324
  br i1 %3146, label %3147, label %3143

3147:                                             ; preds = %3143, %3140
  br label %3148

3148:                                             ; preds = %3147, %3138
  call void @llvm.lifetime.end.p0(i64 16, ptr %324) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %320) #9
  br label %3149

3149:                                             ; preds = %3148, %3104
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %321) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %321) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %320) #9
  br label %6398

3150:                                             ; preds = %2858
  %3151 = landingpad { ptr, i32 }
          cleanup
  %3152 = extractvalue { ptr, i32 } %3151, 0
  store ptr %3152, ptr %4, align 8
  %3153 = extractvalue { ptr, i32 } %3151, 1
  store i32 %3153, ptr %5, align 4
  br label %3207

3154:                                             ; preds = %2863
  %3155 = landingpad { ptr, i32 }
          cleanup
  %3156 = extractvalue { ptr, i32 } %3155, 0
  store ptr %3156, ptr %4, align 8
  %3157 = extractvalue { ptr, i32 } %3155, 1
  store i32 %3157, ptr %5, align 4
  br label %3196

3158:                                             ; preds = %2865
  %3159 = landingpad { ptr, i32 }
          cleanup
  %3160 = extractvalue { ptr, i32 } %3159, 0
  store ptr %3160, ptr %4, align 8
  %3161 = extractvalue { ptr, i32 } %3159, 1
  store i32 %3161, ptr %5, align 4
  br label %3195

3162:                                             ; preds = %2866
  %3163 = landingpad { ptr, i32 }
          cleanup
  %3164 = extractvalue { ptr, i32 } %3163, 0
  store ptr %3164, ptr %4, align 8
  %3165 = extractvalue { ptr, i32 } %3163, 1
  store i32 %3165, ptr %5, align 4
  br label %3187

3166:                                             ; preds = %2874
  %3167 = landingpad { ptr, i32 }
          cleanup
  %3168 = extractvalue { ptr, i32 } %3167, 0
  store ptr %3168, ptr %4, align 8
  %3169 = extractvalue { ptr, i32 } %3167, 1
  store i32 %3169, ptr %5, align 4
  br label %3186

3170:                                             ; preds = %2875
  %3171 = landingpad { ptr, i32 }
          cleanup
  %3172 = extractvalue { ptr, i32 } %3171, 0
  store ptr %3172, ptr %4, align 8
  %3173 = extractvalue { ptr, i32 } %3171, 1
  store i32 %3173, ptr %5, align 4
  br label %3178

3174:                                             ; preds = %2882
  %3175 = landingpad { ptr, i32 }
          cleanup
  %3176 = extractvalue { ptr, i32 } %3175, 0
  store ptr %3176, ptr %4, align 8
  %3177 = extractvalue { ptr, i32 } %3175, 1
  store i32 %3177, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %332) #9
  br label %3178

3178:                                             ; preds = %3174, %3170
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %347) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %347) #9
  %3179 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %334, i32 0, i32 0
  %3180 = getelementptr inbounds %"class.std::shared_ptr", ptr %3179, i64 1
  br label %3181

3181:                                             ; preds = %3181, %3178
  %3182 = phi ptr [ %3180, %3178 ], [ %3183, %3181 ]
  %3183 = getelementptr inbounds %"class.std::shared_ptr", ptr %3182, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3183) #9
  %3184 = icmp eq ptr %3183, %3179
  br i1 %3184, label %3185, label %3181

3185:                                             ; preds = %3181
  br label %3186

3186:                                             ; preds = %3185, %3166
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %338) #9
  br label %3187

3187:                                             ; preds = %3186, %3162
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %345) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %345) #9
  %3188 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %340, i32 0, i32 0
  %3189 = getelementptr inbounds %"class.std::shared_ptr", ptr %3188, i64 2
  br label %3190

3190:                                             ; preds = %3190, %3187
  %3191 = phi ptr [ %3189, %3187 ], [ %3192, %3190 ]
  %3192 = getelementptr inbounds %"class.std::shared_ptr", ptr %3191, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3192) #9
  %3193 = icmp eq ptr %3192, %3188
  br i1 %3193, label %3194, label %3190

3194:                                             ; preds = %3190
  br label %3195

3195:                                             ; preds = %3194, %3158
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %342) #9
  br label %3196

3196:                                             ; preds = %3195, %3154
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %343) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %343) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %342) #9
  %3197 = load i1, ptr %344, align 1
  br i1 %3197, label %3198, label %3206

3198:                                             ; preds = %3196
  %3199 = load ptr, ptr %341, align 8
  %3200 = icmp eq ptr %340, %3199
  br i1 %3200, label %3205, label %3201

3201:                                             ; preds = %3201, %3198
  %3202 = phi ptr [ %3199, %3198 ], [ %3203, %3201 ]
  %3203 = getelementptr inbounds %"class.std::shared_ptr", ptr %3202, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3203) #9
  %3204 = icmp eq ptr %3203, %340
  br i1 %3204, label %3205, label %3201

3205:                                             ; preds = %3201, %3198
  br label %3206

3206:                                             ; preds = %3205, %3196
  call void @llvm.lifetime.end.p0(i64 32, ptr %340) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %336) #9
  br label %3207

3207:                                             ; preds = %3206, %3150
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %337) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %337) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %336) #9
  %3208 = load i1, ptr %346, align 1
  br i1 %3208, label %3209, label %3217

3209:                                             ; preds = %3207
  %3210 = load ptr, ptr %335, align 8
  %3211 = icmp eq ptr %334, %3210
  br i1 %3211, label %3216, label %3212

3212:                                             ; preds = %3212, %3209
  %3213 = phi ptr [ %3210, %3209 ], [ %3214, %3212 ]
  %3214 = getelementptr inbounds %"class.std::shared_ptr", ptr %3213, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3214) #9
  %3215 = icmp eq ptr %3214, %334
  br i1 %3215, label %3216, label %3212

3216:                                             ; preds = %3212, %3209
  br label %3217

3217:                                             ; preds = %3216, %3207
  call void @llvm.lifetime.end.p0(i64 16, ptr %334) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %332) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %331) #9
  br label %6398

3218:                                             ; preds = %2958, %2899
  %3219 = landingpad { ptr, i32 }
          catch ptr null
  %3220 = extractvalue { ptr, i32 } %3219, 0
  store ptr %3220, ptr %4, align 8
  %3221 = extractvalue { ptr, i32 } %3219, 1
  store i32 %3221, ptr %5, align 4
  br label %3326

3222:                                             ; preds = %2901
  %3223 = landingpad { ptr, i32 }
          catch ptr null
  %3224 = extractvalue { ptr, i32 } %3223, 0
  store ptr %3224, ptr %4, align 8
  %3225 = extractvalue { ptr, i32 } %3223, 1
  store i32 %3225, ptr %5, align 4
  br label %3301

3226:                                             ; preds = %2903
  %3227 = landingpad { ptr, i32 }
          catch ptr null
  %3228 = extractvalue { ptr, i32 } %3227, 0
  store ptr %3228, ptr %4, align 8
  %3229 = extractvalue { ptr, i32 } %3227, 1
  store i32 %3229, ptr %5, align 4
  br label %3300

3230:                                             ; preds = %2904
  %3231 = landingpad { ptr, i32 }
          catch ptr null
  %3232 = extractvalue { ptr, i32 } %3231, 0
  store ptr %3232, ptr %4, align 8
  %3233 = extractvalue { ptr, i32 } %3231, 1
  store i32 %3233, ptr %5, align 4
  br label %3299

3234:                                             ; preds = %2905
  %3235 = landingpad { ptr, i32 }
          catch ptr null
  %3236 = extractvalue { ptr, i32 } %3235, 0
  store ptr %3236, ptr %4, align 8
  %3237 = extractvalue { ptr, i32 } %3235, 1
  store i32 %3237, ptr %5, align 4
  br label %3291

3238:                                             ; preds = %2912
  %3239 = landingpad { ptr, i32 }
          catch ptr null
  %3240 = extractvalue { ptr, i32 } %3239, 0
  store ptr %3240, ptr %4, align 8
  %3241 = extractvalue { ptr, i32 } %3239, 1
  store i32 %3241, ptr %5, align 4
  br label %3280

3242:                                             ; preds = %2915
  %3243 = landingpad { ptr, i32 }
          catch ptr null
  %3244 = extractvalue { ptr, i32 } %3243, 0
  store ptr %3244, ptr %4, align 8
  %3245 = extractvalue { ptr, i32 } %3243, 1
  store i32 %3245, ptr %5, align 4
  br label %3279

3246:                                             ; preds = %2916
  %3247 = landingpad { ptr, i32 }
          catch ptr null
  %3248 = extractvalue { ptr, i32 } %3247, 0
  store ptr %3248, ptr %4, align 8
  %3249 = extractvalue { ptr, i32 } %3247, 1
  store i32 %3249, ptr %5, align 4
  br label %3278

3250:                                             ; preds = %2917
  %3251 = landingpad { ptr, i32 }
          catch ptr null
  %3252 = extractvalue { ptr, i32 } %3251, 0
  store ptr %3252, ptr %4, align 8
  %3253 = extractvalue { ptr, i32 } %3251, 1
  store i32 %3253, ptr %5, align 4
  br label %3270

3254:                                             ; preds = %2924
  %3255 = landingpad { ptr, i32 }
          catch ptr null
  %3256 = extractvalue { ptr, i32 } %3255, 0
  store ptr %3256, ptr %4, align 8
  %3257 = extractvalue { ptr, i32 } %3255, 1
  store i32 %3257, ptr %5, align 4
  br label %3262

3258:                                             ; preds = %2933, %2931
  %3259 = landingpad { ptr, i32 }
          catch ptr null
  %3260 = extractvalue { ptr, i32 } %3259, 0
  store ptr %3260, ptr %4, align 8
  %3261 = extractvalue { ptr, i32 } %3259, 1
  store i32 %3261, ptr %5, align 4
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %349) #9
  br label %3262

3262:                                             ; preds = %3258, %3254
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %370) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %370) #9
  %3263 = getelementptr inbounds [2 x %"class.std::vector"], ptr %351, i32 0, i32 0
  %3264 = getelementptr inbounds %"class.std::vector", ptr %3263, i64 2
  br label %3265

3265:                                             ; preds = %3265, %3262
  %3266 = phi ptr [ %3264, %3262 ], [ %3267, %3265 ]
  %3267 = getelementptr inbounds %"class.std::vector", ptr %3266, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3267) #9
  %3268 = icmp eq ptr %3267, %3263
  br i1 %3268, label %3269, label %3265

3269:                                             ; preds = %3265
  br label %3270

3270:                                             ; preds = %3269, %3250
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %368) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %368) #9
  %3271 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %362, i32 0, i32 0
  %3272 = getelementptr inbounds %"struct.std::pair", ptr %3271, i64 1
  br label %3273

3273:                                             ; preds = %3273, %3270
  %3274 = phi ptr [ %3272, %3270 ], [ %3275, %3273 ]
  %3275 = getelementptr inbounds %"struct.std::pair", ptr %3274, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3275) #9
  %3276 = icmp eq ptr %3275, %3271
  br i1 %3276, label %3277, label %3273

3277:                                             ; preds = %3273
  br label %3278

3278:                                             ; preds = %3277, %3246
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %364) #9
  br label %3279

3279:                                             ; preds = %3278, %3242
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %365) #9
  br label %3280

3280:                                             ; preds = %3279, %3238
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %366) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %366) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %365) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %364) #9
  %3281 = load i1, ptr %367, align 1
  br i1 %3281, label %3282, label %3290

3282:                                             ; preds = %3280
  %3283 = load ptr, ptr %363, align 8
  %3284 = icmp eq ptr %362, %3283
  br i1 %3284, label %3289, label %3285

3285:                                             ; preds = %3285, %3282
  %3286 = phi ptr [ %3283, %3282 ], [ %3287, %3285 ]
  %3287 = getelementptr inbounds %"struct.std::pair", ptr %3286, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3287) #9
  %3288 = icmp eq ptr %3287, %362
  br i1 %3288, label %3289, label %3285

3289:                                             ; preds = %3285, %3282
  br label %3290

3290:                                             ; preds = %3289, %3280
  call void @llvm.lifetime.end.p0(i64 32, ptr %362) #9
  br label %3291

3291:                                             ; preds = %3290, %3234
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %360) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %360) #9
  %3292 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %354, i32 0, i32 0
  %3293 = getelementptr inbounds %"struct.std::pair", ptr %3292, i64 1
  br label %3294

3294:                                             ; preds = %3294, %3291
  %3295 = phi ptr [ %3293, %3291 ], [ %3296, %3294 ]
  %3296 = getelementptr inbounds %"struct.std::pair", ptr %3295, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3296) #9
  %3297 = icmp eq ptr %3296, %3292
  br i1 %3297, label %3298, label %3294

3298:                                             ; preds = %3294
  br label %3299

3299:                                             ; preds = %3298, %3230
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %356) #9
  br label %3300

3300:                                             ; preds = %3299, %3226
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %357) #9
  br label %3301

3301:                                             ; preds = %3300, %3222
  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
  %3302 = load i1, ptr %359, align 1
  br i1 %3302, label %3303, label %3311

3303:                                             ; preds = %3301
  %3304 = load ptr, ptr %355, align 8
  %3305 = icmp eq ptr %354, %3304
  br i1 %3305, label %3310, label %3306

3306:                                             ; preds = %3306, %3303
  %3307 = phi ptr [ %3304, %3303 ], [ %3308, %3306 ]
  %3308 = getelementptr inbounds %"struct.std::pair", ptr %3307, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3308) #9
  %3309 = icmp eq ptr %3308, %354
  br i1 %3309, label %3310, label %3306

3310:                                             ; preds = %3306, %3303
  br label %3311

3311:                                             ; preds = %3310, %3301
  call void @llvm.lifetime.end.p0(i64 32, ptr %354) #9
  %3312 = load i1, ptr %369, align 1
  br i1 %3312, label %3313, label %3321

3313:                                             ; preds = %3311
  %3314 = load ptr, ptr %352, align 8
  %3315 = icmp eq ptr %351, %3314
  br i1 %3315, label %3320, label %3316

3316:                                             ; preds = %3316, %3313
  %3317 = phi ptr [ %3314, %3313 ], [ %3318, %3316 ]
  %3318 = getelementptr inbounds %"class.std::vector", ptr %3317, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3318) #9
  %3319 = icmp eq ptr %3318, %351
  br i1 %3319, label %3320, label %3316

3320:                                             ; preds = %3316, %3313
  br label %3321

3321:                                             ; preds = %3320, %3311
  call void @llvm.lifetime.end.p0(i64 48, ptr %351) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %348) #9
  br label %3326

3322:                                             ; preds = %2965, %2963, %2960
  %3323 = landingpad { ptr, i32 }
          catch ptr null
  %3324 = extractvalue { ptr, i32 } %3323, 0
  store ptr %3324, ptr %4, align 8
  %3325 = extractvalue { ptr, i32 } %3323, 1
  store i32 %3325, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %371) #9
  br label %3326

3326:                                             ; preds = %3322, %3321, %3218
  %3327 = load ptr, ptr %4, align 8
  %3328 = call ptr @__cxa_begin_catch(ptr %3327) #9
  %3329 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %3330 unwind label %3556

3330:                                             ; preds = %3326
  %3331 = load ptr, ptr %3329, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %372) #9
  %3332 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %3333 unwind label %3560

3333:                                             ; preds = %3330
  %3334 = load ptr, ptr %3332, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %372, ptr noundef nonnull align 8 dereferenceable(30) %3334, i32 noundef 2410)
          to label %3335 unwind label %3560

3335:                                             ; preds = %3333
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %3331, ptr noundef nonnull align 8 dereferenceable(30) %372, ptr noundef @.str.524)
          to label %3336 unwind label %3560

3336:                                             ; preds = %3335
  call void @llvm.lifetime.end.p0(i64 32, ptr %372) #9
  invoke void @__cxa_end_catch()
          to label %3337 unwind label %1142

3337:                                             ; preds = %3336
  br label %3338

3338:                                             ; preds = %3555, %3337
  br label %3339

3339:                                             ; preds = %3338
  br label %3340

3340:                                             ; preds = %3339
  %3341 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %3341)
          to label %3342 unwind label %1142

3342:                                             ; preds = %3340
  %3343 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %3344 = 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 %374) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %375) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %375) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %374, ptr noundef @.str.525, ptr noundef nonnull align 1 dereferenceable(1) %375)
          to label %3345 unwind label %3566

3345:                                             ; preds = %3342
  call void @llvm.lifetime.start.p0(i64 32, ptr %378) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %378, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  %3346 = getelementptr inbounds %"class.std::shared_ptr", ptr %378, i64 1
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %3346, ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  %3347 = getelementptr inbounds %"class.std::initializer_list.94", ptr %377, i32 0, i32 0
  store ptr %378, ptr %3347, align 8, !tbaa !9
  %3348 = getelementptr inbounds %"class.std::initializer_list.94", ptr %377, i32 0, i32 1
  store i64 2, ptr %3348, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %379) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %379) #9
  %3349 = getelementptr inbounds { ptr, i64 }, ptr %377, i32 0, i32 0
  %3350 = load ptr, ptr %3349, align 8
  %3351 = getelementptr inbounds { ptr, i64 }, ptr %377, i32 0, i32 1
  %3352 = load i64, ptr %3351, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %376, ptr %3350, i64 %3352, ptr noundef nonnull align 1 dereferenceable(1) %379)
          to label %3353 unwind label %3570

3353:                                             ; preds = %3345
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %373, ptr noundef nonnull align 8 dereferenceable(33088) %3344, ptr noundef nonnull align 8 dereferenceable(32) %374, ptr noundef %376)
          to label %3354 unwind label %3574

3354:                                             ; preds = %3353
  call void @llvm.lifetime.start.p0(i64 32, ptr %382) #9
  store i1 true, ptr %396, align 1
  store ptr %382, ptr %383, align 8
  %3355 = 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.526, ptr noundef nonnull align 1 dereferenceable(1) %385)
          to label %3356 unwind label %3578

3356:                                             ; preds = %3354
  call void @llvm.lifetime.start.p0(i64 32, ptr %388) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %388, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  %3357 = getelementptr inbounds %"class.std::shared_ptr", ptr %388, i64 1
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %3357, ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  %3358 = getelementptr inbounds %"class.std::initializer_list.94", ptr %387, i32 0, i32 0
  store ptr %388, ptr %3358, align 8, !tbaa !9
  %3359 = getelementptr inbounds %"class.std::initializer_list.94", ptr %387, i32 0, i32 1
  store i64 2, ptr %3359, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %389) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %389) #9
  %3360 = getelementptr inbounds { ptr, i64 }, ptr %387, i32 0, i32 0
  %3361 = load ptr, ptr %3360, align 8
  %3362 = getelementptr inbounds { ptr, i64 }, ptr %387, i32 0, i32 1
  %3363 = load i64, ptr %3362, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %386, ptr %3361, i64 %3363, ptr noundef nonnull align 1 dereferenceable(1) %389)
          to label %3364 unwind label %3582

3364:                                             ; preds = %3356
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %382, ptr noundef nonnull align 8 dereferenceable(33088) %3355, ptr noundef nonnull align 8 dereferenceable(32) %384, ptr noundef %386)
          to label %3365 unwind label %3586

3365:                                             ; preds = %3364
  %3366 = getelementptr inbounds %"class.std::shared_ptr", ptr %382, i64 1
  store ptr %3366, ptr %383, align 8
  %3367 = 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 %390) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %391) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %391) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %390, ptr noundef @.str.526, ptr noundef nonnull align 1 dereferenceable(1) %391)
          to label %3368 unwind label %3590

3368:                                             ; preds = %3365
  call void @llvm.lifetime.start.p0(i64 32, ptr %394) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %394, ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  %3369 = getelementptr inbounds %"class.std::shared_ptr", ptr %394, i64 1
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %3369, ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  %3370 = getelementptr inbounds %"class.std::initializer_list.94", ptr %393, i32 0, i32 0
  store ptr %394, ptr %3370, align 8, !tbaa !9
  %3371 = getelementptr inbounds %"class.std::initializer_list.94", ptr %393, i32 0, i32 1
  store i64 2, ptr %3371, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %395) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %395) #9
  %3372 = getelementptr inbounds { ptr, i64 }, ptr %393, i32 0, i32 0
  %3373 = load ptr, ptr %3372, align 8
  %3374 = getelementptr inbounds { ptr, i64 }, ptr %393, i32 0, i32 1
  %3375 = load i64, ptr %3374, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %392, ptr %3373, i64 %3375, ptr noundef nonnull align 1 dereferenceable(1) %395)
          to label %3376 unwind label %3594

3376:                                             ; preds = %3368
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %3366, ptr noundef nonnull align 8 dereferenceable(33088) %3367, ptr noundef nonnull align 8 dereferenceable(32) %390, ptr noundef %392)
          to label %3377 unwind label %3598

3377:                                             ; preds = %3376
  store i1 false, ptr %396, align 1
  %3378 = getelementptr inbounds %"class.std::initializer_list.94", ptr %381, i32 0, i32 0
  store ptr %382, ptr %3378, align 8, !tbaa !9
  %3379 = getelementptr inbounds %"class.std::initializer_list.94", ptr %381, i32 0, i32 1
  store i64 2, ptr %3379, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %397) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %397) #9
  %3380 = getelementptr inbounds { ptr, i64 }, ptr %381, i32 0, i32 0
  %3381 = load ptr, ptr %3380, align 8
  %3382 = getelementptr inbounds { ptr, i64 }, ptr %381, i32 0, i32 1
  %3383 = load i64, ptr %3382, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %380, ptr %3381, i64 %3383, ptr noundef nonnull align 1 dereferenceable(1) %397)
          to label %3384 unwind label %3602

3384:                                             ; preds = %3377
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %3343, ptr noundef %373, ptr noundef %380)
          to label %3385 unwind label %3606

3385:                                             ; preds = %3384
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %380) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %397) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %397) #9
  %3386 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %382, i32 0, i32 0
  %3387 = getelementptr inbounds %"class.std::shared_ptr", ptr %3386, i64 2
  br label %3388

3388:                                             ; preds = %3388, %3385
  %3389 = phi ptr [ %3387, %3385 ], [ %3390, %3388 ]
  %3390 = getelementptr inbounds %"class.std::shared_ptr", ptr %3389, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3390) #9
  %3391 = icmp eq ptr %3390, %3386
  br i1 %3391, label %3392, label %3388

3392:                                             ; preds = %3388
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %392) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %395) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %395) #9
  %3393 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %394, i32 0, i32 0
  %3394 = getelementptr inbounds %"class.std::shared_ptr", ptr %3393, i64 2
  br label %3395

3395:                                             ; preds = %3395, %3392
  %3396 = phi ptr [ %3394, %3392 ], [ %3397, %3395 ]
  %3397 = getelementptr inbounds %"class.std::shared_ptr", ptr %3396, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3397) #9
  %3398 = icmp eq ptr %3397, %3393
  br i1 %3398, label %3399, label %3395

3399:                                             ; preds = %3395
  call void @llvm.lifetime.end.p0(i64 32, ptr %394) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %390) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %391) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %391) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %390) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %386) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %389) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %389) #9
  %3400 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %388, i32 0, i32 0
  %3401 = getelementptr inbounds %"class.std::shared_ptr", ptr %3400, i64 2
  br label %3402

3402:                                             ; preds = %3402, %3399
  %3403 = phi ptr [ %3401, %3399 ], [ %3404, %3402 ]
  %3404 = getelementptr inbounds %"class.std::shared_ptr", ptr %3403, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3404) #9
  %3405 = icmp eq ptr %3404, %3400
  br i1 %3405, label %3406, label %3402

3406:                                             ; preds = %3402
  call void @llvm.lifetime.end.p0(i64 32, ptr %388) #9
  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 @llvm.lifetime.end.p0(i64 32, ptr %382) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %373) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %376) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %379) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %379) #9
  %3407 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %378, i32 0, i32 0
  %3408 = getelementptr inbounds %"class.std::shared_ptr", ptr %3407, i64 2
  br label %3409

3409:                                             ; preds = %3409, %3406
  %3410 = phi ptr [ %3408, %3406 ], [ %3411, %3409 ]
  %3411 = getelementptr inbounds %"class.std::shared_ptr", ptr %3410, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3411) #9
  %3412 = icmp eq ptr %3411, %3407
  br i1 %3412, label %3413, label %3409

3413:                                             ; preds = %3409
  call void @llvm.lifetime.end.p0(i64 32, ptr %378) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %374) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %375) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %375) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %374) #9
  %3414 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %3415 = 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 %399) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %400) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %400) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %399, ptr noundef @.str.526, ptr noundef nonnull align 1 dereferenceable(1) %400)
          to label %3416 unwind label %3658

3416:                                             ; preds = %3413
  call void @llvm.lifetime.start.p0(i64 32, ptr %403) #9
  store i1 true, ptr %409, align 1
  store ptr %403, ptr %404, align 8
  %3417 = 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 %405) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %406) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %406) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %405, ptr noundef @.str.527, ptr noundef nonnull align 1 dereferenceable(1) %406)
          to label %3418 unwind label %3662

3418:                                             ; preds = %3416
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %403, ptr noundef nonnull align 8 dereferenceable(33088) %3417, ptr noundef nonnull align 8 dereferenceable(32) %405)
          to label %3419 unwind label %3666

3419:                                             ; preds = %3418
  %3420 = getelementptr inbounds %"class.std::shared_ptr", ptr %403, i64 1
  store ptr %3420, ptr %404, align 8
  %3421 = 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 %407) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %408) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %408) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %407, ptr noundef @.str.528, ptr noundef nonnull align 1 dereferenceable(1) %408)
          to label %3422 unwind label %3670

3422:                                             ; preds = %3419
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %3420, ptr noundef nonnull align 8 dereferenceable(33088) %3421, ptr noundef nonnull align 8 dereferenceable(32) %407)
          to label %3423 unwind label %3674

3423:                                             ; preds = %3422
  store i1 false, ptr %409, align 1
  %3424 = getelementptr inbounds %"class.std::initializer_list.94", ptr %402, i32 0, i32 0
  store ptr %403, ptr %3424, align 8, !tbaa !9
  %3425 = getelementptr inbounds %"class.std::initializer_list.94", ptr %402, i32 0, i32 1
  store i64 2, ptr %3425, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %410) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %410) #9
  %3426 = getelementptr inbounds { ptr, i64 }, ptr %402, i32 0, i32 0
  %3427 = load ptr, ptr %3426, align 8
  %3428 = getelementptr inbounds { ptr, i64 }, ptr %402, i32 0, i32 1
  %3429 = load i64, ptr %3428, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %401, ptr %3427, i64 %3429, ptr noundef nonnull align 1 dereferenceable(1) %410)
          to label %3430 unwind label %3678

3430:                                             ; preds = %3423
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %398, ptr noundef nonnull align 8 dereferenceable(33088) %3415, ptr noundef nonnull align 8 dereferenceable(32) %399, ptr noundef %401)
          to label %3431 unwind label %3682

3431:                                             ; preds = %3430
  call void @llvm.memset.p0.i64(ptr align 8 %411, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %411) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %3414, ptr noundef %398, ptr noundef %411)
          to label %3432 unwind label %3686

3432:                                             ; preds = %3431
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %411) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %398) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %401) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %410) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %410) #9
  %3433 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %403, i32 0, i32 0
  %3434 = getelementptr inbounds %"class.std::shared_ptr", ptr %3433, i64 2
  br label %3435

3435:                                             ; preds = %3435, %3432
  %3436 = phi ptr [ %3434, %3432 ], [ %3437, %3435 ]
  %3437 = getelementptr inbounds %"class.std::shared_ptr", ptr %3436, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3437) #9
  %3438 = icmp eq ptr %3437, %3433
  br i1 %3438, label %3439, label %3435

3439:                                             ; preds = %3435
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %407) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %408) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %408) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %407) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %405) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %406) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %406) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %405) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %403) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %399) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %400) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %400) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %399) #9
  %3440 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %3441 = 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 %413) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %414) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %414) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %413, ptr noundef @.str.526, ptr noundef nonnull align 1 dereferenceable(1) %414)
          to label %3442 unwind label %3714

3442:                                             ; preds = %3439
  call void @llvm.lifetime.start.p0(i64 32, ptr %417) #9
  store i1 true, ptr %423, align 1
  store ptr %417, ptr %418, align 8
  %3443 = 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 %419) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %420) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %420) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %419, ptr noundef @.str.528, ptr noundef nonnull align 1 dereferenceable(1) %420)
          to label %3444 unwind label %3718

3444:                                             ; preds = %3442
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %417, ptr noundef nonnull align 8 dereferenceable(33088) %3443, ptr noundef nonnull align 8 dereferenceable(32) %419)
          to label %3445 unwind label %3722

3445:                                             ; preds = %3444
  %3446 = getelementptr inbounds %"class.std::shared_ptr", ptr %417, i64 1
  store ptr %3446, ptr %418, align 8
  %3447 = 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 %421) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %422) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %422) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %421, ptr noundef @.str.529, ptr noundef nonnull align 1 dereferenceable(1) %422)
          to label %3448 unwind label %3726

3448:                                             ; preds = %3445
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %3446, ptr noundef nonnull align 8 dereferenceable(33088) %3447, ptr noundef nonnull align 8 dereferenceable(32) %421)
          to label %3449 unwind label %3730

3449:                                             ; preds = %3448
  store i1 false, ptr %423, align 1
  %3450 = getelementptr inbounds %"class.std::initializer_list.94", ptr %416, i32 0, i32 0
  store ptr %417, ptr %3450, align 8, !tbaa !9
  %3451 = getelementptr inbounds %"class.std::initializer_list.94", ptr %416, i32 0, i32 1
  store i64 2, ptr %3451, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %424) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %424) #9
  %3452 = getelementptr inbounds { ptr, i64 }, ptr %416, i32 0, i32 0
  %3453 = load ptr, ptr %3452, align 8
  %3454 = getelementptr inbounds { ptr, i64 }, ptr %416, i32 0, i32 1
  %3455 = load i64, ptr %3454, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %415, ptr %3453, i64 %3455, ptr noundef nonnull align 1 dereferenceable(1) %424)
          to label %3456 unwind label %3734

3456:                                             ; preds = %3449
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %412, ptr noundef nonnull align 8 dereferenceable(33088) %3441, ptr noundef nonnull align 8 dereferenceable(32) %413, ptr noundef %415)
          to label %3457 unwind label %3738

3457:                                             ; preds = %3456
  call void @llvm.memset.p0.i64(ptr align 8 %425, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %425) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %3440, ptr noundef %412, ptr noundef %425)
          to label %3458 unwind label %3742

3458:                                             ; preds = %3457
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %425) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %412) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %415) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %424) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %424) #9
  %3459 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %417, i32 0, i32 0
  %3460 = getelementptr inbounds %"class.std::shared_ptr", ptr %3459, i64 2
  br label %3461

3461:                                             ; preds = %3461, %3458
  %3462 = phi ptr [ %3460, %3458 ], [ %3463, %3461 ]
  %3463 = getelementptr inbounds %"class.std::shared_ptr", ptr %3462, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3463) #9
  %3464 = icmp eq ptr %3463, %3459
  br i1 %3464, label %3465, label %3461

3465:                                             ; preds = %3461
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %421) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %422) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %422) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %421) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %419) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %420) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %420) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %419) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %417) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %413) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %414) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %414) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %413) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %426) #9
  %3466 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  %3467 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %3468 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %427) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %429) #9
  store i1 true, ptr %441, align 1
  store ptr %429, ptr %430, align 8
  %3469 = 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 %431) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %432) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %432) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %431, ptr noundef @.str.525, ptr noundef nonnull align 1 dereferenceable(1) %432)
          to label %3470 unwind label %3770

3470:                                             ; preds = %3465
  call void @llvm.lifetime.start.p0(i64 32, ptr %435) #9
  store i1 true, ptr %439, align 1
  store ptr %435, ptr %436, align 8
  %3471 = 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 %437) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %438) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %438) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %437, ptr noundef @.str.527, ptr noundef nonnull align 1 dereferenceable(1) %438)
          to label %3472 unwind label %3774

3472:                                             ; preds = %3470
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %435, ptr noundef nonnull align 8 dereferenceable(33088) %3471, ptr noundef nonnull align 8 dereferenceable(32) %437)
          to label %3473 unwind label %3778

3473:                                             ; preds = %3472
  %3474 = getelementptr inbounds %"class.std::shared_ptr", ptr %435, i64 1
  store ptr %3474, ptr %436, align 8
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %3474, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  store i1 false, ptr %439, align 1
  %3475 = getelementptr inbounds %"class.std::initializer_list.94", ptr %434, i32 0, i32 0
  store ptr %435, ptr %3475, align 8, !tbaa !9
  %3476 = getelementptr inbounds %"class.std::initializer_list.94", ptr %434, i32 0, i32 1
  store i64 2, ptr %3476, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %440) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %440) #9
  %3477 = getelementptr inbounds { ptr, i64 }, ptr %434, i32 0, i32 0
  %3478 = load ptr, ptr %3477, align 8
  %3479 = getelementptr inbounds { ptr, i64 }, ptr %434, i32 0, i32 1
  %3480 = load i64, ptr %3479, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %433, ptr %3478, i64 %3480, ptr noundef nonnull align 1 dereferenceable(1) %440)
          to label %3481 unwind label %3782

3481:                                             ; preds = %3473
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %429, ptr noundef nonnull align 8 dereferenceable(33088) %3469, ptr noundef nonnull align 8 dereferenceable(32) %431, ptr noundef %433)
          to label %3482 unwind label %3786

3482:                                             ; preds = %3481
  store i1 false, ptr %441, align 1
  %3483 = getelementptr inbounds %"class.std::initializer_list.94", ptr %428, i32 0, i32 0
  store ptr %429, ptr %3483, align 8, !tbaa !9
  %3484 = getelementptr inbounds %"class.std::initializer_list.94", ptr %428, i32 0, i32 1
  store i64 1, ptr %3484, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %442) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %442) #9
  %3485 = getelementptr inbounds { ptr, i64 }, ptr %428, i32 0, i32 0
  %3486 = load ptr, ptr %3485, align 8
  %3487 = getelementptr inbounds { ptr, i64 }, ptr %428, i32 0, i32 1
  %3488 = load i64, ptr %3487, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %427, ptr %3486, i64 %3488, ptr noundef nonnull align 1 dereferenceable(1) %442)
          to label %3489 unwind label %3790

3489:                                             ; preds = %3482
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %426, ptr noundef nonnull align 8 dereferenceable(64) %3466, ptr noundef %3467, ptr noundef %3468, ptr noundef nonnull align 8 dereferenceable(24) %427, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %3490 unwind label %3794

3490:                                             ; preds = %3489
  %3491 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %426) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %426) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %427) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %442) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %442) #9
  %3492 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %429, i32 0, i32 0
  %3493 = getelementptr inbounds %"class.std::shared_ptr", ptr %3492, i64 1
  br label %3494

3494:                                             ; preds = %3494, %3490
  %3495 = phi ptr [ %3493, %3490 ], [ %3496, %3494 ]
  %3496 = getelementptr inbounds %"class.std::shared_ptr", ptr %3495, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3496) #9
  %3497 = icmp eq ptr %3496, %3492
  br i1 %3497, label %3498, label %3494

3498:                                             ; preds = %3494
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %433) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %440) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %440) #9
  %3499 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %435, i32 0, i32 0
  %3500 = getelementptr inbounds %"class.std::shared_ptr", ptr %3499, i64 2
  br label %3501

3501:                                             ; preds = %3501, %3498
  %3502 = phi ptr [ %3500, %3498 ], [ %3503, %3501 ]
  %3503 = getelementptr inbounds %"class.std::shared_ptr", ptr %3502, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3503) #9
  %3504 = icmp eq ptr %3503, %3499
  br i1 %3504, label %3505, label %3501

3505:                                             ; preds = %3501
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %437) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %438) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %438) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %437) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %435) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %431) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %432) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %432) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %431) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %429) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %427) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %426) #9
  br label %3506

3506:                                             ; preds = %3505
  %3507 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ERKS8_(ptr noundef nonnull align 8 dereferenceable(24) %443, ptr noundef nonnull align 8 dereferenceable(24) %3507)
          to label %3508 unwind label %3838

3508:                                             ; preds = %3506
  call void @llvm.lifetime.start.p0(i64 24, ptr %446) #9
  store i1 true, ptr %456, align 1
  store ptr %446, ptr %447, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %449) #9
  store i1 true, ptr %454, align 1
  store ptr %449, ptr %450, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %451) #9
  %3509 = 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 %452) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %453) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %453) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %452, ptr noundef @.str.529, ptr noundef nonnull align 1 dereferenceable(1) %453)
          to label %3510 unwind label %3842

3510:                                             ; preds = %3508
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %451, ptr noundef nonnull align 8 dereferenceable(33088) %3509, ptr noundef nonnull align 8 dereferenceable(32) %452)
          to label %3511 unwind label %3846

3511:                                             ; preds = %3510
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %449, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %451)
          to label %3512 unwind label %3850

3512:                                             ; preds = %3511
  store i1 false, ptr %454, align 1
  %3513 = getelementptr inbounds %"class.std::initializer_list", ptr %448, i32 0, i32 0
  store ptr %449, ptr %3513, align 8, !tbaa !13
  %3514 = getelementptr inbounds %"class.std::initializer_list", ptr %448, i32 0, i32 1
  store i64 1, ptr %3514, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %455) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %455) #9
  %3515 = getelementptr inbounds { ptr, i64 }, ptr %448, i32 0, i32 0
  %3516 = load ptr, ptr %3515, align 8
  %3517 = getelementptr inbounds { ptr, i64 }, ptr %448, i32 0, i32 1
  %3518 = load i64, ptr %3517, align 8
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %446, ptr %3516, i64 %3518, ptr noundef nonnull align 1 dereferenceable(1) %455)
          to label %3519 unwind label %3854

3519:                                             ; preds = %3512
  store i1 false, ptr %456, align 1
  %3520 = getelementptr inbounds %"class.std::initializer_list.104", ptr %445, i32 0, i32 0
  store ptr %446, ptr %3520, align 8, !tbaa !16
  %3521 = getelementptr inbounds %"class.std::initializer_list.104", ptr %445, i32 0, i32 1
  store i64 1, ptr %3521, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 1, ptr %457) #9
  call void @_ZNSaISt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %457) #9
  %3522 = getelementptr inbounds { ptr, i64 }, ptr %445, i32 0, i32 0
  %3523 = load ptr, ptr %3522, align 8
  %3524 = getelementptr inbounds { ptr, i64 }, ptr %445, i32 0, i32 1
  %3525 = load i64, ptr %3524, align 8
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ESt16initializer_listIS6_ERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %444, ptr %3523, i64 %3525, ptr noundef nonnull align 1 dereferenceable(1) %457)
          to label %3526 unwind label %3858

3526:                                             ; preds = %3519
  %3527 = invoke noundef zeroext i1 @_Z14CheckSolutionsSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EES8_(ptr noundef %443, ptr noundef %444)
          to label %3528 unwind label %3862

3528:                                             ; preds = %3526
  %3529 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %3527)
          to label %3530 unwind label %3862

3530:                                             ; preds = %3528
  %3531 = xor i1 %3529, true
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %444) #9
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %457) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %457) #9
  %3532 = getelementptr inbounds [1 x %"class.std::vector"], ptr %446, i32 0, i32 0
  %3533 = getelementptr inbounds %"class.std::vector", ptr %3532, i64 1
  br label %3534

3534:                                             ; preds = %3534, %3530
  %3535 = phi ptr [ %3533, %3530 ], [ %3536, %3534 ]
  %3536 = getelementptr inbounds %"class.std::vector", ptr %3535, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3536) #9
  %3537 = icmp eq ptr %3536, %3532
  br i1 %3537, label %3538, label %3534

3538:                                             ; preds = %3534
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %455) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %455) #9
  %3539 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %449, i32 0, i32 0
  %3540 = getelementptr inbounds %"struct.std::pair", ptr %3539, i64 1
  br label %3541

3541:                                             ; preds = %3541, %3538
  %3542 = phi ptr [ %3540, %3538 ], [ %3543, %3541 ]
  %3543 = getelementptr inbounds %"struct.std::pair", ptr %3542, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3543) #9
  %3544 = icmp eq ptr %3543, %3539
  br i1 %3544, label %3545, label %3541

3545:                                             ; preds = %3541
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %451) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %452) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %453) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %453) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %452) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %451) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %449) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %446) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %443) #9
  br i1 %3531, label %3546, label %3983

3546:                                             ; preds = %3545
  %3547 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %3548 unwind label %3838

3548:                                             ; preds = %3546
  %3549 = load ptr, ptr %3547, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %458) #9
  %3550 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %3551 unwind label %3905

3551:                                             ; preds = %3548
  %3552 = load ptr, ptr %3550, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %458, ptr noundef nonnull align 8 dereferenceable(30) %3552, i32 noundef 2427)
          to label %3553 unwind label %3905

3553:                                             ; preds = %3551
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %3549, ptr noundef nonnull align 8 dereferenceable(30) %458, ptr noundef @.str.530)
          to label %3554 unwind label %3905

3554:                                             ; preds = %3553
  call void @llvm.lifetime.end.p0(i64 32, ptr %458) #9
  br label %3983

3555:                                             ; preds = %2966, %2957
  br label %3338

3556:                                             ; preds = %3326
  %3557 = landingpad { ptr, i32 }
          cleanup
  %3558 = extractvalue { ptr, i32 } %3557, 0
  store ptr %3558, ptr %4, align 8
  %3559 = extractvalue { ptr, i32 } %3557, 1
  store i32 %3559, ptr %5, align 4
  br label %3564

3560:                                             ; preds = %3335, %3333, %3330
  %3561 = landingpad { ptr, i32 }
          cleanup
  %3562 = extractvalue { ptr, i32 } %3561, 0
  store ptr %3562, ptr %4, align 8
  %3563 = extractvalue { ptr, i32 } %3561, 1
  store i32 %3563, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %372) #9
  br label %3564

3564:                                             ; preds = %3560, %3556
  invoke void @__cxa_end_catch()
          to label %3565 unwind label %6410

3565:                                             ; preds = %3564
  br label %6398

3566:                                             ; preds = %3342
  %3567 = landingpad { ptr, i32 }
          cleanup
  %3568 = extractvalue { ptr, i32 } %3567, 0
  store ptr %3568, ptr %4, align 8
  %3569 = extractvalue { ptr, i32 } %3567, 1
  store i32 %3569, ptr %5, align 4
  br label %3657

3570:                                             ; preds = %3345
  %3571 = landingpad { ptr, i32 }
          cleanup
  %3572 = extractvalue { ptr, i32 } %3571, 0
  store ptr %3572, ptr %4, align 8
  %3573 = extractvalue { ptr, i32 } %3571, 1
  store i32 %3573, ptr %5, align 4
  br label %3649

3574:                                             ; preds = %3353
  %3575 = landingpad { ptr, i32 }
          cleanup
  %3576 = extractvalue { ptr, i32 } %3575, 0
  store ptr %3576, ptr %4, align 8
  %3577 = extractvalue { ptr, i32 } %3575, 1
  store i32 %3577, ptr %5, align 4
  br label %3648

3578:                                             ; preds = %3354
  %3579 = landingpad { ptr, i32 }
          cleanup
  %3580 = extractvalue { ptr, i32 } %3579, 0
  store ptr %3580, ptr %4, align 8
  %3581 = extractvalue { ptr, i32 } %3579, 1
  store i32 %3581, ptr %5, align 4
  br label %3637

3582:                                             ; preds = %3356
  %3583 = landingpad { ptr, i32 }
          cleanup
  %3584 = extractvalue { ptr, i32 } %3583, 0
  store ptr %3584, ptr %4, align 8
  %3585 = extractvalue { ptr, i32 } %3583, 1
  store i32 %3585, ptr %5, align 4
  br label %3629

3586:                                             ; preds = %3364
  %3587 = landingpad { ptr, i32 }
          cleanup
  %3588 = extractvalue { ptr, i32 } %3587, 0
  store ptr %3588, ptr %4, align 8
  %3589 = extractvalue { ptr, i32 } %3587, 1
  store i32 %3589, ptr %5, align 4
  br label %3628

3590:                                             ; preds = %3365
  %3591 = landingpad { ptr, i32 }
          cleanup
  %3592 = extractvalue { ptr, i32 } %3591, 0
  store ptr %3592, ptr %4, align 8
  %3593 = extractvalue { ptr, i32 } %3591, 1
  store i32 %3593, ptr %5, align 4
  br label %3627

3594:                                             ; preds = %3368
  %3595 = landingpad { ptr, i32 }
          cleanup
  %3596 = extractvalue { ptr, i32 } %3595, 0
  store ptr %3596, ptr %4, align 8
  %3597 = extractvalue { ptr, i32 } %3595, 1
  store i32 %3597, ptr %5, align 4
  br label %3619

3598:                                             ; preds = %3376
  %3599 = landingpad { ptr, i32 }
          cleanup
  %3600 = extractvalue { ptr, i32 } %3599, 0
  store ptr %3600, ptr %4, align 8
  %3601 = extractvalue { ptr, i32 } %3599, 1
  store i32 %3601, ptr %5, align 4
  br label %3618

3602:                                             ; preds = %3377
  %3603 = landingpad { ptr, i32 }
          cleanup
  %3604 = extractvalue { ptr, i32 } %3603, 0
  store ptr %3604, ptr %4, align 8
  %3605 = extractvalue { ptr, i32 } %3603, 1
  store i32 %3605, ptr %5, align 4
  br label %3610

3606:                                             ; preds = %3384
  %3607 = landingpad { ptr, i32 }
          cleanup
  %3608 = extractvalue { ptr, i32 } %3607, 0
  store ptr %3608, ptr %4, align 8
  %3609 = extractvalue { ptr, i32 } %3607, 1
  store i32 %3609, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %380) #9
  br label %3610

3610:                                             ; preds = %3606, %3602
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %397) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %397) #9
  %3611 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %382, i32 0, i32 0
  %3612 = getelementptr inbounds %"class.std::shared_ptr", ptr %3611, i64 2
  br label %3613

3613:                                             ; preds = %3613, %3610
  %3614 = phi ptr [ %3612, %3610 ], [ %3615, %3613 ]
  %3615 = getelementptr inbounds %"class.std::shared_ptr", ptr %3614, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3615) #9
  %3616 = icmp eq ptr %3615, %3611
  br i1 %3616, label %3617, label %3613

3617:                                             ; preds = %3613
  br label %3618

3618:                                             ; preds = %3617, %3598
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %392) #9
  br label %3619

3619:                                             ; preds = %3618, %3594
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %395) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %395) #9
  %3620 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %394, i32 0, i32 0
  %3621 = getelementptr inbounds %"class.std::shared_ptr", ptr %3620, i64 2
  br label %3622

3622:                                             ; preds = %3622, %3619
  %3623 = phi ptr [ %3621, %3619 ], [ %3624, %3622 ]
  %3624 = getelementptr inbounds %"class.std::shared_ptr", ptr %3623, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3624) #9
  %3625 = icmp eq ptr %3624, %3620
  br i1 %3625, label %3626, label %3622

3626:                                             ; preds = %3622
  call void @llvm.lifetime.end.p0(i64 32, ptr %394) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %390) #9
  br label %3627

3627:                                             ; preds = %3626, %3590
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %391) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %391) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %390) #9
  br label %3628

3628:                                             ; preds = %3627, %3586
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %386) #9
  br label %3629

3629:                                             ; preds = %3628, %3582
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %389) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %389) #9
  %3630 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %388, i32 0, i32 0
  %3631 = getelementptr inbounds %"class.std::shared_ptr", ptr %3630, i64 2
  br label %3632

3632:                                             ; preds = %3632, %3629
  %3633 = phi ptr [ %3631, %3629 ], [ %3634, %3632 ]
  %3634 = getelementptr inbounds %"class.std::shared_ptr", ptr %3633, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3634) #9
  %3635 = icmp eq ptr %3634, %3630
  br i1 %3635, label %3636, label %3632

3636:                                             ; preds = %3632
  call void @llvm.lifetime.end.p0(i64 32, ptr %388) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %384) #9
  br label %3637

3637:                                             ; preds = %3636, %3578
  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
  %3638 = load i1, ptr %396, align 1
  br i1 %3638, label %3639, label %3647

3639:                                             ; preds = %3637
  %3640 = load ptr, ptr %383, align 8
  %3641 = icmp eq ptr %382, %3640
  br i1 %3641, label %3646, label %3642

3642:                                             ; preds = %3642, %3639
  %3643 = phi ptr [ %3640, %3639 ], [ %3644, %3642 ]
  %3644 = getelementptr inbounds %"class.std::shared_ptr", ptr %3643, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3644) #9
  %3645 = icmp eq ptr %3644, %382
  br i1 %3645, label %3646, label %3642

3646:                                             ; preds = %3642, %3639
  br label %3647

3647:                                             ; preds = %3646, %3637
  call void @llvm.lifetime.end.p0(i64 32, ptr %382) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %373) #9
  br label %3648

3648:                                             ; preds = %3647, %3574
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %376) #9
  br label %3649

3649:                                             ; preds = %3648, %3570
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %379) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %379) #9
  %3650 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %378, i32 0, i32 0
  %3651 = getelementptr inbounds %"class.std::shared_ptr", ptr %3650, i64 2
  br label %3652

3652:                                             ; preds = %3652, %3649
  %3653 = phi ptr [ %3651, %3649 ], [ %3654, %3652 ]
  %3654 = getelementptr inbounds %"class.std::shared_ptr", ptr %3653, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3654) #9
  %3655 = icmp eq ptr %3654, %3650
  br i1 %3655, label %3656, label %3652

3656:                                             ; preds = %3652
  call void @llvm.lifetime.end.p0(i64 32, ptr %378) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %374) #9
  br label %3657

3657:                                             ; preds = %3656, %3566
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %375) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %375) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %374) #9
  br label %6398

3658:                                             ; preds = %3413
  %3659 = landingpad { ptr, i32 }
          cleanup
  %3660 = extractvalue { ptr, i32 } %3659, 0
  store ptr %3660, ptr %4, align 8
  %3661 = extractvalue { ptr, i32 } %3659, 1
  store i32 %3661, ptr %5, align 4
  br label %3713

3662:                                             ; preds = %3416
  %3663 = landingpad { ptr, i32 }
          cleanup
  %3664 = extractvalue { ptr, i32 } %3663, 0
  store ptr %3664, ptr %4, align 8
  %3665 = extractvalue { ptr, i32 } %3663, 1
  store i32 %3665, ptr %5, align 4
  br label %3702

3666:                                             ; preds = %3418
  %3667 = landingpad { ptr, i32 }
          cleanup
  %3668 = extractvalue { ptr, i32 } %3667, 0
  store ptr %3668, ptr %4, align 8
  %3669 = extractvalue { ptr, i32 } %3667, 1
  store i32 %3669, ptr %5, align 4
  br label %3701

3670:                                             ; preds = %3419
  %3671 = landingpad { ptr, i32 }
          cleanup
  %3672 = extractvalue { ptr, i32 } %3671, 0
  store ptr %3672, ptr %4, align 8
  %3673 = extractvalue { ptr, i32 } %3671, 1
  store i32 %3673, ptr %5, align 4
  br label %3700

3674:                                             ; preds = %3422
  %3675 = landingpad { ptr, i32 }
          cleanup
  %3676 = extractvalue { ptr, i32 } %3675, 0
  store ptr %3676, ptr %4, align 8
  %3677 = extractvalue { ptr, i32 } %3675, 1
  store i32 %3677, ptr %5, align 4
  br label %3699

3678:                                             ; preds = %3423
  %3679 = landingpad { ptr, i32 }
          cleanup
  %3680 = extractvalue { ptr, i32 } %3679, 0
  store ptr %3680, ptr %4, align 8
  %3681 = extractvalue { ptr, i32 } %3679, 1
  store i32 %3681, ptr %5, align 4
  br label %3691

3682:                                             ; preds = %3430
  %3683 = landingpad { ptr, i32 }
          cleanup
  %3684 = extractvalue { ptr, i32 } %3683, 0
  store ptr %3684, ptr %4, align 8
  %3685 = extractvalue { ptr, i32 } %3683, 1
  store i32 %3685, ptr %5, align 4
  br label %3690

3686:                                             ; preds = %3431
  %3687 = landingpad { ptr, i32 }
          cleanup
  %3688 = extractvalue { ptr, i32 } %3687, 0
  store ptr %3688, ptr %4, align 8
  %3689 = extractvalue { ptr, i32 } %3687, 1
  store i32 %3689, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %411) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %398) #9
  br label %3690

3690:                                             ; preds = %3686, %3682
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %401) #9
  br label %3691

3691:                                             ; preds = %3690, %3678
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %410) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %410) #9
  %3692 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %403, i32 0, i32 0
  %3693 = getelementptr inbounds %"class.std::shared_ptr", ptr %3692, i64 2
  br label %3694

3694:                                             ; preds = %3694, %3691
  %3695 = phi ptr [ %3693, %3691 ], [ %3696, %3694 ]
  %3696 = getelementptr inbounds %"class.std::shared_ptr", ptr %3695, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3696) #9
  %3697 = icmp eq ptr %3696, %3692
  br i1 %3697, label %3698, label %3694

3698:                                             ; preds = %3694
  br label %3699

3699:                                             ; preds = %3698, %3674
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %407) #9
  br label %3700

3700:                                             ; preds = %3699, %3670
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %408) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %408) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %407) #9
  br label %3701

3701:                                             ; preds = %3700, %3666
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %405) #9
  br label %3702

3702:                                             ; preds = %3701, %3662
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %406) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %406) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %405) #9
  %3703 = load i1, ptr %409, align 1
  br i1 %3703, label %3704, label %3712

3704:                                             ; preds = %3702
  %3705 = load ptr, ptr %404, align 8
  %3706 = icmp eq ptr %403, %3705
  br i1 %3706, label %3711, label %3707

3707:                                             ; preds = %3707, %3704
  %3708 = phi ptr [ %3705, %3704 ], [ %3709, %3707 ]
  %3709 = getelementptr inbounds %"class.std::shared_ptr", ptr %3708, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3709) #9
  %3710 = icmp eq ptr %3709, %403
  br i1 %3710, label %3711, label %3707

3711:                                             ; preds = %3707, %3704
  br label %3712

3712:                                             ; preds = %3711, %3702
  call void @llvm.lifetime.end.p0(i64 32, ptr %403) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %399) #9
  br label %3713

3713:                                             ; preds = %3712, %3658
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %400) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %400) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %399) #9
  br label %6398

3714:                                             ; preds = %3439
  %3715 = landingpad { ptr, i32 }
          cleanup
  %3716 = extractvalue { ptr, i32 } %3715, 0
  store ptr %3716, ptr %4, align 8
  %3717 = extractvalue { ptr, i32 } %3715, 1
  store i32 %3717, ptr %5, align 4
  br label %3769

3718:                                             ; preds = %3442
  %3719 = landingpad { ptr, i32 }
          cleanup
  %3720 = extractvalue { ptr, i32 } %3719, 0
  store ptr %3720, ptr %4, align 8
  %3721 = extractvalue { ptr, i32 } %3719, 1
  store i32 %3721, ptr %5, align 4
  br label %3758

3722:                                             ; preds = %3444
  %3723 = landingpad { ptr, i32 }
          cleanup
  %3724 = extractvalue { ptr, i32 } %3723, 0
  store ptr %3724, ptr %4, align 8
  %3725 = extractvalue { ptr, i32 } %3723, 1
  store i32 %3725, ptr %5, align 4
  br label %3757

3726:                                             ; preds = %3445
  %3727 = landingpad { ptr, i32 }
          cleanup
  %3728 = extractvalue { ptr, i32 } %3727, 0
  store ptr %3728, ptr %4, align 8
  %3729 = extractvalue { ptr, i32 } %3727, 1
  store i32 %3729, ptr %5, align 4
  br label %3756

3730:                                             ; preds = %3448
  %3731 = landingpad { ptr, i32 }
          cleanup
  %3732 = extractvalue { ptr, i32 } %3731, 0
  store ptr %3732, ptr %4, align 8
  %3733 = extractvalue { ptr, i32 } %3731, 1
  store i32 %3733, ptr %5, align 4
  br label %3755

3734:                                             ; preds = %3449
  %3735 = landingpad { ptr, i32 }
          cleanup
  %3736 = extractvalue { ptr, i32 } %3735, 0
  store ptr %3736, ptr %4, align 8
  %3737 = extractvalue { ptr, i32 } %3735, 1
  store i32 %3737, ptr %5, align 4
  br label %3747

3738:                                             ; preds = %3456
  %3739 = landingpad { ptr, i32 }
          cleanup
  %3740 = extractvalue { ptr, i32 } %3739, 0
  store ptr %3740, ptr %4, align 8
  %3741 = extractvalue { ptr, i32 } %3739, 1
  store i32 %3741, ptr %5, align 4
  br label %3746

3742:                                             ; preds = %3457
  %3743 = landingpad { ptr, i32 }
          cleanup
  %3744 = extractvalue { ptr, i32 } %3743, 0
  store ptr %3744, ptr %4, align 8
  %3745 = extractvalue { ptr, i32 } %3743, 1
  store i32 %3745, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %425) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %412) #9
  br label %3746

3746:                                             ; preds = %3742, %3738
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %415) #9
  br label %3747

3747:                                             ; preds = %3746, %3734
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %424) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %424) #9
  %3748 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %417, i32 0, i32 0
  %3749 = getelementptr inbounds %"class.std::shared_ptr", ptr %3748, i64 2
  br label %3750

3750:                                             ; preds = %3750, %3747
  %3751 = phi ptr [ %3749, %3747 ], [ %3752, %3750 ]
  %3752 = getelementptr inbounds %"class.std::shared_ptr", ptr %3751, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3752) #9
  %3753 = icmp eq ptr %3752, %3748
  br i1 %3753, label %3754, label %3750

3754:                                             ; preds = %3750
  br label %3755

3755:                                             ; preds = %3754, %3730
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %421) #9
  br label %3756

3756:                                             ; preds = %3755, %3726
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %422) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %422) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %421) #9
  br label %3757

3757:                                             ; preds = %3756, %3722
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %419) #9
  br label %3758

3758:                                             ; preds = %3757, %3718
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %420) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %420) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %419) #9
  %3759 = load i1, ptr %423, align 1
  br i1 %3759, label %3760, label %3768

3760:                                             ; preds = %3758
  %3761 = load ptr, ptr %418, align 8
  %3762 = icmp eq ptr %417, %3761
  br i1 %3762, label %3767, label %3763

3763:                                             ; preds = %3763, %3760
  %3764 = phi ptr [ %3761, %3760 ], [ %3765, %3763 ]
  %3765 = getelementptr inbounds %"class.std::shared_ptr", ptr %3764, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3765) #9
  %3766 = icmp eq ptr %3765, %417
  br i1 %3766, label %3767, label %3763

3767:                                             ; preds = %3763, %3760
  br label %3768

3768:                                             ; preds = %3767, %3758
  call void @llvm.lifetime.end.p0(i64 32, ptr %417) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %413) #9
  br label %3769

3769:                                             ; preds = %3768, %3714
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %414) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %414) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %413) #9
  br label %6398

3770:                                             ; preds = %3465
  %3771 = landingpad { ptr, i32 }
          cleanup
  %3772 = extractvalue { ptr, i32 } %3771, 0
  store ptr %3772, ptr %4, align 8
  %3773 = extractvalue { ptr, i32 } %3771, 1
  store i32 %3773, ptr %5, align 4
  br label %3827

3774:                                             ; preds = %3470
  %3775 = landingpad { ptr, i32 }
          cleanup
  %3776 = extractvalue { ptr, i32 } %3775, 0
  store ptr %3776, ptr %4, align 8
  %3777 = extractvalue { ptr, i32 } %3775, 1
  store i32 %3777, ptr %5, align 4
  br label %3816

3778:                                             ; preds = %3472
  %3779 = landingpad { ptr, i32 }
          cleanup
  %3780 = extractvalue { ptr, i32 } %3779, 0
  store ptr %3780, ptr %4, align 8
  %3781 = extractvalue { ptr, i32 } %3779, 1
  store i32 %3781, ptr %5, align 4
  br label %3815

3782:                                             ; preds = %3473
  %3783 = landingpad { ptr, i32 }
          cleanup
  %3784 = extractvalue { ptr, i32 } %3783, 0
  store ptr %3784, ptr %4, align 8
  %3785 = extractvalue { ptr, i32 } %3783, 1
  store i32 %3785, ptr %5, align 4
  br label %3807

3786:                                             ; preds = %3481
  %3787 = landingpad { ptr, i32 }
          cleanup
  %3788 = extractvalue { ptr, i32 } %3787, 0
  store ptr %3788, ptr %4, align 8
  %3789 = extractvalue { ptr, i32 } %3787, 1
  store i32 %3789, ptr %5, align 4
  br label %3806

3790:                                             ; preds = %3482
  %3791 = landingpad { ptr, i32 }
          cleanup
  %3792 = extractvalue { ptr, i32 } %3791, 0
  store ptr %3792, ptr %4, align 8
  %3793 = extractvalue { ptr, i32 } %3791, 1
  store i32 %3793, ptr %5, align 4
  br label %3798

3794:                                             ; preds = %3489
  %3795 = landingpad { ptr, i32 }
          cleanup
  %3796 = extractvalue { ptr, i32 } %3795, 0
  store ptr %3796, ptr %4, align 8
  %3797 = extractvalue { ptr, i32 } %3795, 1
  store i32 %3797, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %427) #9
  br label %3798

3798:                                             ; preds = %3794, %3790
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %442) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %442) #9
  %3799 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %429, i32 0, i32 0
  %3800 = getelementptr inbounds %"class.std::shared_ptr", ptr %3799, i64 1
  br label %3801

3801:                                             ; preds = %3801, %3798
  %3802 = phi ptr [ %3800, %3798 ], [ %3803, %3801 ]
  %3803 = getelementptr inbounds %"class.std::shared_ptr", ptr %3802, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3803) #9
  %3804 = icmp eq ptr %3803, %3799
  br i1 %3804, label %3805, label %3801

3805:                                             ; preds = %3801
  br label %3806

3806:                                             ; preds = %3805, %3786
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %433) #9
  br label %3807

3807:                                             ; preds = %3806, %3782
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %440) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %440) #9
  %3808 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %435, i32 0, i32 0
  %3809 = getelementptr inbounds %"class.std::shared_ptr", ptr %3808, i64 2
  br label %3810

3810:                                             ; preds = %3810, %3807
  %3811 = phi ptr [ %3809, %3807 ], [ %3812, %3810 ]
  %3812 = getelementptr inbounds %"class.std::shared_ptr", ptr %3811, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3812) #9
  %3813 = icmp eq ptr %3812, %3808
  br i1 %3813, label %3814, label %3810

3814:                                             ; preds = %3810
  br label %3815

3815:                                             ; preds = %3814, %3778
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %437) #9
  br label %3816

3816:                                             ; preds = %3815, %3774
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %438) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %438) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %437) #9
  %3817 = load i1, ptr %439, align 1
  br i1 %3817, label %3818, label %3826

3818:                                             ; preds = %3816
  %3819 = load ptr, ptr %436, align 8
  %3820 = icmp eq ptr %435, %3819
  br i1 %3820, label %3825, label %3821

3821:                                             ; preds = %3821, %3818
  %3822 = phi ptr [ %3819, %3818 ], [ %3823, %3821 ]
  %3823 = getelementptr inbounds %"class.std::shared_ptr", ptr %3822, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3823) #9
  %3824 = icmp eq ptr %3823, %435
  br i1 %3824, label %3825, label %3821

3825:                                             ; preds = %3821, %3818
  br label %3826

3826:                                             ; preds = %3825, %3816
  call void @llvm.lifetime.end.p0(i64 32, ptr %435) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %431) #9
  br label %3827

3827:                                             ; preds = %3826, %3770
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %432) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %432) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %431) #9
  %3828 = load i1, ptr %441, align 1
  br i1 %3828, label %3829, label %3837

3829:                                             ; preds = %3827
  %3830 = load ptr, ptr %430, align 8
  %3831 = icmp eq ptr %429, %3830
  br i1 %3831, label %3836, label %3832

3832:                                             ; preds = %3832, %3829
  %3833 = phi ptr [ %3830, %3829 ], [ %3834, %3832 ]
  %3834 = getelementptr inbounds %"class.std::shared_ptr", ptr %3833, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3834) #9
  %3835 = icmp eq ptr %3834, %429
  br i1 %3835, label %3836, label %3832

3836:                                             ; preds = %3832, %3829
  br label %3837

3837:                                             ; preds = %3836, %3827
  call void @llvm.lifetime.end.p0(i64 16, ptr %429) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %427) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %426) #9
  br label %6398

3838:                                             ; preds = %3546, %3506
  %3839 = landingpad { ptr, i32 }
          catch ptr null
  %3840 = extractvalue { ptr, i32 } %3839, 0
  store ptr %3840, ptr %4, align 8
  %3841 = extractvalue { ptr, i32 } %3839, 1
  store i32 %3841, ptr %5, align 4
  br label %3909

3842:                                             ; preds = %3508
  %3843 = landingpad { ptr, i32 }
          catch ptr null
  %3844 = extractvalue { ptr, i32 } %3843, 0
  store ptr %3844, ptr %4, align 8
  %3845 = extractvalue { ptr, i32 } %3843, 1
  store i32 %3845, ptr %5, align 4
  br label %3884

3846:                                             ; preds = %3510
  %3847 = landingpad { ptr, i32 }
          catch ptr null
  %3848 = extractvalue { ptr, i32 } %3847, 0
  store ptr %3848, ptr %4, align 8
  %3849 = extractvalue { ptr, i32 } %3847, 1
  store i32 %3849, ptr %5, align 4
  br label %3883

3850:                                             ; preds = %3511
  %3851 = landingpad { ptr, i32 }
          catch ptr null
  %3852 = extractvalue { ptr, i32 } %3851, 0
  store ptr %3852, ptr %4, align 8
  %3853 = extractvalue { ptr, i32 } %3851, 1
  store i32 %3853, ptr %5, align 4
  br label %3882

3854:                                             ; preds = %3512
  %3855 = landingpad { ptr, i32 }
          catch ptr null
  %3856 = extractvalue { ptr, i32 } %3855, 0
  store ptr %3856, ptr %4, align 8
  %3857 = extractvalue { ptr, i32 } %3855, 1
  store i32 %3857, ptr %5, align 4
  br label %3874

3858:                                             ; preds = %3519
  %3859 = landingpad { ptr, i32 }
          catch ptr null
  %3860 = extractvalue { ptr, i32 } %3859, 0
  store ptr %3860, ptr %4, align 8
  %3861 = extractvalue { ptr, i32 } %3859, 1
  store i32 %3861, ptr %5, align 4
  br label %3866

3862:                                             ; preds = %3528, %3526
  %3863 = landingpad { ptr, i32 }
          catch ptr null
  %3864 = extractvalue { ptr, i32 } %3863, 0
  store ptr %3864, ptr %4, align 8
  %3865 = extractvalue { ptr, i32 } %3863, 1
  store i32 %3865, ptr %5, align 4
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %444) #9
  br label %3866

3866:                                             ; preds = %3862, %3858
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %457) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %457) #9
  %3867 = getelementptr inbounds [1 x %"class.std::vector"], ptr %446, i32 0, i32 0
  %3868 = getelementptr inbounds %"class.std::vector", ptr %3867, i64 1
  br label %3869

3869:                                             ; preds = %3869, %3866
  %3870 = phi ptr [ %3868, %3866 ], [ %3871, %3869 ]
  %3871 = getelementptr inbounds %"class.std::vector", ptr %3870, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3871) #9
  %3872 = icmp eq ptr %3871, %3867
  br i1 %3872, label %3873, label %3869

3873:                                             ; preds = %3869
  br label %3874

3874:                                             ; preds = %3873, %3854
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %455) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %455) #9
  %3875 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %449, i32 0, i32 0
  %3876 = getelementptr inbounds %"struct.std::pair", ptr %3875, i64 1
  br label %3877

3877:                                             ; preds = %3877, %3874
  %3878 = phi ptr [ %3876, %3874 ], [ %3879, %3877 ]
  %3879 = getelementptr inbounds %"struct.std::pair", ptr %3878, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3879) #9
  %3880 = icmp eq ptr %3879, %3875
  br i1 %3880, label %3881, label %3877

3881:                                             ; preds = %3877
  br label %3882

3882:                                             ; preds = %3881, %3850
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %451) #9
  br label %3883

3883:                                             ; preds = %3882, %3846
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %452) #9
  br label %3884

3884:                                             ; preds = %3883, %3842
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %453) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %453) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %452) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %451) #9
  %3885 = load i1, ptr %454, align 1
  br i1 %3885, label %3886, label %3894

3886:                                             ; preds = %3884
  %3887 = load ptr, ptr %450, align 8
  %3888 = icmp eq ptr %449, %3887
  br i1 %3888, label %3893, label %3889

3889:                                             ; preds = %3889, %3886
  %3890 = phi ptr [ %3887, %3886 ], [ %3891, %3889 ]
  %3891 = getelementptr inbounds %"struct.std::pair", ptr %3890, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3891) #9
  %3892 = icmp eq ptr %3891, %449
  br i1 %3892, label %3893, label %3889

3893:                                             ; preds = %3889, %3886
  br label %3894

3894:                                             ; preds = %3893, %3884
  call void @llvm.lifetime.end.p0(i64 32, ptr %449) #9
  %3895 = load i1, ptr %456, align 1
  br i1 %3895, label %3896, label %3904

3896:                                             ; preds = %3894
  %3897 = load ptr, ptr %447, align 8
  %3898 = icmp eq ptr %446, %3897
  br i1 %3898, label %3903, label %3899

3899:                                             ; preds = %3899, %3896
  %3900 = phi ptr [ %3897, %3896 ], [ %3901, %3899 ]
  %3901 = getelementptr inbounds %"class.std::vector", ptr %3900, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3901) #9
  %3902 = icmp eq ptr %3901, %446
  br i1 %3902, label %3903, label %3899

3903:                                             ; preds = %3899, %3896
  br label %3904

3904:                                             ; preds = %3903, %3894
  call void @llvm.lifetime.end.p0(i64 24, ptr %446) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %443) #9
  br label %3909

3905:                                             ; preds = %3553, %3551, %3548
  %3906 = landingpad { ptr, i32 }
          catch ptr null
  %3907 = extractvalue { ptr, i32 } %3906, 0
  store ptr %3907, ptr %4, align 8
  %3908 = extractvalue { ptr, i32 } %3906, 1
  store i32 %3908, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %458) #9
  br label %3909

3909:                                             ; preds = %3905, %3904, %3838
  %3910 = load ptr, ptr %4, align 8
  %3911 = call ptr @__cxa_begin_catch(ptr %3910) #9
  %3912 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %3913 unwind label %3984

3913:                                             ; preds = %3909
  %3914 = load ptr, ptr %3912, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %459) #9
  %3915 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %3916 unwind label %3988

3916:                                             ; preds = %3913
  %3917 = load ptr, ptr %3915, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %459, ptr noundef nonnull align 8 dereferenceable(30) %3917, i32 noundef 2427)
          to label %3918 unwind label %3988

3918:                                             ; preds = %3916
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %3914, ptr noundef nonnull align 8 dereferenceable(30) %459, ptr noundef @.str.531)
          to label %3919 unwind label %3988

3919:                                             ; preds = %3918
  call void @llvm.lifetime.end.p0(i64 32, ptr %459) #9
  invoke void @__cxa_end_catch()
          to label %3920 unwind label %1142

3920:                                             ; preds = %3919
  br label %3921

3921:                                             ; preds = %3983, %3920
  br label %3922

3922:                                             ; preds = %3921
  br label %3923

3923:                                             ; preds = %3922
  %3924 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %3924)
          to label %3925 unwind label %1142

3925:                                             ; preds = %3923
  call void @llvm.lifetime.start.p0(i64 16, ptr %460) #9
  %3926 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  %3927 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %3928 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %461) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %463) #9
  store i1 true, ptr %477, align 1
  store ptr %463, ptr %464, align 8
  %3929 = 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 %465) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %466) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %466) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %465, ptr noundef @.str.532, ptr noundef nonnull align 1 dereferenceable(1) %466)
          to label %3930 unwind label %3994

3930:                                             ; preds = %3925
  call void @llvm.lifetime.start.p0(i64 32, ptr %469) #9
  store i1 true, ptr %475, align 1
  store ptr %469, ptr %470, align 8
  %3931 = 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 %471) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %472) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %472) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %471, ptr noundef @.str.137, ptr noundef nonnull align 1 dereferenceable(1) %472)
          to label %3932 unwind label %3998

3932:                                             ; preds = %3930
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %469, ptr noundef nonnull align 8 dereferenceable(33088) %3931, ptr noundef nonnull align 8 dereferenceable(32) %471)
          to label %3933 unwind label %4002

3933:                                             ; preds = %3932
  %3934 = getelementptr inbounds %"class.std::shared_ptr", ptr %469, i64 1
  store ptr %3934, ptr %470, align 8
  %3935 = 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 %473) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %474) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %474) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %473, ptr noundef @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %474)
          to label %3936 unwind label %4006

3936:                                             ; preds = %3933
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %3934, ptr noundef nonnull align 8 dereferenceable(33088) %3935, ptr noundef nonnull align 8 dereferenceable(32) %473)
          to label %3937 unwind label %4010

3937:                                             ; preds = %3936
  store i1 false, ptr %475, align 1
  %3938 = getelementptr inbounds %"class.std::initializer_list.94", ptr %468, i32 0, i32 0
  store ptr %469, ptr %3938, align 8, !tbaa !9
  %3939 = getelementptr inbounds %"class.std::initializer_list.94", ptr %468, i32 0, i32 1
  store i64 2, ptr %3939, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %476) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %476) #9
  %3940 = getelementptr inbounds { ptr, i64 }, ptr %468, i32 0, i32 0
  %3941 = load ptr, ptr %3940, align 8
  %3942 = getelementptr inbounds { ptr, i64 }, ptr %468, i32 0, i32 1
  %3943 = load i64, ptr %3942, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %467, ptr %3941, i64 %3943, ptr noundef nonnull align 1 dereferenceable(1) %476)
          to label %3944 unwind label %4014

3944:                                             ; preds = %3937
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %463, ptr noundef nonnull align 8 dereferenceable(33088) %3929, ptr noundef nonnull align 8 dereferenceable(32) %465, ptr noundef %467)
          to label %3945 unwind label %4018

3945:                                             ; preds = %3944
  store i1 false, ptr %477, align 1
  %3946 = getelementptr inbounds %"class.std::initializer_list.94", ptr %462, i32 0, i32 0
  store ptr %463, ptr %3946, align 8, !tbaa !9
  %3947 = getelementptr inbounds %"class.std::initializer_list.94", ptr %462, i32 0, i32 1
  store i64 1, ptr %3947, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %478) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %478) #9
  %3948 = getelementptr inbounds { ptr, i64 }, ptr %462, i32 0, i32 0
  %3949 = load ptr, ptr %3948, align 8
  %3950 = getelementptr inbounds { ptr, i64 }, ptr %462, i32 0, i32 1
  %3951 = load i64, ptr %3950, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %461, ptr %3949, i64 %3951, ptr noundef nonnull align 1 dereferenceable(1) %478)
          to label %3952 unwind label %4022

3952:                                             ; preds = %3945
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %460, ptr noundef nonnull align 8 dereferenceable(64) %3926, ptr noundef %3927, ptr noundef %3928, ptr noundef nonnull align 8 dereferenceable(24) %461, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %3953 unwind label %4026

3953:                                             ; preds = %3952
  %3954 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %460) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %460) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %461) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %478) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %478) #9
  %3955 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %463, i32 0, i32 0
  %3956 = getelementptr inbounds %"class.std::shared_ptr", ptr %3955, i64 1
  br label %3957

3957:                                             ; preds = %3957, %3953
  %3958 = phi ptr [ %3956, %3953 ], [ %3959, %3957 ]
  %3959 = getelementptr inbounds %"class.std::shared_ptr", ptr %3958, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3959) #9
  %3960 = icmp eq ptr %3959, %3955
  br i1 %3960, label %3961, label %3957

3961:                                             ; preds = %3957
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %467) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %476) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %476) #9
  %3962 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %469, i32 0, i32 0
  %3963 = getelementptr inbounds %"class.std::shared_ptr", ptr %3962, i64 2
  br label %3964

3964:                                             ; preds = %3964, %3961
  %3965 = phi ptr [ %3963, %3961 ], [ %3966, %3964 ]
  %3966 = getelementptr inbounds %"class.std::shared_ptr", ptr %3965, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3966) #9
  %3967 = icmp eq ptr %3966, %3962
  br i1 %3967, label %3968, label %3964

3968:                                             ; preds = %3964
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %473) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %474) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %474) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %473) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %471) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %472) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %472) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %471) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %469) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %465) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %466) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %466) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %465) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %463) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %461) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %460) #9
  br label %3969

3969:                                             ; preds = %3968
  call void @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %479, ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  %3970 = call noundef zeroext i1 @_ZN25SuiteHtnGoalResolverTests6IsTrueESt10shared_ptrISt6vectorIS1_ISt4pairIS0_I7HtnTermES4_ESaIS5_EESaIS7_EEE(ptr noundef %479)
  %3971 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %3970)
          to label %3972 unwind label %4072

3972:                                             ; preds = %3969
  %3973 = xor i1 %3971, true
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %479) #9
  br i1 %3973, label %3974, label %4210

3974:                                             ; preds = %3972
  %3975 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %3976 unwind label %4076

3976:                                             ; preds = %3974
  %3977 = load ptr, ptr %3975, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %480) #9
  %3978 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %3979 unwind label %4080

3979:                                             ; preds = %3976
  %3980 = load ptr, ptr %3978, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %480, ptr noundef nonnull align 8 dereferenceable(30) %3980, i32 noundef 2432)
          to label %3981 unwind label %4080

3981:                                             ; preds = %3979
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %3977, ptr noundef nonnull align 8 dereferenceable(30) %480, ptr noundef @.str.507)
          to label %3982 unwind label %4080

3982:                                             ; preds = %3981
  call void @llvm.lifetime.end.p0(i64 32, ptr %480) #9
  br label %4210

3983:                                             ; preds = %3554, %3545
  br label %3921

3984:                                             ; preds = %3909
  %3985 = landingpad { ptr, i32 }
          cleanup
  %3986 = extractvalue { ptr, i32 } %3985, 0
  store ptr %3986, ptr %4, align 8
  %3987 = extractvalue { ptr, i32 } %3985, 1
  store i32 %3987, ptr %5, align 4
  br label %3992

3988:                                             ; preds = %3918, %3916, %3913
  %3989 = landingpad { ptr, i32 }
          cleanup
  %3990 = extractvalue { ptr, i32 } %3989, 0
  store ptr %3990, ptr %4, align 8
  %3991 = extractvalue { ptr, i32 } %3989, 1
  store i32 %3991, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %459) #9
  br label %3992

3992:                                             ; preds = %3988, %3984
  invoke void @__cxa_end_catch()
          to label %3993 unwind label %6410

3993:                                             ; preds = %3992
  br label %6398

3994:                                             ; preds = %3925
  %3995 = landingpad { ptr, i32 }
          cleanup
  %3996 = extractvalue { ptr, i32 } %3995, 0
  store ptr %3996, ptr %4, align 8
  %3997 = extractvalue { ptr, i32 } %3995, 1
  store i32 %3997, ptr %5, align 4
  br label %4061

3998:                                             ; preds = %3930
  %3999 = landingpad { ptr, i32 }
          cleanup
  %4000 = extractvalue { ptr, i32 } %3999, 0
  store ptr %4000, ptr %4, align 8
  %4001 = extractvalue { ptr, i32 } %3999, 1
  store i32 %4001, ptr %5, align 4
  br label %4050

4002:                                             ; preds = %3932
  %4003 = landingpad { ptr, i32 }
          cleanup
  %4004 = extractvalue { ptr, i32 } %4003, 0
  store ptr %4004, ptr %4, align 8
  %4005 = extractvalue { ptr, i32 } %4003, 1
  store i32 %4005, ptr %5, align 4
  br label %4049

4006:                                             ; preds = %3933
  %4007 = landingpad { ptr, i32 }
          cleanup
  %4008 = extractvalue { ptr, i32 } %4007, 0
  store ptr %4008, ptr %4, align 8
  %4009 = extractvalue { ptr, i32 } %4007, 1
  store i32 %4009, ptr %5, align 4
  br label %4048

4010:                                             ; preds = %3936
  %4011 = landingpad { ptr, i32 }
          cleanup
  %4012 = extractvalue { ptr, i32 } %4011, 0
  store ptr %4012, ptr %4, align 8
  %4013 = extractvalue { ptr, i32 } %4011, 1
  store i32 %4013, ptr %5, align 4
  br label %4047

4014:                                             ; preds = %3937
  %4015 = landingpad { ptr, i32 }
          cleanup
  %4016 = extractvalue { ptr, i32 } %4015, 0
  store ptr %4016, ptr %4, align 8
  %4017 = extractvalue { ptr, i32 } %4015, 1
  store i32 %4017, ptr %5, align 4
  br label %4039

4018:                                             ; preds = %3944
  %4019 = landingpad { ptr, i32 }
          cleanup
  %4020 = extractvalue { ptr, i32 } %4019, 0
  store ptr %4020, ptr %4, align 8
  %4021 = extractvalue { ptr, i32 } %4019, 1
  store i32 %4021, ptr %5, align 4
  br label %4038

4022:                                             ; preds = %3945
  %4023 = landingpad { ptr, i32 }
          cleanup
  %4024 = extractvalue { ptr, i32 } %4023, 0
  store ptr %4024, ptr %4, align 8
  %4025 = extractvalue { ptr, i32 } %4023, 1
  store i32 %4025, ptr %5, align 4
  br label %4030

4026:                                             ; preds = %3952
  %4027 = landingpad { ptr, i32 }
          cleanup
  %4028 = extractvalue { ptr, i32 } %4027, 0
  store ptr %4028, ptr %4, align 8
  %4029 = extractvalue { ptr, i32 } %4027, 1
  store i32 %4029, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %461) #9
  br label %4030

4030:                                             ; preds = %4026, %4022
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %478) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %478) #9
  %4031 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %463, i32 0, i32 0
  %4032 = getelementptr inbounds %"class.std::shared_ptr", ptr %4031, i64 1
  br label %4033

4033:                                             ; preds = %4033, %4030
  %4034 = phi ptr [ %4032, %4030 ], [ %4035, %4033 ]
  %4035 = getelementptr inbounds %"class.std::shared_ptr", ptr %4034, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4035) #9
  %4036 = icmp eq ptr %4035, %4031
  br i1 %4036, label %4037, label %4033

4037:                                             ; preds = %4033
  br label %4038

4038:                                             ; preds = %4037, %4018
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %467) #9
  br label %4039

4039:                                             ; preds = %4038, %4014
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %476) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %476) #9
  %4040 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %469, i32 0, i32 0
  %4041 = getelementptr inbounds %"class.std::shared_ptr", ptr %4040, i64 2
  br label %4042

4042:                                             ; preds = %4042, %4039
  %4043 = phi ptr [ %4041, %4039 ], [ %4044, %4042 ]
  %4044 = getelementptr inbounds %"class.std::shared_ptr", ptr %4043, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4044) #9
  %4045 = icmp eq ptr %4044, %4040
  br i1 %4045, label %4046, label %4042

4046:                                             ; preds = %4042
  br label %4047

4047:                                             ; preds = %4046, %4010
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %473) #9
  br label %4048

4048:                                             ; preds = %4047, %4006
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %474) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %474) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %473) #9
  br label %4049

4049:                                             ; preds = %4048, %4002
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %471) #9
  br label %4050

4050:                                             ; preds = %4049, %3998
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %472) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %472) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %471) #9
  %4051 = load i1, ptr %475, align 1
  br i1 %4051, label %4052, label %4060

4052:                                             ; preds = %4050
  %4053 = load ptr, ptr %470, align 8
  %4054 = icmp eq ptr %469, %4053
  br i1 %4054, label %4059, label %4055

4055:                                             ; preds = %4055, %4052
  %4056 = phi ptr [ %4053, %4052 ], [ %4057, %4055 ]
  %4057 = getelementptr inbounds %"class.std::shared_ptr", ptr %4056, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4057) #9
  %4058 = icmp eq ptr %4057, %469
  br i1 %4058, label %4059, label %4055

4059:                                             ; preds = %4055, %4052
  br label %4060

4060:                                             ; preds = %4059, %4050
  call void @llvm.lifetime.end.p0(i64 32, ptr %469) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %465) #9
  br label %4061

4061:                                             ; preds = %4060, %3994
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %466) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %466) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %465) #9
  %4062 = load i1, ptr %477, align 1
  br i1 %4062, label %4063, label %4071

4063:                                             ; preds = %4061
  %4064 = load ptr, ptr %464, align 8
  %4065 = icmp eq ptr %463, %4064
  br i1 %4065, label %4070, label %4066

4066:                                             ; preds = %4066, %4063
  %4067 = phi ptr [ %4064, %4063 ], [ %4068, %4066 ]
  %4068 = getelementptr inbounds %"class.std::shared_ptr", ptr %4067, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4068) #9
  %4069 = icmp eq ptr %4068, %463
  br i1 %4069, label %4070, label %4066

4070:                                             ; preds = %4066, %4063
  br label %4071

4071:                                             ; preds = %4070, %4061
  call void @llvm.lifetime.end.p0(i64 16, ptr %463) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %461) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %460) #9
  br label %6398

4072:                                             ; preds = %3969
  %4073 = landingpad { ptr, i32 }
          catch ptr null
  %4074 = extractvalue { ptr, i32 } %4073, 0
  store ptr %4074, ptr %4, align 8
  %4075 = extractvalue { ptr, i32 } %4073, 1
  store i32 %4075, ptr %5, align 4
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %479) #9
  br label %4084

4076:                                             ; preds = %3974
  %4077 = landingpad { ptr, i32 }
          catch ptr null
  %4078 = extractvalue { ptr, i32 } %4077, 0
  store ptr %4078, ptr %4, align 8
  %4079 = extractvalue { ptr, i32 } %4077, 1
  store i32 %4079, ptr %5, align 4
  br label %4084

4080:                                             ; preds = %3981, %3979, %3976
  %4081 = landingpad { ptr, i32 }
          catch ptr null
  %4082 = extractvalue { ptr, i32 } %4081, 0
  store ptr %4082, ptr %4, align 8
  %4083 = extractvalue { ptr, i32 } %4081, 1
  store i32 %4083, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %480) #9
  br label %4084

4084:                                             ; preds = %4080, %4076, %4072
  %4085 = load ptr, ptr %4, align 8
  %4086 = call ptr @__cxa_begin_catch(ptr %4085) #9
  %4087 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %4088 unwind label %4211

4088:                                             ; preds = %4084
  %4089 = load ptr, ptr %4087, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %481) #9
  %4090 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %4091 unwind label %4215

4091:                                             ; preds = %4088
  %4092 = load ptr, ptr %4090, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %481, ptr noundef nonnull align 8 dereferenceable(30) %4092, i32 noundef 2432)
          to label %4093 unwind label %4215

4093:                                             ; preds = %4091
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %4089, ptr noundef nonnull align 8 dereferenceable(30) %481, ptr noundef @.str.508)
          to label %4094 unwind label %4215

4094:                                             ; preds = %4093
  call void @llvm.lifetime.end.p0(i64 32, ptr %481) #9
  invoke void @__cxa_end_catch()
          to label %4095 unwind label %1142

4095:                                             ; preds = %4094
  br label %4096

4096:                                             ; preds = %4210, %4095
  br label %4097

4097:                                             ; preds = %4096
  br label %4098

4098:                                             ; preds = %4097
  %4099 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %4099)
          to label %4100 unwind label %1142

4100:                                             ; preds = %4098
  %4101 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %4102 = 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 %483) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %484) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %484) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %483, ptr noundef @.str.533, ptr noundef nonnull align 1 dereferenceable(1) %484)
          to label %4103 unwind label %4221

4103:                                             ; preds = %4100
  call void @llvm.lifetime.start.p0(i64 32, ptr %487) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %487, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  %4104 = getelementptr inbounds %"class.std::shared_ptr", ptr %487, i64 1
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4104, ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  %4105 = getelementptr inbounds %"class.std::initializer_list.94", ptr %486, i32 0, i32 0
  store ptr %487, ptr %4105, align 8, !tbaa !9
  %4106 = getelementptr inbounds %"class.std::initializer_list.94", ptr %486, i32 0, i32 1
  store i64 2, ptr %4106, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %488) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %488) #9
  %4107 = getelementptr inbounds { ptr, i64 }, ptr %486, i32 0, i32 0
  %4108 = load ptr, ptr %4107, align 8
  %4109 = getelementptr inbounds { ptr, i64 }, ptr %486, i32 0, i32 1
  %4110 = load i64, ptr %4109, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %485, ptr %4108, i64 %4110, ptr noundef nonnull align 1 dereferenceable(1) %488)
          to label %4111 unwind label %4225

4111:                                             ; preds = %4103
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %482, ptr noundef nonnull align 8 dereferenceable(33088) %4102, ptr noundef nonnull align 8 dereferenceable(32) %483, ptr noundef %485)
          to label %4112 unwind label %4229

4112:                                             ; preds = %4111
  call void @llvm.lifetime.start.p0(i64 16, ptr %491) #9
  store i1 true, ptr %499, align 1
  store ptr %491, ptr %492, align 8
  %4113 = 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 %493) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %494) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %494) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %493, ptr noundef @.str.136, ptr noundef nonnull align 1 dereferenceable(1) %494)
          to label %4114 unwind label %4233

4114:                                             ; preds = %4112
  call void @llvm.lifetime.start.p0(i64 32, ptr %497) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %497, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  %4115 = getelementptr inbounds %"class.std::shared_ptr", ptr %497, i64 1
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4115, ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  %4116 = getelementptr inbounds %"class.std::initializer_list.94", ptr %496, i32 0, i32 0
  store ptr %497, ptr %4116, align 8, !tbaa !9
  %4117 = getelementptr inbounds %"class.std::initializer_list.94", ptr %496, i32 0, i32 1
  store i64 2, ptr %4117, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %498) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %498) #9
  %4118 = getelementptr inbounds { ptr, i64 }, ptr %496, i32 0, i32 0
  %4119 = load ptr, ptr %4118, align 8
  %4120 = getelementptr inbounds { ptr, i64 }, ptr %496, i32 0, i32 1
  %4121 = load i64, ptr %4120, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %495, ptr %4119, i64 %4121, ptr noundef nonnull align 1 dereferenceable(1) %498)
          to label %4122 unwind label %4237

4122:                                             ; preds = %4114
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %491, ptr noundef nonnull align 8 dereferenceable(33088) %4113, ptr noundef nonnull align 8 dereferenceable(32) %493, ptr noundef %495)
          to label %4123 unwind label %4241

4123:                                             ; preds = %4122
  store i1 false, ptr %499, align 1
  %4124 = getelementptr inbounds %"class.std::initializer_list.94", ptr %490, i32 0, i32 0
  store ptr %491, ptr %4124, align 8, !tbaa !9
  %4125 = getelementptr inbounds %"class.std::initializer_list.94", ptr %490, i32 0, i32 1
  store i64 1, ptr %4125, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %500) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %500) #9
  %4126 = getelementptr inbounds { ptr, i64 }, ptr %490, i32 0, i32 0
  %4127 = load ptr, ptr %4126, align 8
  %4128 = getelementptr inbounds { ptr, i64 }, ptr %490, i32 0, i32 1
  %4129 = load i64, ptr %4128, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %489, ptr %4127, i64 %4129, ptr noundef nonnull align 1 dereferenceable(1) %500)
          to label %4130 unwind label %4245

4130:                                             ; preds = %4123
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %4101, ptr noundef %482, ptr noundef %489)
          to label %4131 unwind label %4249

4131:                                             ; preds = %4130
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %489) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %500) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %500) #9
  %4132 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %491, i32 0, i32 0
  %4133 = getelementptr inbounds %"class.std::shared_ptr", ptr %4132, i64 1
  br label %4134

4134:                                             ; preds = %4134, %4131
  %4135 = phi ptr [ %4133, %4131 ], [ %4136, %4134 ]
  %4136 = getelementptr inbounds %"class.std::shared_ptr", ptr %4135, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4136) #9
  %4137 = icmp eq ptr %4136, %4132
  br i1 %4137, label %4138, label %4134

4138:                                             ; preds = %4134
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %495) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %498) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %498) #9
  %4139 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %497, i32 0, i32 0
  %4140 = getelementptr inbounds %"class.std::shared_ptr", ptr %4139, i64 2
  br label %4141

4141:                                             ; preds = %4141, %4138
  %4142 = phi ptr [ %4140, %4138 ], [ %4143, %4141 ]
  %4143 = getelementptr inbounds %"class.std::shared_ptr", ptr %4142, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4143) #9
  %4144 = icmp eq ptr %4143, %4139
  br i1 %4144, label %4145, label %4141

4145:                                             ; preds = %4141
  call void @llvm.lifetime.end.p0(i64 32, ptr %497) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %493) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %494) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %494) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %493) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %491) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %482) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %485) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %488) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %488) #9
  %4146 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %487, i32 0, i32 0
  %4147 = getelementptr inbounds %"class.std::shared_ptr", ptr %4146, i64 2
  br label %4148

4148:                                             ; preds = %4148, %4145
  %4149 = phi ptr [ %4147, %4145 ], [ %4150, %4148 ]
  %4150 = getelementptr inbounds %"class.std::shared_ptr", ptr %4149, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4150) #9
  %4151 = icmp eq ptr %4150, %4146
  br i1 %4151, label %4152, label %4148

4152:                                             ; preds = %4148
  call void @llvm.lifetime.end.p0(i64 32, ptr %487) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %483) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %484) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %484) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %483) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %501) #9
  %4153 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  %4154 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %4155 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %502) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %504) #9
  store i1 true, ptr %518, align 1
  store ptr %504, ptr %505, align 8
  %4156 = 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 %506) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %507) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %507) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %506, ptr noundef @.str.533, ptr noundef nonnull align 1 dereferenceable(1) %507)
          to label %4157 unwind label %4291

4157:                                             ; preds = %4152
  call void @llvm.lifetime.start.p0(i64 32, ptr %510) #9
  store i1 true, ptr %516, align 1
  store ptr %510, ptr %511, align 8
  %4158 = 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 %512) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %513) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %513) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %512, ptr noundef @.str.137, ptr noundef nonnull align 1 dereferenceable(1) %513)
          to label %4159 unwind label %4295

4159:                                             ; preds = %4157
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %510, ptr noundef nonnull align 8 dereferenceable(33088) %4158, ptr noundef nonnull align 8 dereferenceable(32) %512)
          to label %4160 unwind label %4299

4160:                                             ; preds = %4159
  %4161 = getelementptr inbounds %"class.std::shared_ptr", ptr %510, i64 1
  store ptr %4161, ptr %511, align 8
  %4162 = 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 %514) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %515) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %515) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %514, ptr noundef @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %515)
          to label %4163 unwind label %4303

4163:                                             ; preds = %4160
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %4161, ptr noundef nonnull align 8 dereferenceable(33088) %4162, ptr noundef nonnull align 8 dereferenceable(32) %514)
          to label %4164 unwind label %4307

4164:                                             ; preds = %4163
  store i1 false, ptr %516, align 1
  %4165 = getelementptr inbounds %"class.std::initializer_list.94", ptr %509, i32 0, i32 0
  store ptr %510, ptr %4165, align 8, !tbaa !9
  %4166 = getelementptr inbounds %"class.std::initializer_list.94", ptr %509, i32 0, i32 1
  store i64 2, ptr %4166, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %517) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %517) #9
  %4167 = getelementptr inbounds { ptr, i64 }, ptr %509, i32 0, i32 0
  %4168 = load ptr, ptr %4167, align 8
  %4169 = getelementptr inbounds { ptr, i64 }, ptr %509, i32 0, i32 1
  %4170 = load i64, ptr %4169, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %508, ptr %4168, i64 %4170, ptr noundef nonnull align 1 dereferenceable(1) %517)
          to label %4171 unwind label %4311

4171:                                             ; preds = %4164
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %504, ptr noundef nonnull align 8 dereferenceable(33088) %4156, ptr noundef nonnull align 8 dereferenceable(32) %506, ptr noundef %508)
          to label %4172 unwind label %4315

4172:                                             ; preds = %4171
  store i1 false, ptr %518, align 1
  %4173 = getelementptr inbounds %"class.std::initializer_list.94", ptr %503, i32 0, i32 0
  store ptr %504, ptr %4173, align 8, !tbaa !9
  %4174 = getelementptr inbounds %"class.std::initializer_list.94", ptr %503, i32 0, i32 1
  store i64 1, ptr %4174, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %519) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %519) #9
  %4175 = getelementptr inbounds { ptr, i64 }, ptr %503, i32 0, i32 0
  %4176 = load ptr, ptr %4175, align 8
  %4177 = getelementptr inbounds { ptr, i64 }, ptr %503, i32 0, i32 1
  %4178 = load i64, ptr %4177, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %502, ptr %4176, i64 %4178, ptr noundef nonnull align 1 dereferenceable(1) %519)
          to label %4179 unwind label %4319

4179:                                             ; preds = %4172
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %501, ptr noundef nonnull align 8 dereferenceable(64) %4153, ptr noundef %4154, ptr noundef %4155, ptr noundef nonnull align 8 dereferenceable(24) %502, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %4180 unwind label %4323

4180:                                             ; preds = %4179
  %4181 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %501) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %501) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %502) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %519) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %519) #9
  %4182 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %504, i32 0, i32 0
  %4183 = getelementptr inbounds %"class.std::shared_ptr", ptr %4182, i64 1
  br label %4184

4184:                                             ; preds = %4184, %4180
  %4185 = phi ptr [ %4183, %4180 ], [ %4186, %4184 ]
  %4186 = getelementptr inbounds %"class.std::shared_ptr", ptr %4185, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4186) #9
  %4187 = icmp eq ptr %4186, %4182
  br i1 %4187, label %4188, label %4184

4188:                                             ; preds = %4184
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %508) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %517) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %517) #9
  %4189 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %510, i32 0, i32 0
  %4190 = getelementptr inbounds %"class.std::shared_ptr", ptr %4189, i64 2
  br label %4191

4191:                                             ; preds = %4191, %4188
  %4192 = phi ptr [ %4190, %4188 ], [ %4193, %4191 ]
  %4193 = getelementptr inbounds %"class.std::shared_ptr", ptr %4192, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4193) #9
  %4194 = icmp eq ptr %4193, %4189
  br i1 %4194, label %4195, label %4191

4195:                                             ; preds = %4191
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %514) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %515) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %515) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %514) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %512) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %513) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %513) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %512) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %510) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %506) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %507) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %507) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %506) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %504) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %502) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %501) #9
  br label %4196

4196:                                             ; preds = %4195
  call void @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %520, ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  %4197 = call noundef zeroext i1 @_ZN25SuiteHtnGoalResolverTests6IsTrueESt10shared_ptrISt6vectorIS1_ISt4pairIS0_I7HtnTermES4_ESaIS5_EESaIS7_EEE(ptr noundef %520)
  %4198 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %4197)
          to label %4199 unwind label %4369

4199:                                             ; preds = %4196
  %4200 = xor i1 %4198, true
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %520) #9
  br i1 %4200, label %4201, label %4697

4201:                                             ; preds = %4199
  %4202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %4203 unwind label %4373

4203:                                             ; preds = %4201
  %4204 = load ptr, ptr %4202, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %521) #9
  %4205 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %4206 unwind label %4377

4206:                                             ; preds = %4203
  %4207 = load ptr, ptr %4205, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %521, ptr noundef nonnull align 8 dereferenceable(30) %4207, i32 noundef 2440)
          to label %4208 unwind label %4377

4208:                                             ; preds = %4206
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %4204, ptr noundef nonnull align 8 dereferenceable(30) %521, ptr noundef @.str.507)
          to label %4209 unwind label %4377

4209:                                             ; preds = %4208
  call void @llvm.lifetime.end.p0(i64 32, ptr %521) #9
  br label %4697

4210:                                             ; preds = %3982, %3972
  br label %4096

4211:                                             ; preds = %4084
  %4212 = landingpad { ptr, i32 }
          cleanup
  %4213 = extractvalue { ptr, i32 } %4212, 0
  store ptr %4213, ptr %4, align 8
  %4214 = extractvalue { ptr, i32 } %4212, 1
  store i32 %4214, ptr %5, align 4
  br label %4219

4215:                                             ; preds = %4093, %4091, %4088
  %4216 = landingpad { ptr, i32 }
          cleanup
  %4217 = extractvalue { ptr, i32 } %4216, 0
  store ptr %4217, ptr %4, align 8
  %4218 = extractvalue { ptr, i32 } %4216, 1
  store i32 %4218, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %481) #9
  br label %4219

4219:                                             ; preds = %4215, %4211
  invoke void @__cxa_end_catch()
          to label %4220 unwind label %6410

4220:                                             ; preds = %4219
  br label %6398

4221:                                             ; preds = %4100
  %4222 = landingpad { ptr, i32 }
          cleanup
  %4223 = extractvalue { ptr, i32 } %4222, 0
  store ptr %4223, ptr %4, align 8
  %4224 = extractvalue { ptr, i32 } %4222, 1
  store i32 %4224, ptr %5, align 4
  br label %4290

4225:                                             ; preds = %4103
  %4226 = landingpad { ptr, i32 }
          cleanup
  %4227 = extractvalue { ptr, i32 } %4226, 0
  store ptr %4227, ptr %4, align 8
  %4228 = extractvalue { ptr, i32 } %4226, 1
  store i32 %4228, ptr %5, align 4
  br label %4282

4229:                                             ; preds = %4111
  %4230 = landingpad { ptr, i32 }
          cleanup
  %4231 = extractvalue { ptr, i32 } %4230, 0
  store ptr %4231, ptr %4, align 8
  %4232 = extractvalue { ptr, i32 } %4230, 1
  store i32 %4232, ptr %5, align 4
  br label %4281

4233:                                             ; preds = %4112
  %4234 = landingpad { ptr, i32 }
          cleanup
  %4235 = extractvalue { ptr, i32 } %4234, 0
  store ptr %4235, ptr %4, align 8
  %4236 = extractvalue { ptr, i32 } %4234, 1
  store i32 %4236, ptr %5, align 4
  br label %4270

4237:                                             ; preds = %4114
  %4238 = landingpad { ptr, i32 }
          cleanup
  %4239 = extractvalue { ptr, i32 } %4238, 0
  store ptr %4239, ptr %4, align 8
  %4240 = extractvalue { ptr, i32 } %4238, 1
  store i32 %4240, ptr %5, align 4
  br label %4262

4241:                                             ; preds = %4122
  %4242 = landingpad { ptr, i32 }
          cleanup
  %4243 = extractvalue { ptr, i32 } %4242, 0
  store ptr %4243, ptr %4, align 8
  %4244 = extractvalue { ptr, i32 } %4242, 1
  store i32 %4244, ptr %5, align 4
  br label %4261

4245:                                             ; preds = %4123
  %4246 = landingpad { ptr, i32 }
          cleanup
  %4247 = extractvalue { ptr, i32 } %4246, 0
  store ptr %4247, ptr %4, align 8
  %4248 = extractvalue { ptr, i32 } %4246, 1
  store i32 %4248, ptr %5, align 4
  br label %4253

4249:                                             ; preds = %4130
  %4250 = landingpad { ptr, i32 }
          cleanup
  %4251 = extractvalue { ptr, i32 } %4250, 0
  store ptr %4251, ptr %4, align 8
  %4252 = extractvalue { ptr, i32 } %4250, 1
  store i32 %4252, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %489) #9
  br label %4253

4253:                                             ; preds = %4249, %4245
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %500) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %500) #9
  %4254 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %491, i32 0, i32 0
  %4255 = getelementptr inbounds %"class.std::shared_ptr", ptr %4254, i64 1
  br label %4256

4256:                                             ; preds = %4256, %4253
  %4257 = phi ptr [ %4255, %4253 ], [ %4258, %4256 ]
  %4258 = getelementptr inbounds %"class.std::shared_ptr", ptr %4257, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4258) #9
  %4259 = icmp eq ptr %4258, %4254
  br i1 %4259, label %4260, label %4256

4260:                                             ; preds = %4256
  br label %4261

4261:                                             ; preds = %4260, %4241
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %495) #9
  br label %4262

4262:                                             ; preds = %4261, %4237
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %498) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %498) #9
  %4263 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %497, i32 0, i32 0
  %4264 = getelementptr inbounds %"class.std::shared_ptr", ptr %4263, i64 2
  br label %4265

4265:                                             ; preds = %4265, %4262
  %4266 = phi ptr [ %4264, %4262 ], [ %4267, %4265 ]
  %4267 = getelementptr inbounds %"class.std::shared_ptr", ptr %4266, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4267) #9
  %4268 = icmp eq ptr %4267, %4263
  br i1 %4268, label %4269, label %4265

4269:                                             ; preds = %4265
  call void @llvm.lifetime.end.p0(i64 32, ptr %497) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %493) #9
  br label %4270

4270:                                             ; preds = %4269, %4233
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %494) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %494) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %493) #9
  %4271 = load i1, ptr %499, align 1
  br i1 %4271, label %4272, label %4280

4272:                                             ; preds = %4270
  %4273 = load ptr, ptr %492, align 8
  %4274 = icmp eq ptr %491, %4273
  br i1 %4274, label %4279, label %4275

4275:                                             ; preds = %4275, %4272
  %4276 = phi ptr [ %4273, %4272 ], [ %4277, %4275 ]
  %4277 = getelementptr inbounds %"class.std::shared_ptr", ptr %4276, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4277) #9
  %4278 = icmp eq ptr %4277, %491
  br i1 %4278, label %4279, label %4275

4279:                                             ; preds = %4275, %4272
  br label %4280

4280:                                             ; preds = %4279, %4270
  call void @llvm.lifetime.end.p0(i64 16, ptr %491) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %482) #9
  br label %4281

4281:                                             ; preds = %4280, %4229
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %485) #9
  br label %4282

4282:                                             ; preds = %4281, %4225
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %488) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %488) #9
  %4283 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %487, i32 0, i32 0
  %4284 = getelementptr inbounds %"class.std::shared_ptr", ptr %4283, i64 2
  br label %4285

4285:                                             ; preds = %4285, %4282
  %4286 = phi ptr [ %4284, %4282 ], [ %4287, %4285 ]
  %4287 = getelementptr inbounds %"class.std::shared_ptr", ptr %4286, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4287) #9
  %4288 = icmp eq ptr %4287, %4283
  br i1 %4288, label %4289, label %4285

4289:                                             ; preds = %4285
  call void @llvm.lifetime.end.p0(i64 32, ptr %487) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %483) #9
  br label %4290

4290:                                             ; preds = %4289, %4221
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %484) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %484) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %483) #9
  br label %6398

4291:                                             ; preds = %4152
  %4292 = landingpad { ptr, i32 }
          cleanup
  %4293 = extractvalue { ptr, i32 } %4292, 0
  store ptr %4293, ptr %4, align 8
  %4294 = extractvalue { ptr, i32 } %4292, 1
  store i32 %4294, ptr %5, align 4
  br label %4358

4295:                                             ; preds = %4157
  %4296 = landingpad { ptr, i32 }
          cleanup
  %4297 = extractvalue { ptr, i32 } %4296, 0
  store ptr %4297, ptr %4, align 8
  %4298 = extractvalue { ptr, i32 } %4296, 1
  store i32 %4298, ptr %5, align 4
  br label %4347

4299:                                             ; preds = %4159
  %4300 = landingpad { ptr, i32 }
          cleanup
  %4301 = extractvalue { ptr, i32 } %4300, 0
  store ptr %4301, ptr %4, align 8
  %4302 = extractvalue { ptr, i32 } %4300, 1
  store i32 %4302, ptr %5, align 4
  br label %4346

4303:                                             ; preds = %4160
  %4304 = landingpad { ptr, i32 }
          cleanup
  %4305 = extractvalue { ptr, i32 } %4304, 0
  store ptr %4305, ptr %4, align 8
  %4306 = extractvalue { ptr, i32 } %4304, 1
  store i32 %4306, ptr %5, align 4
  br label %4345

4307:                                             ; preds = %4163
  %4308 = landingpad { ptr, i32 }
          cleanup
  %4309 = extractvalue { ptr, i32 } %4308, 0
  store ptr %4309, ptr %4, align 8
  %4310 = extractvalue { ptr, i32 } %4308, 1
  store i32 %4310, ptr %5, align 4
  br label %4344

4311:                                             ; preds = %4164
  %4312 = landingpad { ptr, i32 }
          cleanup
  %4313 = extractvalue { ptr, i32 } %4312, 0
  store ptr %4313, ptr %4, align 8
  %4314 = extractvalue { ptr, i32 } %4312, 1
  store i32 %4314, ptr %5, align 4
  br label %4336

4315:                                             ; preds = %4171
  %4316 = landingpad { ptr, i32 }
          cleanup
  %4317 = extractvalue { ptr, i32 } %4316, 0
  store ptr %4317, ptr %4, align 8
  %4318 = extractvalue { ptr, i32 } %4316, 1
  store i32 %4318, ptr %5, align 4
  br label %4335

4319:                                             ; preds = %4172
  %4320 = landingpad { ptr, i32 }
          cleanup
  %4321 = extractvalue { ptr, i32 } %4320, 0
  store ptr %4321, ptr %4, align 8
  %4322 = extractvalue { ptr, i32 } %4320, 1
  store i32 %4322, ptr %5, align 4
  br label %4327

4323:                                             ; preds = %4179
  %4324 = landingpad { ptr, i32 }
          cleanup
  %4325 = extractvalue { ptr, i32 } %4324, 0
  store ptr %4325, ptr %4, align 8
  %4326 = extractvalue { ptr, i32 } %4324, 1
  store i32 %4326, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %502) #9
  br label %4327

4327:                                             ; preds = %4323, %4319
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %519) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %519) #9
  %4328 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %504, i32 0, i32 0
  %4329 = getelementptr inbounds %"class.std::shared_ptr", ptr %4328, i64 1
  br label %4330

4330:                                             ; preds = %4330, %4327
  %4331 = phi ptr [ %4329, %4327 ], [ %4332, %4330 ]
  %4332 = getelementptr inbounds %"class.std::shared_ptr", ptr %4331, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4332) #9
  %4333 = icmp eq ptr %4332, %4328
  br i1 %4333, label %4334, label %4330

4334:                                             ; preds = %4330
  br label %4335

4335:                                             ; preds = %4334, %4315
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %508) #9
  br label %4336

4336:                                             ; preds = %4335, %4311
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %517) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %517) #9
  %4337 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %510, i32 0, i32 0
  %4338 = getelementptr inbounds %"class.std::shared_ptr", ptr %4337, i64 2
  br label %4339

4339:                                             ; preds = %4339, %4336
  %4340 = phi ptr [ %4338, %4336 ], [ %4341, %4339 ]
  %4341 = getelementptr inbounds %"class.std::shared_ptr", ptr %4340, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4341) #9
  %4342 = icmp eq ptr %4341, %4337
  br i1 %4342, label %4343, label %4339

4343:                                             ; preds = %4339
  br label %4344

4344:                                             ; preds = %4343, %4307
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %514) #9
  br label %4345

4345:                                             ; preds = %4344, %4303
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %515) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %515) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %514) #9
  br label %4346

4346:                                             ; preds = %4345, %4299
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %512) #9
  br label %4347

4347:                                             ; preds = %4346, %4295
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %513) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %513) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %512) #9
  %4348 = load i1, ptr %516, align 1
  br i1 %4348, label %4349, label %4357

4349:                                             ; preds = %4347
  %4350 = load ptr, ptr %511, align 8
  %4351 = icmp eq ptr %510, %4350
  br i1 %4351, label %4356, label %4352

4352:                                             ; preds = %4352, %4349
  %4353 = phi ptr [ %4350, %4349 ], [ %4354, %4352 ]
  %4354 = getelementptr inbounds %"class.std::shared_ptr", ptr %4353, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4354) #9
  %4355 = icmp eq ptr %4354, %510
  br i1 %4355, label %4356, label %4352

4356:                                             ; preds = %4352, %4349
  br label %4357

4357:                                             ; preds = %4356, %4347
  call void @llvm.lifetime.end.p0(i64 32, ptr %510) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %506) #9
  br label %4358

4358:                                             ; preds = %4357, %4291
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %507) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %507) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %506) #9
  %4359 = load i1, ptr %518, align 1
  br i1 %4359, label %4360, label %4368

4360:                                             ; preds = %4358
  %4361 = load ptr, ptr %505, align 8
  %4362 = icmp eq ptr %504, %4361
  br i1 %4362, label %4367, label %4363

4363:                                             ; preds = %4363, %4360
  %4364 = phi ptr [ %4361, %4360 ], [ %4365, %4363 ]
  %4365 = getelementptr inbounds %"class.std::shared_ptr", ptr %4364, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4365) #9
  %4366 = icmp eq ptr %4365, %504
  br i1 %4366, label %4367, label %4363

4367:                                             ; preds = %4363, %4360
  br label %4368

4368:                                             ; preds = %4367, %4358
  call void @llvm.lifetime.end.p0(i64 16, ptr %504) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %502) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %501) #9
  br label %6398

4369:                                             ; preds = %4196
  %4370 = landingpad { ptr, i32 }
          catch ptr null
  %4371 = extractvalue { ptr, i32 } %4370, 0
  store ptr %4371, ptr %4, align 8
  %4372 = extractvalue { ptr, i32 } %4370, 1
  store i32 %4372, ptr %5, align 4
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %520) #9
  br label %4381

4373:                                             ; preds = %4201
  %4374 = landingpad { ptr, i32 }
          catch ptr null
  %4375 = extractvalue { ptr, i32 } %4374, 0
  store ptr %4375, ptr %4, align 8
  %4376 = extractvalue { ptr, i32 } %4374, 1
  store i32 %4376, ptr %5, align 4
  br label %4381

4377:                                             ; preds = %4208, %4206, %4203
  %4378 = landingpad { ptr, i32 }
          catch ptr null
  %4379 = extractvalue { ptr, i32 } %4378, 0
  store ptr %4379, ptr %4, align 8
  %4380 = extractvalue { ptr, i32 } %4378, 1
  store i32 %4380, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %521) #9
  br label %4381

4381:                                             ; preds = %4377, %4373, %4369
  %4382 = load ptr, ptr %4, align 8
  %4383 = call ptr @__cxa_begin_catch(ptr %4382) #9
  %4384 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %4385 unwind label %4698

4385:                                             ; preds = %4381
  %4386 = load ptr, ptr %4384, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %522) #9
  %4387 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %4388 unwind label %4702

4388:                                             ; preds = %4385
  %4389 = load ptr, ptr %4387, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %522, ptr noundef nonnull align 8 dereferenceable(30) %4389, i32 noundef 2440)
          to label %4390 unwind label %4702

4390:                                             ; preds = %4388
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %4386, ptr noundef nonnull align 8 dereferenceable(30) %522, ptr noundef @.str.508)
          to label %4391 unwind label %4702

4391:                                             ; preds = %4390
  call void @llvm.lifetime.end.p0(i64 32, ptr %522) #9
  invoke void @__cxa_end_catch()
          to label %4392 unwind label %1142

4392:                                             ; preds = %4391
  br label %4393

4393:                                             ; preds = %4697, %4392
  br label %4394

4394:                                             ; preds = %4393
  br label %4395

4395:                                             ; preds = %4394
  %4396 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %4396)
          to label %4397 unwind label %1142

4397:                                             ; preds = %4395
  %4398 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %4399 = 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 %524) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %525) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %525) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %524, ptr noundef @.str.534, ptr noundef nonnull align 1 dereferenceable(1) %525)
          to label %4400 unwind label %4708

4400:                                             ; preds = %4397
  call void @llvm.lifetime.start.p0(i64 32, ptr %528) #9
  store i1 true, ptr %534, align 1
  store ptr %528, ptr %529, align 8
  %4401 = 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 %530) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %531) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %531) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %530, ptr noundef @.str.144, ptr noundef nonnull align 1 dereferenceable(1) %531)
          to label %4402 unwind label %4712

4402:                                             ; preds = %4400
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %528, ptr noundef nonnull align 8 dereferenceable(33088) %4401, ptr noundef nonnull align 8 dereferenceable(32) %530)
          to label %4403 unwind label %4716

4403:                                             ; preds = %4402
  %4404 = getelementptr inbounds %"class.std::shared_ptr", ptr %528, i64 1
  store ptr %4404, ptr %529, align 8
  %4405 = 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 %532) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %533) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %533) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %532, ptr noundef @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %533)
          to label %4406 unwind label %4720

4406:                                             ; preds = %4403
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %4404, ptr noundef nonnull align 8 dereferenceable(33088) %4405, ptr noundef nonnull align 8 dereferenceable(32) %532)
          to label %4407 unwind label %4724

4407:                                             ; preds = %4406
  store i1 false, ptr %534, align 1
  %4408 = getelementptr inbounds %"class.std::initializer_list.94", ptr %527, i32 0, i32 0
  store ptr %528, ptr %4408, align 8, !tbaa !9
  %4409 = getelementptr inbounds %"class.std::initializer_list.94", ptr %527, i32 0, i32 1
  store i64 2, ptr %4409, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %535) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %535) #9
  %4410 = getelementptr inbounds { ptr, i64 }, ptr %527, i32 0, i32 0
  %4411 = load ptr, ptr %4410, align 8
  %4412 = getelementptr inbounds { ptr, i64 }, ptr %527, i32 0, i32 1
  %4413 = load i64, ptr %4412, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %526, ptr %4411, i64 %4413, ptr noundef nonnull align 1 dereferenceable(1) %535)
          to label %4414 unwind label %4728

4414:                                             ; preds = %4407
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %523, ptr noundef nonnull align 8 dereferenceable(33088) %4399, ptr noundef nonnull align 8 dereferenceable(32) %524, ptr noundef %526)
          to label %4415 unwind label %4732

4415:                                             ; preds = %4414
  call void @llvm.memset.p0.i64(ptr align 8 %536, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %536) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %4398, ptr noundef %523, ptr noundef %536)
          to label %4416 unwind label %4736

4416:                                             ; preds = %4415
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %536) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %523) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %526) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %535) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %535) #9
  %4417 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %528, i32 0, i32 0
  %4418 = getelementptr inbounds %"class.std::shared_ptr", ptr %4417, i64 2
  br label %4419

4419:                                             ; preds = %4419, %4416
  %4420 = phi ptr [ %4418, %4416 ], [ %4421, %4419 ]
  %4421 = getelementptr inbounds %"class.std::shared_ptr", ptr %4420, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4421) #9
  %4422 = icmp eq ptr %4421, %4417
  br i1 %4422, label %4423, label %4419

4423:                                             ; preds = %4419
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %532) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %533) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %533) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %532) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %530) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %531) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %531) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %530) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %528) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %524) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %525) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %525) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %524) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %537) #9
  %4424 = 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 %538) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %539) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %539) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %538, ptr noundef @.str.136, ptr noundef nonnull align 1 dereferenceable(1) %539)
          to label %4425 unwind label %4764

4425:                                             ; preds = %4423
  call void @llvm.lifetime.start.p0(i64 32, ptr %542) #9
  store i1 true, ptr %548, align 1
  store ptr %542, ptr %543, align 8
  %4426 = 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 %544) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %545) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %545) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %544, ptr noundef @.str.535, ptr noundef nonnull align 1 dereferenceable(1) %545)
          to label %4427 unwind label %4768

4427:                                             ; preds = %4425
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %542, ptr noundef nonnull align 8 dereferenceable(33088) %4426, ptr noundef nonnull align 8 dereferenceable(32) %544)
          to label %4428 unwind label %4772

4428:                                             ; preds = %4427
  %4429 = getelementptr inbounds %"class.std::shared_ptr", ptr %542, i64 1
  store ptr %4429, ptr %543, align 8
  %4430 = 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 %546) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %547) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %547) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %546, ptr noundef @.str.144, ptr noundef nonnull align 1 dereferenceable(1) %547)
          to label %4431 unwind label %4776

4431:                                             ; preds = %4428
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %4429, ptr noundef nonnull align 8 dereferenceable(33088) %4430, ptr noundef nonnull align 8 dereferenceable(32) %546)
          to label %4432 unwind label %4780

4432:                                             ; preds = %4431
  store i1 false, ptr %548, align 1
  %4433 = getelementptr inbounds %"class.std::initializer_list.94", ptr %541, i32 0, i32 0
  store ptr %542, ptr %4433, align 8, !tbaa !9
  %4434 = getelementptr inbounds %"class.std::initializer_list.94", ptr %541, i32 0, i32 1
  store i64 2, ptr %4434, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %549) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %549) #9
  %4435 = getelementptr inbounds { ptr, i64 }, ptr %541, i32 0, i32 0
  %4436 = load ptr, ptr %4435, align 8
  %4437 = getelementptr inbounds { ptr, i64 }, ptr %541, i32 0, i32 1
  %4438 = load i64, ptr %4437, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %540, ptr %4436, i64 %4438, ptr noundef nonnull align 1 dereferenceable(1) %549)
          to label %4439 unwind label %4784

4439:                                             ; preds = %4432
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %537, ptr noundef nonnull align 8 dereferenceable(33088) %4424, ptr noundef nonnull align 8 dereferenceable(32) %538, ptr noundef %540)
          to label %4440 unwind label %4788

4440:                                             ; preds = %4439
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %540) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %549) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %549) #9
  %4441 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %542, i32 0, i32 0
  %4442 = getelementptr inbounds %"class.std::shared_ptr", ptr %4441, i64 2
  br label %4443

4443:                                             ; preds = %4443, %4440
  %4444 = phi ptr [ %4442, %4440 ], [ %4445, %4443 ]
  %4445 = getelementptr inbounds %"class.std::shared_ptr", ptr %4444, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4445) #9
  %4446 = icmp eq ptr %4445, %4441
  br i1 %4446, label %4447, label %4443

4447:                                             ; preds = %4443
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %546) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %547) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %547) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %546) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %544) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %545) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %545) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %544) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %542) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %538) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %539) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %539) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %538) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %550) #9
  %4448 = 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 %551) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %552) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %552) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %551, ptr noundef @.str.536, ptr noundef nonnull align 1 dereferenceable(1) %552)
          to label %4449 unwind label %4815

4449:                                             ; preds = %4447
  call void @llvm.lifetime.start.p0(i64 32, ptr %555) #9
  store i1 true, ptr %571, align 1
  store ptr %555, ptr %556, align 8
  %4450 = 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 %557) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %558) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %558) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %557, ptr noundef @.str.537, ptr noundef nonnull align 1 dereferenceable(1) %558)
          to label %4451 unwind label %4819

4451:                                             ; preds = %4449
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %555, ptr noundef nonnull align 8 dereferenceable(33088) %4450, ptr noundef nonnull align 8 dereferenceable(32) %557)
          to label %4452 unwind label %4823

4452:                                             ; preds = %4451
  %4453 = getelementptr inbounds %"class.std::shared_ptr", ptr %555, i64 1
  store ptr %4453, ptr %556, align 8
  %4454 = 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 %559) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %560) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %560) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %559, ptr noundef @.str.160, ptr noundef nonnull align 1 dereferenceable(1) %560)
          to label %4455 unwind label %4827

4455:                                             ; preds = %4452
  call void @llvm.lifetime.start.p0(i64 32, ptr %563) #9
  store i1 true, ptr %569, align 1
  store ptr %563, ptr %564, align 8
  %4456 = 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 %565) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %566) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %566) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %565, ptr noundef @.str.535, ptr noundef nonnull align 1 dereferenceable(1) %566)
          to label %4457 unwind label %4831

4457:                                             ; preds = %4455
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %563, ptr noundef nonnull align 8 dereferenceable(33088) %4456, ptr noundef nonnull align 8 dereferenceable(32) %565)
          to label %4458 unwind label %4835

4458:                                             ; preds = %4457
  %4459 = getelementptr inbounds %"class.std::shared_ptr", ptr %563, i64 1
  store ptr %4459, ptr %564, align 8
  %4460 = 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 %567) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %568) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %568) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %567, ptr noundef @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %568)
          to label %4461 unwind label %4839

4461:                                             ; preds = %4458
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %4459, ptr noundef nonnull align 8 dereferenceable(33088) %4460, ptr noundef nonnull align 8 dereferenceable(32) %567)
          to label %4462 unwind label %4843

4462:                                             ; preds = %4461
  store i1 false, ptr %569, align 1
  %4463 = getelementptr inbounds %"class.std::initializer_list.94", ptr %562, i32 0, i32 0
  store ptr %563, ptr %4463, align 8, !tbaa !9
  %4464 = getelementptr inbounds %"class.std::initializer_list.94", ptr %562, i32 0, i32 1
  store i64 2, ptr %4464, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %570) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %570) #9
  %4465 = getelementptr inbounds { ptr, i64 }, ptr %562, i32 0, i32 0
  %4466 = load ptr, ptr %4465, align 8
  %4467 = getelementptr inbounds { ptr, i64 }, ptr %562, i32 0, i32 1
  %4468 = load i64, ptr %4467, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %561, ptr %4466, i64 %4468, ptr noundef nonnull align 1 dereferenceable(1) %570)
          to label %4469 unwind label %4847

4469:                                             ; preds = %4462
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %4453, ptr noundef nonnull align 8 dereferenceable(33088) %4454, ptr noundef nonnull align 8 dereferenceable(32) %559, ptr noundef %561)
          to label %4470 unwind label %4851

4470:                                             ; preds = %4469
  store i1 false, ptr %571, align 1
  %4471 = getelementptr inbounds %"class.std::initializer_list.94", ptr %554, i32 0, i32 0
  store ptr %555, ptr %4471, align 8, !tbaa !9
  %4472 = getelementptr inbounds %"class.std::initializer_list.94", ptr %554, i32 0, i32 1
  store i64 2, ptr %4472, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %572) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %572) #9
  %4473 = getelementptr inbounds { ptr, i64 }, ptr %554, i32 0, i32 0
  %4474 = load ptr, ptr %4473, align 8
  %4475 = getelementptr inbounds { ptr, i64 }, ptr %554, i32 0, i32 1
  %4476 = load i64, ptr %4475, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %553, ptr %4474, i64 %4476, ptr noundef nonnull align 1 dereferenceable(1) %572)
          to label %4477 unwind label %4855

4477:                                             ; preds = %4470
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %550, ptr noundef nonnull align 8 dereferenceable(33088) %4448, ptr noundef nonnull align 8 dereferenceable(32) %551, ptr noundef %553)
          to label %4478 unwind label %4859

4478:                                             ; preds = %4477
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %553) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %572) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %572) #9
  %4479 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %555, i32 0, i32 0
  %4480 = getelementptr inbounds %"class.std::shared_ptr", ptr %4479, i64 2
  br label %4481

4481:                                             ; preds = %4481, %4478
  %4482 = phi ptr [ %4480, %4478 ], [ %4483, %4481 ]
  %4483 = getelementptr inbounds %"class.std::shared_ptr", ptr %4482, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4483) #9
  %4484 = icmp eq ptr %4483, %4479
  br i1 %4484, label %4485, label %4481

4485:                                             ; preds = %4481
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %561) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %570) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %570) #9
  %4486 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %563, i32 0, i32 0
  %4487 = getelementptr inbounds %"class.std::shared_ptr", ptr %4486, i64 2
  br label %4488

4488:                                             ; preds = %4488, %4485
  %4489 = phi ptr [ %4487, %4485 ], [ %4490, %4488 ]
  %4490 = getelementptr inbounds %"class.std::shared_ptr", ptr %4489, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4490) #9
  %4491 = icmp eq ptr %4490, %4486
  br i1 %4491, label %4492, label %4488

4492:                                             ; preds = %4488
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %567) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %568) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %568) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %567) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %565) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %566) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %566) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %565) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %563) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %559) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %560) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %560) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %559) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %557) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %558) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %558) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %557) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %555) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %551) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %552) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %552) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %551) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %573) #9
  %4493 = 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 %574) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %575) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %575) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %574, ptr noundef @.str.534, ptr noundef nonnull align 1 dereferenceable(1) %575)
          to label %4494 unwind label %4908

4494:                                             ; preds = %4492
  call void @llvm.lifetime.start.p0(i64 32, ptr %578) #9
  store i1 true, ptr %584, align 1
  store ptr %578, ptr %579, align 8
  %4495 = 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 %580) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %581) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %581) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %580, ptr noundef @.str.537, ptr noundef nonnull align 1 dereferenceable(1) %581)
          to label %4496 unwind label %4912

4496:                                             ; preds = %4494
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %578, ptr noundef nonnull align 8 dereferenceable(33088) %4495, ptr noundef nonnull align 8 dereferenceable(32) %580)
          to label %4497 unwind label %4916

4497:                                             ; preds = %4496
  %4498 = getelementptr inbounds %"class.std::shared_ptr", ptr %578, i64 1
  store ptr %4498, ptr %579, align 8
  %4499 = 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 %582) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %583) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %583) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %582, ptr noundef @.str.538, ptr noundef nonnull align 1 dereferenceable(1) %583)
          to label %4500 unwind label %4920

4500:                                             ; preds = %4497
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %4498, ptr noundef nonnull align 8 dereferenceable(33088) %4499, ptr noundef nonnull align 8 dereferenceable(32) %582)
          to label %4501 unwind label %4924

4501:                                             ; preds = %4500
  store i1 false, ptr %584, align 1
  %4502 = getelementptr inbounds %"class.std::initializer_list.94", ptr %577, i32 0, i32 0
  store ptr %578, ptr %4502, align 8, !tbaa !9
  %4503 = getelementptr inbounds %"class.std::initializer_list.94", ptr %577, i32 0, i32 1
  store i64 2, ptr %4503, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %585) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %585) #9
  %4504 = getelementptr inbounds { ptr, i64 }, ptr %577, i32 0, i32 0
  %4505 = load ptr, ptr %4504, align 8
  %4506 = getelementptr inbounds { ptr, i64 }, ptr %577, i32 0, i32 1
  %4507 = load i64, ptr %4506, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %576, ptr %4505, i64 %4507, ptr noundef nonnull align 1 dereferenceable(1) %585)
          to label %4508 unwind label %4928

4508:                                             ; preds = %4501
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %573, ptr noundef nonnull align 8 dereferenceable(33088) %4493, ptr noundef nonnull align 8 dereferenceable(32) %574, ptr noundef %576)
          to label %4509 unwind label %4932

4509:                                             ; preds = %4508
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %576) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %585) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %585) #9
  %4510 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %578, i32 0, i32 0
  %4511 = getelementptr inbounds %"class.std::shared_ptr", ptr %4510, i64 2
  br label %4512

4512:                                             ; preds = %4512, %4509
  %4513 = phi ptr [ %4511, %4509 ], [ %4514, %4512 ]
  %4514 = getelementptr inbounds %"class.std::shared_ptr", ptr %4513, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4514) #9
  %4515 = icmp eq ptr %4514, %4510
  br i1 %4515, label %4516, label %4512

4516:                                             ; preds = %4512
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %582) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %583) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %583) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %582) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %580) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %581) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %581) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %580) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %578) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %574) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %575) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %575) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %574) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %586) #9
  %4517 = 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 %587) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %588) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %588) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %587, ptr noundef @.str.536, ptr noundef nonnull align 1 dereferenceable(1) %588)
          to label %4518 unwind label %4959

4518:                                             ; preds = %4516
  call void @llvm.lifetime.start.p0(i64 32, ptr %591) #9
  store i1 true, ptr %607, align 1
  store ptr %591, ptr %592, align 8
  %4519 = 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 %593) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %594) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %594) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %593, ptr noundef @.str.539, ptr noundef nonnull align 1 dereferenceable(1) %594)
          to label %4520 unwind label %4963

4520:                                             ; preds = %4518
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %591, ptr noundef nonnull align 8 dereferenceable(33088) %4519, ptr noundef nonnull align 8 dereferenceable(32) %593)
          to label %4521 unwind label %4967

4521:                                             ; preds = %4520
  %4522 = getelementptr inbounds %"class.std::shared_ptr", ptr %591, i64 1
  store ptr %4522, ptr %592, align 8
  %4523 = 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 %595) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %596) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %596) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %595, ptr noundef @.str.160, ptr noundef nonnull align 1 dereferenceable(1) %596)
          to label %4524 unwind label %4971

4524:                                             ; preds = %4521
  call void @llvm.lifetime.start.p0(i64 32, ptr %599) #9
  store i1 true, ptr %605, align 1
  store ptr %599, ptr %600, align 8
  %4525 = 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 %601) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %602) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %602) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %601, ptr noundef @.str.535, ptr noundef nonnull align 1 dereferenceable(1) %602)
          to label %4526 unwind label %4975

4526:                                             ; preds = %4524
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %599, ptr noundef nonnull align 8 dereferenceable(33088) %4525, ptr noundef nonnull align 8 dereferenceable(32) %601)
          to label %4527 unwind label %4979

4527:                                             ; preds = %4526
  %4528 = getelementptr inbounds %"class.std::shared_ptr", ptr %599, i64 1
  store ptr %4528, ptr %600, align 8
  %4529 = 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 %603) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %604) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %604) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %603, ptr noundef @.str.538, ptr noundef nonnull align 1 dereferenceable(1) %604)
          to label %4530 unwind label %4983

4530:                                             ; preds = %4527
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %4528, ptr noundef nonnull align 8 dereferenceable(33088) %4529, ptr noundef nonnull align 8 dereferenceable(32) %603)
          to label %4531 unwind label %4987

4531:                                             ; preds = %4530
  store i1 false, ptr %605, align 1
  %4532 = getelementptr inbounds %"class.std::initializer_list.94", ptr %598, i32 0, i32 0
  store ptr %599, ptr %4532, align 8, !tbaa !9
  %4533 = getelementptr inbounds %"class.std::initializer_list.94", ptr %598, i32 0, i32 1
  store i64 2, ptr %4533, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %606) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %606) #9
  %4534 = getelementptr inbounds { ptr, i64 }, ptr %598, i32 0, i32 0
  %4535 = load ptr, ptr %4534, align 8
  %4536 = getelementptr inbounds { ptr, i64 }, ptr %598, i32 0, i32 1
  %4537 = load i64, ptr %4536, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %597, ptr %4535, i64 %4537, ptr noundef nonnull align 1 dereferenceable(1) %606)
          to label %4538 unwind label %4991

4538:                                             ; preds = %4531
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %4522, ptr noundef nonnull align 8 dereferenceable(33088) %4523, ptr noundef nonnull align 8 dereferenceable(32) %595, ptr noundef %597)
          to label %4539 unwind label %4995

4539:                                             ; preds = %4538
  store i1 false, ptr %607, align 1
  %4540 = getelementptr inbounds %"class.std::initializer_list.94", ptr %590, i32 0, i32 0
  store ptr %591, ptr %4540, align 8, !tbaa !9
  %4541 = getelementptr inbounds %"class.std::initializer_list.94", ptr %590, i32 0, i32 1
  store i64 2, ptr %4541, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %608) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %608) #9
  %4542 = getelementptr inbounds { ptr, i64 }, ptr %590, i32 0, i32 0
  %4543 = load ptr, ptr %4542, align 8
  %4544 = getelementptr inbounds { ptr, i64 }, ptr %590, i32 0, i32 1
  %4545 = load i64, ptr %4544, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %589, ptr %4543, i64 %4545, ptr noundef nonnull align 1 dereferenceable(1) %608)
          to label %4546 unwind label %4999

4546:                                             ; preds = %4539
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %586, ptr noundef nonnull align 8 dereferenceable(33088) %4517, ptr noundef nonnull align 8 dereferenceable(32) %587, ptr noundef %589)
          to label %4547 unwind label %5003

4547:                                             ; preds = %4546
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %589) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %608) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %608) #9
  %4548 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %591, i32 0, i32 0
  %4549 = getelementptr inbounds %"class.std::shared_ptr", ptr %4548, i64 2
  br label %4550

4550:                                             ; preds = %4550, %4547
  %4551 = phi ptr [ %4549, %4547 ], [ %4552, %4550 ]
  %4552 = getelementptr inbounds %"class.std::shared_ptr", ptr %4551, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4552) #9
  %4553 = icmp eq ptr %4552, %4548
  br i1 %4553, label %4554, label %4550

4554:                                             ; preds = %4550
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %597) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %606) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %606) #9
  %4555 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %599, i32 0, i32 0
  %4556 = getelementptr inbounds %"class.std::shared_ptr", ptr %4555, i64 2
  br label %4557

4557:                                             ; preds = %4557, %4554
  %4558 = phi ptr [ %4556, %4554 ], [ %4559, %4557 ]
  %4559 = getelementptr inbounds %"class.std::shared_ptr", ptr %4558, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4559) #9
  %4560 = icmp eq ptr %4559, %4555
  br i1 %4560, label %4561, label %4557

4561:                                             ; preds = %4557
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %603) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %604) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %604) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %603) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %601) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %602) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %602) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %601) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %599) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %595) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %596) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %596) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %595) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %593) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %594) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %594) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %593) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %591) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %587) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %588) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %588) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %587) #9
  %4562 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %4563 = 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 %610) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %611) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %611) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %610, ptr noundef @.str.534, ptr noundef nonnull align 1 dereferenceable(1) %611)
          to label %4564 unwind label %5052

4564:                                             ; preds = %4561
  call void @llvm.lifetime.start.p0(i64 32, ptr %614) #9
  store i1 true, ptr %620, align 1
  store ptr %614, ptr %615, align 8
  %4565 = 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 %616) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %617) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %617) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %616, ptr noundef @.str.535, ptr noundef nonnull align 1 dereferenceable(1) %617)
          to label %4566 unwind label %5056

4566:                                             ; preds = %4564
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %614, ptr noundef nonnull align 8 dereferenceable(33088) %4565, ptr noundef nonnull align 8 dereferenceable(32) %616)
          to label %4567 unwind label %5060

4567:                                             ; preds = %4566
  %4568 = getelementptr inbounds %"class.std::shared_ptr", ptr %614, i64 1
  store ptr %4568, ptr %615, align 8
  %4569 = 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 %618) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %619) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %619) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %618, ptr noundef @.str.539, ptr noundef nonnull align 1 dereferenceable(1) %619)
          to label %4570 unwind label %5064

4570:                                             ; preds = %4567
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %4568, ptr noundef nonnull align 8 dereferenceable(33088) %4569, ptr noundef nonnull align 8 dereferenceable(32) %618)
          to label %4571 unwind label %5068

4571:                                             ; preds = %4570
  store i1 false, ptr %620, align 1
  %4572 = getelementptr inbounds %"class.std::initializer_list.94", ptr %613, i32 0, i32 0
  store ptr %614, ptr %4572, align 8, !tbaa !9
  %4573 = getelementptr inbounds %"class.std::initializer_list.94", ptr %613, i32 0, i32 1
  store i64 2, ptr %4573, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %621) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %621) #9
  %4574 = getelementptr inbounds { ptr, i64 }, ptr %613, i32 0, i32 0
  %4575 = load ptr, ptr %4574, align 8
  %4576 = getelementptr inbounds { ptr, i64 }, ptr %613, i32 0, i32 1
  %4577 = load i64, ptr %4576, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %612, ptr %4575, i64 %4577, ptr noundef nonnull align 1 dereferenceable(1) %621)
          to label %4578 unwind label %5072

4578:                                             ; preds = %4571
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %609, ptr noundef nonnull align 8 dereferenceable(33088) %4563, ptr noundef nonnull align 8 dereferenceable(32) %610, ptr noundef %612)
          to label %4579 unwind label %5076

4579:                                             ; preds = %4578
  call void @llvm.lifetime.start.p0(i64 64, ptr %624) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %624, ptr noundef nonnull align 8 dereferenceable(16) %537) #9
  %4580 = getelementptr inbounds %"class.std::shared_ptr", ptr %624, i64 1
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4580, ptr noundef nonnull align 8 dereferenceable(16) %550) #9
  %4581 = getelementptr inbounds %"class.std::shared_ptr", ptr %624, i64 2
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4581, ptr noundef nonnull align 8 dereferenceable(16) %573) #9
  %4582 = getelementptr inbounds %"class.std::shared_ptr", ptr %624, i64 3
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4582, ptr noundef nonnull align 8 dereferenceable(16) %586) #9
  %4583 = getelementptr inbounds %"class.std::initializer_list.94", ptr %623, i32 0, i32 0
  store ptr %624, ptr %4583, align 8, !tbaa !9
  %4584 = getelementptr inbounds %"class.std::initializer_list.94", ptr %623, i32 0, i32 1
  store i64 4, ptr %4584, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %625) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %625) #9
  %4585 = getelementptr inbounds { ptr, i64 }, ptr %623, i32 0, i32 0
  %4586 = load ptr, ptr %4585, align 8
  %4587 = getelementptr inbounds { ptr, i64 }, ptr %623, i32 0, i32 1
  %4588 = load i64, ptr %4587, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %622, ptr %4586, i64 %4588, ptr noundef nonnull align 1 dereferenceable(1) %625)
          to label %4589 unwind label %5080

4589:                                             ; preds = %4579
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %4562, ptr noundef %609, ptr noundef %622)
          to label %4590 unwind label %5084

4590:                                             ; preds = %4589
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %622) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %625) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %625) #9
  %4591 = getelementptr inbounds [4 x %"class.std::shared_ptr"], ptr %624, i32 0, i32 0
  %4592 = getelementptr inbounds %"class.std::shared_ptr", ptr %4591, i64 4
  br label %4593

4593:                                             ; preds = %4593, %4590
  %4594 = phi ptr [ %4592, %4590 ], [ %4595, %4593 ]
  %4595 = getelementptr inbounds %"class.std::shared_ptr", ptr %4594, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4595) #9
  %4596 = icmp eq ptr %4595, %4591
  br i1 %4596, label %4597, label %4593

4597:                                             ; preds = %4593
  call void @llvm.lifetime.end.p0(i64 64, ptr %624) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %609) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %612) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %621) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %621) #9
  %4598 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %614, i32 0, i32 0
  %4599 = getelementptr inbounds %"class.std::shared_ptr", ptr %4598, i64 2
  br label %4600

4600:                                             ; preds = %4600, %4597
  %4601 = phi ptr [ %4599, %4597 ], [ %4602, %4600 ]
  %4602 = getelementptr inbounds %"class.std::shared_ptr", ptr %4601, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4602) #9
  %4603 = icmp eq ptr %4602, %4598
  br i1 %4603, label %4604, label %4600

4604:                                             ; preds = %4600
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %618) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %619) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %619) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %618) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %616) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %617) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %617) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %616) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %614) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %610) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %611) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %611) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %610) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %626) #9
  %4605 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  %4606 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %4607 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %627) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %629) #9
  store i1 true, ptr %643, align 1
  store ptr %629, ptr %630, align 8
  %4608 = 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 %631) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %632) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %632) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %631, ptr noundef @.str.534, ptr noundef nonnull align 1 dereferenceable(1) %632)
          to label %4609 unwind label %5120

4609:                                             ; preds = %4604
  call void @llvm.lifetime.start.p0(i64 32, ptr %635) #9
  store i1 true, ptr %641, align 1
  store ptr %635, ptr %636, align 8
  %4610 = 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 %637) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %638) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %638) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %637, ptr noundef @.str.137, ptr noundef nonnull align 1 dereferenceable(1) %638)
          to label %4611 unwind label %5124

4611:                                             ; preds = %4609
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %635, ptr noundef nonnull align 8 dereferenceable(33088) %4610, ptr noundef nonnull align 8 dereferenceable(32) %637)
          to label %4612 unwind label %5128

4612:                                             ; preds = %4611
  %4613 = getelementptr inbounds %"class.std::shared_ptr", ptr %635, i64 1
  store ptr %4613, ptr %636, align 8
  %4614 = 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 %639) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %640) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %640) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %639, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %640)
          to label %4615 unwind label %5132

4615:                                             ; preds = %4612
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %4613, ptr noundef nonnull align 8 dereferenceable(33088) %4614, ptr noundef nonnull align 8 dereferenceable(32) %639)
          to label %4616 unwind label %5136

4616:                                             ; preds = %4615
  store i1 false, ptr %641, align 1
  %4617 = getelementptr inbounds %"class.std::initializer_list.94", ptr %634, i32 0, i32 0
  store ptr %635, ptr %4617, align 8, !tbaa !9
  %4618 = getelementptr inbounds %"class.std::initializer_list.94", ptr %634, i32 0, i32 1
  store i64 2, ptr %4618, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %642) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %642) #9
  %4619 = getelementptr inbounds { ptr, i64 }, ptr %634, i32 0, i32 0
  %4620 = load ptr, ptr %4619, align 8
  %4621 = getelementptr inbounds { ptr, i64 }, ptr %634, i32 0, i32 1
  %4622 = load i64, ptr %4621, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %633, ptr %4620, i64 %4622, ptr noundef nonnull align 1 dereferenceable(1) %642)
          to label %4623 unwind label %5140

4623:                                             ; preds = %4616
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %629, ptr noundef nonnull align 8 dereferenceable(33088) %4608, ptr noundef nonnull align 8 dereferenceable(32) %631, ptr noundef %633)
          to label %4624 unwind label %5144

4624:                                             ; preds = %4623
  store i1 false, ptr %643, align 1
  %4625 = getelementptr inbounds %"class.std::initializer_list.94", ptr %628, i32 0, i32 0
  store ptr %629, ptr %4625, align 8, !tbaa !9
  %4626 = getelementptr inbounds %"class.std::initializer_list.94", ptr %628, i32 0, i32 1
  store i64 1, ptr %4626, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %644) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %644) #9
  %4627 = getelementptr inbounds { ptr, i64 }, ptr %628, i32 0, i32 0
  %4628 = load ptr, ptr %4627, align 8
  %4629 = getelementptr inbounds { ptr, i64 }, ptr %628, i32 0, i32 1
  %4630 = load i64, ptr %4629, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %627, ptr %4628, i64 %4630, ptr noundef nonnull align 1 dereferenceable(1) %644)
          to label %4631 unwind label %5148

4631:                                             ; preds = %4624
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %626, ptr noundef nonnull align 8 dereferenceable(64) %4605, ptr noundef %4606, ptr noundef %4607, ptr noundef nonnull align 8 dereferenceable(24) %627, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %4632 unwind label %5152

4632:                                             ; preds = %4631
  %4633 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %626) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %626) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %627) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %644) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %644) #9
  %4634 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %629, i32 0, i32 0
  %4635 = getelementptr inbounds %"class.std::shared_ptr", ptr %4634, i64 1
  br label %4636

4636:                                             ; preds = %4636, %4632
  %4637 = phi ptr [ %4635, %4632 ], [ %4638, %4636 ]
  %4638 = getelementptr inbounds %"class.std::shared_ptr", ptr %4637, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4638) #9
  %4639 = icmp eq ptr %4638, %4634
  br i1 %4639, label %4640, label %4636

4640:                                             ; preds = %4636
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %633) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %642) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %642) #9
  %4641 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %635, i32 0, i32 0
  %4642 = getelementptr inbounds %"class.std::shared_ptr", ptr %4641, i64 2
  br label %4643

4643:                                             ; preds = %4643, %4640
  %4644 = phi ptr [ %4642, %4640 ], [ %4645, %4643 ]
  %4645 = getelementptr inbounds %"class.std::shared_ptr", ptr %4644, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4645) #9
  %4646 = icmp eq ptr %4645, %4641
  br i1 %4646, label %4647, label %4643

4647:                                             ; preds = %4643
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %639) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %640) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %640) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %639) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %637) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %638) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %638) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %637) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %635) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %631) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %632) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %632) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %631) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %629) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %627) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %626) #9
  br label %4648

4648:                                             ; preds = %4647
  %4649 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ERKS8_(ptr noundef nonnull align 8 dereferenceable(24) %645, ptr noundef nonnull align 8 dereferenceable(24) %4649)
          to label %4650 unwind label %5198

4650:                                             ; preds = %4648
  call void @llvm.lifetime.start.p0(i64 24, ptr %648) #9
  store i1 true, ptr %658, align 1
  store ptr %648, ptr %649, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %651) #9
  store i1 true, ptr %656, align 1
  store ptr %651, ptr %652, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %653) #9
  %4651 = 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 %654) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %655) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %655) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %654, ptr noundef @.str.137, ptr noundef nonnull align 1 dereferenceable(1) %655)
          to label %4652 unwind label %5202

4652:                                             ; preds = %4650
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %653, ptr noundef nonnull align 8 dereferenceable(33088) %4651, ptr noundef nonnull align 8 dereferenceable(32) %654)
          to label %4653 unwind label %5206

4653:                                             ; preds = %4652
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %651, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %653)
          to label %4654 unwind label %5210

4654:                                             ; preds = %4653
  store i1 false, ptr %656, align 1
  %4655 = getelementptr inbounds %"class.std::initializer_list", ptr %650, i32 0, i32 0
  store ptr %651, ptr %4655, align 8, !tbaa !13
  %4656 = getelementptr inbounds %"class.std::initializer_list", ptr %650, i32 0, i32 1
  store i64 1, ptr %4656, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %657) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %657) #9
  %4657 = getelementptr inbounds { ptr, i64 }, ptr %650, i32 0, i32 0
  %4658 = load ptr, ptr %4657, align 8
  %4659 = getelementptr inbounds { ptr, i64 }, ptr %650, i32 0, i32 1
  %4660 = load i64, ptr %4659, align 8
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %648, ptr %4658, i64 %4660, ptr noundef nonnull align 1 dereferenceable(1) %657)
          to label %4661 unwind label %5214

4661:                                             ; preds = %4654
  store i1 false, ptr %658, align 1
  %4662 = getelementptr inbounds %"class.std::initializer_list.104", ptr %647, i32 0, i32 0
  store ptr %648, ptr %4662, align 8, !tbaa !16
  %4663 = getelementptr inbounds %"class.std::initializer_list.104", ptr %647, i32 0, i32 1
  store i64 1, ptr %4663, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 1, ptr %659) #9
  call void @_ZNSaISt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %659) #9
  %4664 = getelementptr inbounds { ptr, i64 }, ptr %647, i32 0, i32 0
  %4665 = load ptr, ptr %4664, align 8
  %4666 = getelementptr inbounds { ptr, i64 }, ptr %647, i32 0, i32 1
  %4667 = load i64, ptr %4666, align 8
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ESt16initializer_listIS6_ERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %646, ptr %4665, i64 %4667, ptr noundef nonnull align 1 dereferenceable(1) %659)
          to label %4668 unwind label %5218

4668:                                             ; preds = %4661
  %4669 = invoke noundef zeroext i1 @_Z14CheckSolutionsSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EES8_(ptr noundef %645, ptr noundef %646)
          to label %4670 unwind label %5222

4670:                                             ; preds = %4668
  %4671 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %4669)
          to label %4672 unwind label %5222

4672:                                             ; preds = %4670
  %4673 = xor i1 %4671, true
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %646) #9
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %659) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %659) #9
  %4674 = getelementptr inbounds [1 x %"class.std::vector"], ptr %648, i32 0, i32 0
  %4675 = getelementptr inbounds %"class.std::vector", ptr %4674, i64 1
  br label %4676

4676:                                             ; preds = %4676, %4672
  %4677 = phi ptr [ %4675, %4672 ], [ %4678, %4676 ]
  %4678 = getelementptr inbounds %"class.std::vector", ptr %4677, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4678) #9
  %4679 = icmp eq ptr %4678, %4674
  br i1 %4679, label %4680, label %4676

4680:                                             ; preds = %4676
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %657) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %657) #9
  %4681 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %651, i32 0, i32 0
  %4682 = getelementptr inbounds %"struct.std::pair", ptr %4681, i64 1
  br label %4683

4683:                                             ; preds = %4683, %4680
  %4684 = phi ptr [ %4682, %4680 ], [ %4685, %4683 ]
  %4685 = getelementptr inbounds %"struct.std::pair", ptr %4684, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4685) #9
  %4686 = icmp eq ptr %4685, %4681
  br i1 %4686, label %4687, label %4683

4687:                                             ; preds = %4683
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %653) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %654) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %655) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %655) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %654) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %653) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %651) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %648) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %645) #9
  br i1 %4673, label %4688, label %5530

4688:                                             ; preds = %4687
  %4689 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %4690 unwind label %5198

4690:                                             ; preds = %4688
  %4691 = load ptr, ptr %4689, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %660) #9
  %4692 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %4693 unwind label %5265

4693:                                             ; preds = %4690
  %4694 = load ptr, ptr %4692, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %660, ptr noundef nonnull align 8 dereferenceable(30) %4694, i32 noundef 2462)
          to label %4695 unwind label %5265

4695:                                             ; preds = %4693
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %4691, ptr noundef nonnull align 8 dereferenceable(30) %660, ptr noundef @.str.540)
          to label %4696 unwind label %5265

4696:                                             ; preds = %4695
  call void @llvm.lifetime.end.p0(i64 32, ptr %660) #9
  br label %5530

4697:                                             ; preds = %4209, %4199
  br label %4393

4698:                                             ; preds = %4381
  %4699 = landingpad { ptr, i32 }
          cleanup
  %4700 = extractvalue { ptr, i32 } %4699, 0
  store ptr %4700, ptr %4, align 8
  %4701 = extractvalue { ptr, i32 } %4699, 1
  store i32 %4701, ptr %5, align 4
  br label %4706

4702:                                             ; preds = %4390, %4388, %4385
  %4703 = landingpad { ptr, i32 }
          cleanup
  %4704 = extractvalue { ptr, i32 } %4703, 0
  store ptr %4704, ptr %4, align 8
  %4705 = extractvalue { ptr, i32 } %4703, 1
  store i32 %4705, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %522) #9
  br label %4706

4706:                                             ; preds = %4702, %4698
  invoke void @__cxa_end_catch()
          to label %4707 unwind label %6410

4707:                                             ; preds = %4706
  br label %6398

4708:                                             ; preds = %4397
  %4709 = landingpad { ptr, i32 }
          cleanup
  %4710 = extractvalue { ptr, i32 } %4709, 0
  store ptr %4710, ptr %4, align 8
  %4711 = extractvalue { ptr, i32 } %4709, 1
  store i32 %4711, ptr %5, align 4
  br label %4763

4712:                                             ; preds = %4400
  %4713 = landingpad { ptr, i32 }
          cleanup
  %4714 = extractvalue { ptr, i32 } %4713, 0
  store ptr %4714, ptr %4, align 8
  %4715 = extractvalue { ptr, i32 } %4713, 1
  store i32 %4715, ptr %5, align 4
  br label %4752

4716:                                             ; preds = %4402
  %4717 = landingpad { ptr, i32 }
          cleanup
  %4718 = extractvalue { ptr, i32 } %4717, 0
  store ptr %4718, ptr %4, align 8
  %4719 = extractvalue { ptr, i32 } %4717, 1
  store i32 %4719, ptr %5, align 4
  br label %4751

4720:                                             ; preds = %4403
  %4721 = landingpad { ptr, i32 }
          cleanup
  %4722 = extractvalue { ptr, i32 } %4721, 0
  store ptr %4722, ptr %4, align 8
  %4723 = extractvalue { ptr, i32 } %4721, 1
  store i32 %4723, ptr %5, align 4
  br label %4750

4724:                                             ; preds = %4406
  %4725 = landingpad { ptr, i32 }
          cleanup
  %4726 = extractvalue { ptr, i32 } %4725, 0
  store ptr %4726, ptr %4, align 8
  %4727 = extractvalue { ptr, i32 } %4725, 1
  store i32 %4727, ptr %5, align 4
  br label %4749

4728:                                             ; preds = %4407
  %4729 = landingpad { ptr, i32 }
          cleanup
  %4730 = extractvalue { ptr, i32 } %4729, 0
  store ptr %4730, ptr %4, align 8
  %4731 = extractvalue { ptr, i32 } %4729, 1
  store i32 %4731, ptr %5, align 4
  br label %4741

4732:                                             ; preds = %4414
  %4733 = landingpad { ptr, i32 }
          cleanup
  %4734 = extractvalue { ptr, i32 } %4733, 0
  store ptr %4734, ptr %4, align 8
  %4735 = extractvalue { ptr, i32 } %4733, 1
  store i32 %4735, ptr %5, align 4
  br label %4740

4736:                                             ; preds = %4415
  %4737 = landingpad { ptr, i32 }
          cleanup
  %4738 = extractvalue { ptr, i32 } %4737, 0
  store ptr %4738, ptr %4, align 8
  %4739 = extractvalue { ptr, i32 } %4737, 1
  store i32 %4739, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %536) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %523) #9
  br label %4740

4740:                                             ; preds = %4736, %4732
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %526) #9
  br label %4741

4741:                                             ; preds = %4740, %4728
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %535) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %535) #9
  %4742 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %528, i32 0, i32 0
  %4743 = getelementptr inbounds %"class.std::shared_ptr", ptr %4742, i64 2
  br label %4744

4744:                                             ; preds = %4744, %4741
  %4745 = phi ptr [ %4743, %4741 ], [ %4746, %4744 ]
  %4746 = getelementptr inbounds %"class.std::shared_ptr", ptr %4745, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4746) #9
  %4747 = icmp eq ptr %4746, %4742
  br i1 %4747, label %4748, label %4744

4748:                                             ; preds = %4744
  br label %4749

4749:                                             ; preds = %4748, %4724
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %532) #9
  br label %4750

4750:                                             ; preds = %4749, %4720
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %533) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %533) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %532) #9
  br label %4751

4751:                                             ; preds = %4750, %4716
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %530) #9
  br label %4752

4752:                                             ; preds = %4751, %4712
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %531) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %531) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %530) #9
  %4753 = load i1, ptr %534, align 1
  br i1 %4753, label %4754, label %4762

4754:                                             ; preds = %4752
  %4755 = load ptr, ptr %529, align 8
  %4756 = icmp eq ptr %528, %4755
  br i1 %4756, label %4761, label %4757

4757:                                             ; preds = %4757, %4754
  %4758 = phi ptr [ %4755, %4754 ], [ %4759, %4757 ]
  %4759 = getelementptr inbounds %"class.std::shared_ptr", ptr %4758, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4759) #9
  %4760 = icmp eq ptr %4759, %528
  br i1 %4760, label %4761, label %4757

4761:                                             ; preds = %4757, %4754
  br label %4762

4762:                                             ; preds = %4761, %4752
  call void @llvm.lifetime.end.p0(i64 32, ptr %528) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %524) #9
  br label %4763

4763:                                             ; preds = %4762, %4708
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %525) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %525) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %524) #9
  br label %6398

4764:                                             ; preds = %4423
  %4765 = landingpad { ptr, i32 }
          cleanup
  %4766 = extractvalue { ptr, i32 } %4765, 0
  store ptr %4766, ptr %4, align 8
  %4767 = extractvalue { ptr, i32 } %4765, 1
  store i32 %4767, ptr %5, align 4
  br label %4814

4768:                                             ; preds = %4425
  %4769 = landingpad { ptr, i32 }
          cleanup
  %4770 = extractvalue { ptr, i32 } %4769, 0
  store ptr %4770, ptr %4, align 8
  %4771 = extractvalue { ptr, i32 } %4769, 1
  store i32 %4771, ptr %5, align 4
  br label %4803

4772:                                             ; preds = %4427
  %4773 = landingpad { ptr, i32 }
          cleanup
  %4774 = extractvalue { ptr, i32 } %4773, 0
  store ptr %4774, ptr %4, align 8
  %4775 = extractvalue { ptr, i32 } %4773, 1
  store i32 %4775, ptr %5, align 4
  br label %4802

4776:                                             ; preds = %4428
  %4777 = landingpad { ptr, i32 }
          cleanup
  %4778 = extractvalue { ptr, i32 } %4777, 0
  store ptr %4778, ptr %4, align 8
  %4779 = extractvalue { ptr, i32 } %4777, 1
  store i32 %4779, ptr %5, align 4
  br label %4801

4780:                                             ; preds = %4431
  %4781 = landingpad { ptr, i32 }
          cleanup
  %4782 = extractvalue { ptr, i32 } %4781, 0
  store ptr %4782, ptr %4, align 8
  %4783 = extractvalue { ptr, i32 } %4781, 1
  store i32 %4783, ptr %5, align 4
  br label %4800

4784:                                             ; preds = %4432
  %4785 = landingpad { ptr, i32 }
          cleanup
  %4786 = extractvalue { ptr, i32 } %4785, 0
  store ptr %4786, ptr %4, align 8
  %4787 = extractvalue { ptr, i32 } %4785, 1
  store i32 %4787, ptr %5, align 4
  br label %4792

4788:                                             ; preds = %4439
  %4789 = landingpad { ptr, i32 }
          cleanup
  %4790 = extractvalue { ptr, i32 } %4789, 0
  store ptr %4790, ptr %4, align 8
  %4791 = extractvalue { ptr, i32 } %4789, 1
  store i32 %4791, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %540) #9
  br label %4792

4792:                                             ; preds = %4788, %4784
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %549) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %549) #9
  %4793 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %542, i32 0, i32 0
  %4794 = getelementptr inbounds %"class.std::shared_ptr", ptr %4793, i64 2
  br label %4795

4795:                                             ; preds = %4795, %4792
  %4796 = phi ptr [ %4794, %4792 ], [ %4797, %4795 ]
  %4797 = getelementptr inbounds %"class.std::shared_ptr", ptr %4796, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4797) #9
  %4798 = icmp eq ptr %4797, %4793
  br i1 %4798, label %4799, label %4795

4799:                                             ; preds = %4795
  br label %4800

4800:                                             ; preds = %4799, %4780
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %546) #9
  br label %4801

4801:                                             ; preds = %4800, %4776
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %547) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %547) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %546) #9
  br label %4802

4802:                                             ; preds = %4801, %4772
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %544) #9
  br label %4803

4803:                                             ; preds = %4802, %4768
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %545) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %545) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %544) #9
  %4804 = load i1, ptr %548, align 1
  br i1 %4804, label %4805, label %4813

4805:                                             ; preds = %4803
  %4806 = load ptr, ptr %543, align 8
  %4807 = icmp eq ptr %542, %4806
  br i1 %4807, label %4812, label %4808

4808:                                             ; preds = %4808, %4805
  %4809 = phi ptr [ %4806, %4805 ], [ %4810, %4808 ]
  %4810 = getelementptr inbounds %"class.std::shared_ptr", ptr %4809, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4810) #9
  %4811 = icmp eq ptr %4810, %542
  br i1 %4811, label %4812, label %4808

4812:                                             ; preds = %4808, %4805
  br label %4813

4813:                                             ; preds = %4812, %4803
  call void @llvm.lifetime.end.p0(i64 32, ptr %542) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %538) #9
  br label %4814

4814:                                             ; preds = %4813, %4764
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %539) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %539) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %538) #9
  br label %6397

4815:                                             ; preds = %4447
  %4816 = landingpad { ptr, i32 }
          cleanup
  %4817 = extractvalue { ptr, i32 } %4816, 0
  store ptr %4817, ptr %4, align 8
  %4818 = extractvalue { ptr, i32 } %4816, 1
  store i32 %4818, ptr %5, align 4
  br label %4907

4819:                                             ; preds = %4449
  %4820 = landingpad { ptr, i32 }
          cleanup
  %4821 = extractvalue { ptr, i32 } %4820, 0
  store ptr %4821, ptr %4, align 8
  %4822 = extractvalue { ptr, i32 } %4820, 1
  store i32 %4822, ptr %5, align 4
  br label %4896

4823:                                             ; preds = %4451
  %4824 = landingpad { ptr, i32 }
          cleanup
  %4825 = extractvalue { ptr, i32 } %4824, 0
  store ptr %4825, ptr %4, align 8
  %4826 = extractvalue { ptr, i32 } %4824, 1
  store i32 %4826, ptr %5, align 4
  br label %4895

4827:                                             ; preds = %4452
  %4828 = landingpad { ptr, i32 }
          cleanup
  %4829 = extractvalue { ptr, i32 } %4828, 0
  store ptr %4829, ptr %4, align 8
  %4830 = extractvalue { ptr, i32 } %4828, 1
  store i32 %4830, ptr %5, align 4
  br label %4894

4831:                                             ; preds = %4455
  %4832 = landingpad { ptr, i32 }
          cleanup
  %4833 = extractvalue { ptr, i32 } %4832, 0
  store ptr %4833, ptr %4, align 8
  %4834 = extractvalue { ptr, i32 } %4832, 1
  store i32 %4834, ptr %5, align 4
  br label %4883

4835:                                             ; preds = %4457
  %4836 = landingpad { ptr, i32 }
          cleanup
  %4837 = extractvalue { ptr, i32 } %4836, 0
  store ptr %4837, ptr %4, align 8
  %4838 = extractvalue { ptr, i32 } %4836, 1
  store i32 %4838, ptr %5, align 4
  br label %4882

4839:                                             ; preds = %4458
  %4840 = landingpad { ptr, i32 }
          cleanup
  %4841 = extractvalue { ptr, i32 } %4840, 0
  store ptr %4841, ptr %4, align 8
  %4842 = extractvalue { ptr, i32 } %4840, 1
  store i32 %4842, ptr %5, align 4
  br label %4881

4843:                                             ; preds = %4461
  %4844 = landingpad { ptr, i32 }
          cleanup
  %4845 = extractvalue { ptr, i32 } %4844, 0
  store ptr %4845, ptr %4, align 8
  %4846 = extractvalue { ptr, i32 } %4844, 1
  store i32 %4846, ptr %5, align 4
  br label %4880

4847:                                             ; preds = %4462
  %4848 = landingpad { ptr, i32 }
          cleanup
  %4849 = extractvalue { ptr, i32 } %4848, 0
  store ptr %4849, ptr %4, align 8
  %4850 = extractvalue { ptr, i32 } %4848, 1
  store i32 %4850, ptr %5, align 4
  br label %4872

4851:                                             ; preds = %4469
  %4852 = landingpad { ptr, i32 }
          cleanup
  %4853 = extractvalue { ptr, i32 } %4852, 0
  store ptr %4853, ptr %4, align 8
  %4854 = extractvalue { ptr, i32 } %4852, 1
  store i32 %4854, ptr %5, align 4
  br label %4871

4855:                                             ; preds = %4470
  %4856 = landingpad { ptr, i32 }
          cleanup
  %4857 = extractvalue { ptr, i32 } %4856, 0
  store ptr %4857, ptr %4, align 8
  %4858 = extractvalue { ptr, i32 } %4856, 1
  store i32 %4858, ptr %5, align 4
  br label %4863

4859:                                             ; preds = %4477
  %4860 = landingpad { ptr, i32 }
          cleanup
  %4861 = extractvalue { ptr, i32 } %4860, 0
  store ptr %4861, ptr %4, align 8
  %4862 = extractvalue { ptr, i32 } %4860, 1
  store i32 %4862, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %553) #9
  br label %4863

4863:                                             ; preds = %4859, %4855
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %572) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %572) #9
  %4864 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %555, i32 0, i32 0
  %4865 = getelementptr inbounds %"class.std::shared_ptr", ptr %4864, i64 2
  br label %4866

4866:                                             ; preds = %4866, %4863
  %4867 = phi ptr [ %4865, %4863 ], [ %4868, %4866 ]
  %4868 = getelementptr inbounds %"class.std::shared_ptr", ptr %4867, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4868) #9
  %4869 = icmp eq ptr %4868, %4864
  br i1 %4869, label %4870, label %4866

4870:                                             ; preds = %4866
  br label %4871

4871:                                             ; preds = %4870, %4851
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %561) #9
  br label %4872

4872:                                             ; preds = %4871, %4847
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %570) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %570) #9
  %4873 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %563, i32 0, i32 0
  %4874 = getelementptr inbounds %"class.std::shared_ptr", ptr %4873, i64 2
  br label %4875

4875:                                             ; preds = %4875, %4872
  %4876 = phi ptr [ %4874, %4872 ], [ %4877, %4875 ]
  %4877 = getelementptr inbounds %"class.std::shared_ptr", ptr %4876, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4877) #9
  %4878 = icmp eq ptr %4877, %4873
  br i1 %4878, label %4879, label %4875

4879:                                             ; preds = %4875
  br label %4880

4880:                                             ; preds = %4879, %4843
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %567) #9
  br label %4881

4881:                                             ; preds = %4880, %4839
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %568) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %568) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %567) #9
  br label %4882

4882:                                             ; preds = %4881, %4835
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %565) #9
  br label %4883

4883:                                             ; preds = %4882, %4831
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %566) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %566) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %565) #9
  %4884 = load i1, ptr %569, align 1
  br i1 %4884, label %4885, label %4893

4885:                                             ; preds = %4883
  %4886 = load ptr, ptr %564, align 8
  %4887 = icmp eq ptr %563, %4886
  br i1 %4887, label %4892, label %4888

4888:                                             ; preds = %4888, %4885
  %4889 = phi ptr [ %4886, %4885 ], [ %4890, %4888 ]
  %4890 = getelementptr inbounds %"class.std::shared_ptr", ptr %4889, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4890) #9
  %4891 = icmp eq ptr %4890, %563
  br i1 %4891, label %4892, label %4888

4892:                                             ; preds = %4888, %4885
  br label %4893

4893:                                             ; preds = %4892, %4883
  call void @llvm.lifetime.end.p0(i64 32, ptr %563) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %559) #9
  br label %4894

4894:                                             ; preds = %4893, %4827
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %560) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %560) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %559) #9
  br label %4895

4895:                                             ; preds = %4894, %4823
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %557) #9
  br label %4896

4896:                                             ; preds = %4895, %4819
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %558) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %558) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %557) #9
  %4897 = load i1, ptr %571, align 1
  br i1 %4897, label %4898, label %4906

4898:                                             ; preds = %4896
  %4899 = load ptr, ptr %556, align 8
  %4900 = icmp eq ptr %555, %4899
  br i1 %4900, label %4905, label %4901

4901:                                             ; preds = %4901, %4898
  %4902 = phi ptr [ %4899, %4898 ], [ %4903, %4901 ]
  %4903 = getelementptr inbounds %"class.std::shared_ptr", ptr %4902, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4903) #9
  %4904 = icmp eq ptr %4903, %555
  br i1 %4904, label %4905, label %4901

4905:                                             ; preds = %4901, %4898
  br label %4906

4906:                                             ; preds = %4905, %4896
  call void @llvm.lifetime.end.p0(i64 32, ptr %555) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %551) #9
  br label %4907

4907:                                             ; preds = %4906, %4815
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %552) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %552) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %551) #9
  br label %6396

4908:                                             ; preds = %4492
  %4909 = landingpad { ptr, i32 }
          cleanup
  %4910 = extractvalue { ptr, i32 } %4909, 0
  store ptr %4910, ptr %4, align 8
  %4911 = extractvalue { ptr, i32 } %4909, 1
  store i32 %4911, ptr %5, align 4
  br label %4958

4912:                                             ; preds = %4494
  %4913 = landingpad { ptr, i32 }
          cleanup
  %4914 = extractvalue { ptr, i32 } %4913, 0
  store ptr %4914, ptr %4, align 8
  %4915 = extractvalue { ptr, i32 } %4913, 1
  store i32 %4915, ptr %5, align 4
  br label %4947

4916:                                             ; preds = %4496
  %4917 = landingpad { ptr, i32 }
          cleanup
  %4918 = extractvalue { ptr, i32 } %4917, 0
  store ptr %4918, ptr %4, align 8
  %4919 = extractvalue { ptr, i32 } %4917, 1
  store i32 %4919, ptr %5, align 4
  br label %4946

4920:                                             ; preds = %4497
  %4921 = landingpad { ptr, i32 }
          cleanup
  %4922 = extractvalue { ptr, i32 } %4921, 0
  store ptr %4922, ptr %4, align 8
  %4923 = extractvalue { ptr, i32 } %4921, 1
  store i32 %4923, ptr %5, align 4
  br label %4945

4924:                                             ; preds = %4500
  %4925 = landingpad { ptr, i32 }
          cleanup
  %4926 = extractvalue { ptr, i32 } %4925, 0
  store ptr %4926, ptr %4, align 8
  %4927 = extractvalue { ptr, i32 } %4925, 1
  store i32 %4927, ptr %5, align 4
  br label %4944

4928:                                             ; preds = %4501
  %4929 = landingpad { ptr, i32 }
          cleanup
  %4930 = extractvalue { ptr, i32 } %4929, 0
  store ptr %4930, ptr %4, align 8
  %4931 = extractvalue { ptr, i32 } %4929, 1
  store i32 %4931, ptr %5, align 4
  br label %4936

4932:                                             ; preds = %4508
  %4933 = landingpad { ptr, i32 }
          cleanup
  %4934 = extractvalue { ptr, i32 } %4933, 0
  store ptr %4934, ptr %4, align 8
  %4935 = extractvalue { ptr, i32 } %4933, 1
  store i32 %4935, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %576) #9
  br label %4936

4936:                                             ; preds = %4932, %4928
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %585) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %585) #9
  %4937 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %578, i32 0, i32 0
  %4938 = getelementptr inbounds %"class.std::shared_ptr", ptr %4937, i64 2
  br label %4939

4939:                                             ; preds = %4939, %4936
  %4940 = phi ptr [ %4938, %4936 ], [ %4941, %4939 ]
  %4941 = getelementptr inbounds %"class.std::shared_ptr", ptr %4940, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4941) #9
  %4942 = icmp eq ptr %4941, %4937
  br i1 %4942, label %4943, label %4939

4943:                                             ; preds = %4939
  br label %4944

4944:                                             ; preds = %4943, %4924
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %582) #9
  br label %4945

4945:                                             ; preds = %4944, %4920
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %583) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %583) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %582) #9
  br label %4946

4946:                                             ; preds = %4945, %4916
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %580) #9
  br label %4947

4947:                                             ; preds = %4946, %4912
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %581) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %581) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %580) #9
  %4948 = load i1, ptr %584, align 1
  br i1 %4948, label %4949, label %4957

4949:                                             ; preds = %4947
  %4950 = load ptr, ptr %579, align 8
  %4951 = icmp eq ptr %578, %4950
  br i1 %4951, label %4956, label %4952

4952:                                             ; preds = %4952, %4949
  %4953 = phi ptr [ %4950, %4949 ], [ %4954, %4952 ]
  %4954 = getelementptr inbounds %"class.std::shared_ptr", ptr %4953, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4954) #9
  %4955 = icmp eq ptr %4954, %578
  br i1 %4955, label %4956, label %4952

4956:                                             ; preds = %4952, %4949
  br label %4957

4957:                                             ; preds = %4956, %4947
  call void @llvm.lifetime.end.p0(i64 32, ptr %578) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %574) #9
  br label %4958

4958:                                             ; preds = %4957, %4908
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %575) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %575) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %574) #9
  br label %6395

4959:                                             ; preds = %4516
  %4960 = landingpad { ptr, i32 }
          cleanup
  %4961 = extractvalue { ptr, i32 } %4960, 0
  store ptr %4961, ptr %4, align 8
  %4962 = extractvalue { ptr, i32 } %4960, 1
  store i32 %4962, ptr %5, align 4
  br label %5051

4963:                                             ; preds = %4518
  %4964 = landingpad { ptr, i32 }
          cleanup
  %4965 = extractvalue { ptr, i32 } %4964, 0
  store ptr %4965, ptr %4, align 8
  %4966 = extractvalue { ptr, i32 } %4964, 1
  store i32 %4966, ptr %5, align 4
  br label %5040

4967:                                             ; preds = %4520
  %4968 = landingpad { ptr, i32 }
          cleanup
  %4969 = extractvalue { ptr, i32 } %4968, 0
  store ptr %4969, ptr %4, align 8
  %4970 = extractvalue { ptr, i32 } %4968, 1
  store i32 %4970, ptr %5, align 4
  br label %5039

4971:                                             ; preds = %4521
  %4972 = landingpad { ptr, i32 }
          cleanup
  %4973 = extractvalue { ptr, i32 } %4972, 0
  store ptr %4973, ptr %4, align 8
  %4974 = extractvalue { ptr, i32 } %4972, 1
  store i32 %4974, ptr %5, align 4
  br label %5038

4975:                                             ; preds = %4524
  %4976 = landingpad { ptr, i32 }
          cleanup
  %4977 = extractvalue { ptr, i32 } %4976, 0
  store ptr %4977, ptr %4, align 8
  %4978 = extractvalue { ptr, i32 } %4976, 1
  store i32 %4978, ptr %5, align 4
  br label %5027

4979:                                             ; preds = %4526
  %4980 = landingpad { ptr, i32 }
          cleanup
  %4981 = extractvalue { ptr, i32 } %4980, 0
  store ptr %4981, ptr %4, align 8
  %4982 = extractvalue { ptr, i32 } %4980, 1
  store i32 %4982, ptr %5, align 4
  br label %5026

4983:                                             ; preds = %4527
  %4984 = landingpad { ptr, i32 }
          cleanup
  %4985 = extractvalue { ptr, i32 } %4984, 0
  store ptr %4985, ptr %4, align 8
  %4986 = extractvalue { ptr, i32 } %4984, 1
  store i32 %4986, ptr %5, align 4
  br label %5025

4987:                                             ; preds = %4530
  %4988 = landingpad { ptr, i32 }
          cleanup
  %4989 = extractvalue { ptr, i32 } %4988, 0
  store ptr %4989, ptr %4, align 8
  %4990 = extractvalue { ptr, i32 } %4988, 1
  store i32 %4990, ptr %5, align 4
  br label %5024

4991:                                             ; preds = %4531
  %4992 = landingpad { ptr, i32 }
          cleanup
  %4993 = extractvalue { ptr, i32 } %4992, 0
  store ptr %4993, ptr %4, align 8
  %4994 = extractvalue { ptr, i32 } %4992, 1
  store i32 %4994, ptr %5, align 4
  br label %5016

4995:                                             ; preds = %4538
  %4996 = landingpad { ptr, i32 }
          cleanup
  %4997 = extractvalue { ptr, i32 } %4996, 0
  store ptr %4997, ptr %4, align 8
  %4998 = extractvalue { ptr, i32 } %4996, 1
  store i32 %4998, ptr %5, align 4
  br label %5015

4999:                                             ; preds = %4539
  %5000 = landingpad { ptr, i32 }
          cleanup
  %5001 = extractvalue { ptr, i32 } %5000, 0
  store ptr %5001, ptr %4, align 8
  %5002 = extractvalue { ptr, i32 } %5000, 1
  store i32 %5002, ptr %5, align 4
  br label %5007

5003:                                             ; preds = %4546
  %5004 = landingpad { ptr, i32 }
          cleanup
  %5005 = extractvalue { ptr, i32 } %5004, 0
  store ptr %5005, ptr %4, align 8
  %5006 = extractvalue { ptr, i32 } %5004, 1
  store i32 %5006, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %589) #9
  br label %5007

5007:                                             ; preds = %5003, %4999
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %608) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %608) #9
  %5008 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %591, i32 0, i32 0
  %5009 = getelementptr inbounds %"class.std::shared_ptr", ptr %5008, i64 2
  br label %5010

5010:                                             ; preds = %5010, %5007
  %5011 = phi ptr [ %5009, %5007 ], [ %5012, %5010 ]
  %5012 = getelementptr inbounds %"class.std::shared_ptr", ptr %5011, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5012) #9
  %5013 = icmp eq ptr %5012, %5008
  br i1 %5013, label %5014, label %5010

5014:                                             ; preds = %5010
  br label %5015

5015:                                             ; preds = %5014, %4995
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %597) #9
  br label %5016

5016:                                             ; preds = %5015, %4991
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %606) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %606) #9
  %5017 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %599, i32 0, i32 0
  %5018 = getelementptr inbounds %"class.std::shared_ptr", ptr %5017, i64 2
  br label %5019

5019:                                             ; preds = %5019, %5016
  %5020 = phi ptr [ %5018, %5016 ], [ %5021, %5019 ]
  %5021 = getelementptr inbounds %"class.std::shared_ptr", ptr %5020, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5021) #9
  %5022 = icmp eq ptr %5021, %5017
  br i1 %5022, label %5023, label %5019

5023:                                             ; preds = %5019
  br label %5024

5024:                                             ; preds = %5023, %4987
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %603) #9
  br label %5025

5025:                                             ; preds = %5024, %4983
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %604) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %604) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %603) #9
  br label %5026

5026:                                             ; preds = %5025, %4979
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %601) #9
  br label %5027

5027:                                             ; preds = %5026, %4975
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %602) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %602) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %601) #9
  %5028 = load i1, ptr %605, align 1
  br i1 %5028, label %5029, label %5037

5029:                                             ; preds = %5027
  %5030 = load ptr, ptr %600, align 8
  %5031 = icmp eq ptr %599, %5030
  br i1 %5031, label %5036, label %5032

5032:                                             ; preds = %5032, %5029
  %5033 = phi ptr [ %5030, %5029 ], [ %5034, %5032 ]
  %5034 = getelementptr inbounds %"class.std::shared_ptr", ptr %5033, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5034) #9
  %5035 = icmp eq ptr %5034, %599
  br i1 %5035, label %5036, label %5032

5036:                                             ; preds = %5032, %5029
  br label %5037

5037:                                             ; preds = %5036, %5027
  call void @llvm.lifetime.end.p0(i64 32, ptr %599) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %595) #9
  br label %5038

5038:                                             ; preds = %5037, %4971
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %596) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %596) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %595) #9
  br label %5039

5039:                                             ; preds = %5038, %4967
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %593) #9
  br label %5040

5040:                                             ; preds = %5039, %4963
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %594) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %594) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %593) #9
  %5041 = load i1, ptr %607, align 1
  br i1 %5041, label %5042, label %5050

5042:                                             ; preds = %5040
  %5043 = load ptr, ptr %592, align 8
  %5044 = icmp eq ptr %591, %5043
  br i1 %5044, label %5049, label %5045

5045:                                             ; preds = %5045, %5042
  %5046 = phi ptr [ %5043, %5042 ], [ %5047, %5045 ]
  %5047 = getelementptr inbounds %"class.std::shared_ptr", ptr %5046, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5047) #9
  %5048 = icmp eq ptr %5047, %591
  br i1 %5048, label %5049, label %5045

5049:                                             ; preds = %5045, %5042
  br label %5050

5050:                                             ; preds = %5049, %5040
  call void @llvm.lifetime.end.p0(i64 32, ptr %591) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %587) #9
  br label %5051

5051:                                             ; preds = %5050, %4959
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %588) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %588) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %587) #9
  br label %6394

5052:                                             ; preds = %4561
  %5053 = landingpad { ptr, i32 }
          cleanup
  %5054 = extractvalue { ptr, i32 } %5053, 0
  store ptr %5054, ptr %4, align 8
  %5055 = extractvalue { ptr, i32 } %5053, 1
  store i32 %5055, ptr %5, align 4
  br label %5119

5056:                                             ; preds = %4564
  %5057 = landingpad { ptr, i32 }
          cleanup
  %5058 = extractvalue { ptr, i32 } %5057, 0
  store ptr %5058, ptr %4, align 8
  %5059 = extractvalue { ptr, i32 } %5057, 1
  store i32 %5059, ptr %5, align 4
  br label %5108

5060:                                             ; preds = %4566
  %5061 = landingpad { ptr, i32 }
          cleanup
  %5062 = extractvalue { ptr, i32 } %5061, 0
  store ptr %5062, ptr %4, align 8
  %5063 = extractvalue { ptr, i32 } %5061, 1
  store i32 %5063, ptr %5, align 4
  br label %5107

5064:                                             ; preds = %4567
  %5065 = landingpad { ptr, i32 }
          cleanup
  %5066 = extractvalue { ptr, i32 } %5065, 0
  store ptr %5066, ptr %4, align 8
  %5067 = extractvalue { ptr, i32 } %5065, 1
  store i32 %5067, ptr %5, align 4
  br label %5106

5068:                                             ; preds = %4570
  %5069 = landingpad { ptr, i32 }
          cleanup
  %5070 = extractvalue { ptr, i32 } %5069, 0
  store ptr %5070, ptr %4, align 8
  %5071 = extractvalue { ptr, i32 } %5069, 1
  store i32 %5071, ptr %5, align 4
  br label %5105

5072:                                             ; preds = %4571
  %5073 = landingpad { ptr, i32 }
          cleanup
  %5074 = extractvalue { ptr, i32 } %5073, 0
  store ptr %5074, ptr %4, align 8
  %5075 = extractvalue { ptr, i32 } %5073, 1
  store i32 %5075, ptr %5, align 4
  br label %5097

5076:                                             ; preds = %4578
  %5077 = landingpad { ptr, i32 }
          cleanup
  %5078 = extractvalue { ptr, i32 } %5077, 0
  store ptr %5078, ptr %4, align 8
  %5079 = extractvalue { ptr, i32 } %5077, 1
  store i32 %5079, ptr %5, align 4
  br label %5096

5080:                                             ; preds = %4579
  %5081 = landingpad { ptr, i32 }
          cleanup
  %5082 = extractvalue { ptr, i32 } %5081, 0
  store ptr %5082, ptr %4, align 8
  %5083 = extractvalue { ptr, i32 } %5081, 1
  store i32 %5083, ptr %5, align 4
  br label %5088

5084:                                             ; preds = %4589
  %5085 = landingpad { ptr, i32 }
          cleanup
  %5086 = extractvalue { ptr, i32 } %5085, 0
  store ptr %5086, ptr %4, align 8
  %5087 = extractvalue { ptr, i32 } %5085, 1
  store i32 %5087, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %622) #9
  br label %5088

5088:                                             ; preds = %5084, %5080
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %625) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %625) #9
  %5089 = getelementptr inbounds [4 x %"class.std::shared_ptr"], ptr %624, i32 0, i32 0
  %5090 = getelementptr inbounds %"class.std::shared_ptr", ptr %5089, i64 4
  br label %5091

5091:                                             ; preds = %5091, %5088
  %5092 = phi ptr [ %5090, %5088 ], [ %5093, %5091 ]
  %5093 = getelementptr inbounds %"class.std::shared_ptr", ptr %5092, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5093) #9
  %5094 = icmp eq ptr %5093, %5089
  br i1 %5094, label %5095, label %5091

5095:                                             ; preds = %5091
  call void @llvm.lifetime.end.p0(i64 64, ptr %624) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %609) #9
  br label %5096

5096:                                             ; preds = %5095, %5076
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %612) #9
  br label %5097

5097:                                             ; preds = %5096, %5072
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %621) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %621) #9
  %5098 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %614, i32 0, i32 0
  %5099 = getelementptr inbounds %"class.std::shared_ptr", ptr %5098, i64 2
  br label %5100

5100:                                             ; preds = %5100, %5097
  %5101 = phi ptr [ %5099, %5097 ], [ %5102, %5100 ]
  %5102 = getelementptr inbounds %"class.std::shared_ptr", ptr %5101, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5102) #9
  %5103 = icmp eq ptr %5102, %5098
  br i1 %5103, label %5104, label %5100

5104:                                             ; preds = %5100
  br label %5105

5105:                                             ; preds = %5104, %5068
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %618) #9
  br label %5106

5106:                                             ; preds = %5105, %5064
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %619) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %619) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %618) #9
  br label %5107

5107:                                             ; preds = %5106, %5060
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %616) #9
  br label %5108

5108:                                             ; preds = %5107, %5056
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %617) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %617) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %616) #9
  %5109 = load i1, ptr %620, align 1
  br i1 %5109, label %5110, label %5118

5110:                                             ; preds = %5108
  %5111 = load ptr, ptr %615, align 8
  %5112 = icmp eq ptr %614, %5111
  br i1 %5112, label %5117, label %5113

5113:                                             ; preds = %5113, %5110
  %5114 = phi ptr [ %5111, %5110 ], [ %5115, %5113 ]
  %5115 = getelementptr inbounds %"class.std::shared_ptr", ptr %5114, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5115) #9
  %5116 = icmp eq ptr %5115, %614
  br i1 %5116, label %5117, label %5113

5117:                                             ; preds = %5113, %5110
  br label %5118

5118:                                             ; preds = %5117, %5108
  call void @llvm.lifetime.end.p0(i64 32, ptr %614) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %610) #9
  br label %5119

5119:                                             ; preds = %5118, %5052
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %611) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %611) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %610) #9
  br label %6393

5120:                                             ; preds = %4604
  %5121 = landingpad { ptr, i32 }
          cleanup
  %5122 = extractvalue { ptr, i32 } %5121, 0
  store ptr %5122, ptr %4, align 8
  %5123 = extractvalue { ptr, i32 } %5121, 1
  store i32 %5123, ptr %5, align 4
  br label %5187

5124:                                             ; preds = %4609
  %5125 = landingpad { ptr, i32 }
          cleanup
  %5126 = extractvalue { ptr, i32 } %5125, 0
  store ptr %5126, ptr %4, align 8
  %5127 = extractvalue { ptr, i32 } %5125, 1
  store i32 %5127, ptr %5, align 4
  br label %5176

5128:                                             ; preds = %4611
  %5129 = landingpad { ptr, i32 }
          cleanup
  %5130 = extractvalue { ptr, i32 } %5129, 0
  store ptr %5130, ptr %4, align 8
  %5131 = extractvalue { ptr, i32 } %5129, 1
  store i32 %5131, ptr %5, align 4
  br label %5175

5132:                                             ; preds = %4612
  %5133 = landingpad { ptr, i32 }
          cleanup
  %5134 = extractvalue { ptr, i32 } %5133, 0
  store ptr %5134, ptr %4, align 8
  %5135 = extractvalue { ptr, i32 } %5133, 1
  store i32 %5135, ptr %5, align 4
  br label %5174

5136:                                             ; preds = %4615
  %5137 = landingpad { ptr, i32 }
          cleanup
  %5138 = extractvalue { ptr, i32 } %5137, 0
  store ptr %5138, ptr %4, align 8
  %5139 = extractvalue { ptr, i32 } %5137, 1
  store i32 %5139, ptr %5, align 4
  br label %5173

5140:                                             ; preds = %4616
  %5141 = landingpad { ptr, i32 }
          cleanup
  %5142 = extractvalue { ptr, i32 } %5141, 0
  store ptr %5142, ptr %4, align 8
  %5143 = extractvalue { ptr, i32 } %5141, 1
  store i32 %5143, ptr %5, align 4
  br label %5165

5144:                                             ; preds = %4623
  %5145 = landingpad { ptr, i32 }
          cleanup
  %5146 = extractvalue { ptr, i32 } %5145, 0
  store ptr %5146, ptr %4, align 8
  %5147 = extractvalue { ptr, i32 } %5145, 1
  store i32 %5147, ptr %5, align 4
  br label %5164

5148:                                             ; preds = %4624
  %5149 = landingpad { ptr, i32 }
          cleanup
  %5150 = extractvalue { ptr, i32 } %5149, 0
  store ptr %5150, ptr %4, align 8
  %5151 = extractvalue { ptr, i32 } %5149, 1
  store i32 %5151, ptr %5, align 4
  br label %5156

5152:                                             ; preds = %4631
  %5153 = landingpad { ptr, i32 }
          cleanup
  %5154 = extractvalue { ptr, i32 } %5153, 0
  store ptr %5154, ptr %4, align 8
  %5155 = extractvalue { ptr, i32 } %5153, 1
  store i32 %5155, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %627) #9
  br label %5156

5156:                                             ; preds = %5152, %5148
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %644) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %644) #9
  %5157 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %629, i32 0, i32 0
  %5158 = getelementptr inbounds %"class.std::shared_ptr", ptr %5157, i64 1
  br label %5159

5159:                                             ; preds = %5159, %5156
  %5160 = phi ptr [ %5158, %5156 ], [ %5161, %5159 ]
  %5161 = getelementptr inbounds %"class.std::shared_ptr", ptr %5160, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5161) #9
  %5162 = icmp eq ptr %5161, %5157
  br i1 %5162, label %5163, label %5159

5163:                                             ; preds = %5159
  br label %5164

5164:                                             ; preds = %5163, %5144
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %633) #9
  br label %5165

5165:                                             ; preds = %5164, %5140
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %642) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %642) #9
  %5166 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %635, i32 0, i32 0
  %5167 = getelementptr inbounds %"class.std::shared_ptr", ptr %5166, i64 2
  br label %5168

5168:                                             ; preds = %5168, %5165
  %5169 = phi ptr [ %5167, %5165 ], [ %5170, %5168 ]
  %5170 = getelementptr inbounds %"class.std::shared_ptr", ptr %5169, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5170) #9
  %5171 = icmp eq ptr %5170, %5166
  br i1 %5171, label %5172, label %5168

5172:                                             ; preds = %5168
  br label %5173

5173:                                             ; preds = %5172, %5136
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %639) #9
  br label %5174

5174:                                             ; preds = %5173, %5132
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %640) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %640) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %639) #9
  br label %5175

5175:                                             ; preds = %5174, %5128
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %637) #9
  br label %5176

5176:                                             ; preds = %5175, %5124
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %638) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %638) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %637) #9
  %5177 = load i1, ptr %641, align 1
  br i1 %5177, label %5178, label %5186

5178:                                             ; preds = %5176
  %5179 = load ptr, ptr %636, align 8
  %5180 = icmp eq ptr %635, %5179
  br i1 %5180, label %5185, label %5181

5181:                                             ; preds = %5181, %5178
  %5182 = phi ptr [ %5179, %5178 ], [ %5183, %5181 ]
  %5183 = getelementptr inbounds %"class.std::shared_ptr", ptr %5182, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5183) #9
  %5184 = icmp eq ptr %5183, %635
  br i1 %5184, label %5185, label %5181

5185:                                             ; preds = %5181, %5178
  br label %5186

5186:                                             ; preds = %5185, %5176
  call void @llvm.lifetime.end.p0(i64 32, ptr %635) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %631) #9
  br label %5187

5187:                                             ; preds = %5186, %5120
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %632) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %632) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %631) #9
  %5188 = load i1, ptr %643, align 1
  br i1 %5188, label %5189, label %5197

5189:                                             ; preds = %5187
  %5190 = load ptr, ptr %630, align 8
  %5191 = icmp eq ptr %629, %5190
  br i1 %5191, label %5196, label %5192

5192:                                             ; preds = %5192, %5189
  %5193 = phi ptr [ %5190, %5189 ], [ %5194, %5192 ]
  %5194 = getelementptr inbounds %"class.std::shared_ptr", ptr %5193, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5194) #9
  %5195 = icmp eq ptr %5194, %629
  br i1 %5195, label %5196, label %5192

5196:                                             ; preds = %5192, %5189
  br label %5197

5197:                                             ; preds = %5196, %5187
  call void @llvm.lifetime.end.p0(i64 16, ptr %629) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %627) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %626) #9
  br label %6393

5198:                                             ; preds = %4688, %4648
  %5199 = landingpad { ptr, i32 }
          catch ptr null
  %5200 = extractvalue { ptr, i32 } %5199, 0
  store ptr %5200, ptr %4, align 8
  %5201 = extractvalue { ptr, i32 } %5199, 1
  store i32 %5201, ptr %5, align 4
  br label %5269

5202:                                             ; preds = %4650
  %5203 = landingpad { ptr, i32 }
          catch ptr null
  %5204 = extractvalue { ptr, i32 } %5203, 0
  store ptr %5204, ptr %4, align 8
  %5205 = extractvalue { ptr, i32 } %5203, 1
  store i32 %5205, ptr %5, align 4
  br label %5244

5206:                                             ; preds = %4652
  %5207 = landingpad { ptr, i32 }
          catch ptr null
  %5208 = extractvalue { ptr, i32 } %5207, 0
  store ptr %5208, ptr %4, align 8
  %5209 = extractvalue { ptr, i32 } %5207, 1
  store i32 %5209, ptr %5, align 4
  br label %5243

5210:                                             ; preds = %4653
  %5211 = landingpad { ptr, i32 }
          catch ptr null
  %5212 = extractvalue { ptr, i32 } %5211, 0
  store ptr %5212, ptr %4, align 8
  %5213 = extractvalue { ptr, i32 } %5211, 1
  store i32 %5213, ptr %5, align 4
  br label %5242

5214:                                             ; preds = %4654
  %5215 = landingpad { ptr, i32 }
          catch ptr null
  %5216 = extractvalue { ptr, i32 } %5215, 0
  store ptr %5216, ptr %4, align 8
  %5217 = extractvalue { ptr, i32 } %5215, 1
  store i32 %5217, ptr %5, align 4
  br label %5234

5218:                                             ; preds = %4661
  %5219 = landingpad { ptr, i32 }
          catch ptr null
  %5220 = extractvalue { ptr, i32 } %5219, 0
  store ptr %5220, ptr %4, align 8
  %5221 = extractvalue { ptr, i32 } %5219, 1
  store i32 %5221, ptr %5, align 4
  br label %5226

5222:                                             ; preds = %4670, %4668
  %5223 = landingpad { ptr, i32 }
          catch ptr null
  %5224 = extractvalue { ptr, i32 } %5223, 0
  store ptr %5224, ptr %4, align 8
  %5225 = extractvalue { ptr, i32 } %5223, 1
  store i32 %5225, ptr %5, align 4
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %646) #9
  br label %5226

5226:                                             ; preds = %5222, %5218
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %659) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %659) #9
  %5227 = getelementptr inbounds [1 x %"class.std::vector"], ptr %648, i32 0, i32 0
  %5228 = getelementptr inbounds %"class.std::vector", ptr %5227, i64 1
  br label %5229

5229:                                             ; preds = %5229, %5226
  %5230 = phi ptr [ %5228, %5226 ], [ %5231, %5229 ]
  %5231 = getelementptr inbounds %"class.std::vector", ptr %5230, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5231) #9
  %5232 = icmp eq ptr %5231, %5227
  br i1 %5232, label %5233, label %5229

5233:                                             ; preds = %5229
  br label %5234

5234:                                             ; preds = %5233, %5214
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %657) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %657) #9
  %5235 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %651, i32 0, i32 0
  %5236 = getelementptr inbounds %"struct.std::pair", ptr %5235, i64 1
  br label %5237

5237:                                             ; preds = %5237, %5234
  %5238 = phi ptr [ %5236, %5234 ], [ %5239, %5237 ]
  %5239 = getelementptr inbounds %"struct.std::pair", ptr %5238, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5239) #9
  %5240 = icmp eq ptr %5239, %5235
  br i1 %5240, label %5241, label %5237

5241:                                             ; preds = %5237
  br label %5242

5242:                                             ; preds = %5241, %5210
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %653) #9
  br label %5243

5243:                                             ; preds = %5242, %5206
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %654) #9
  br label %5244

5244:                                             ; preds = %5243, %5202
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %655) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %655) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %654) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %653) #9
  %5245 = load i1, ptr %656, align 1
  br i1 %5245, label %5246, label %5254

5246:                                             ; preds = %5244
  %5247 = load ptr, ptr %652, align 8
  %5248 = icmp eq ptr %651, %5247
  br i1 %5248, label %5253, label %5249

5249:                                             ; preds = %5249, %5246
  %5250 = phi ptr [ %5247, %5246 ], [ %5251, %5249 ]
  %5251 = getelementptr inbounds %"struct.std::pair", ptr %5250, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5251) #9
  %5252 = icmp eq ptr %5251, %651
  br i1 %5252, label %5253, label %5249

5253:                                             ; preds = %5249, %5246
  br label %5254

5254:                                             ; preds = %5253, %5244
  call void @llvm.lifetime.end.p0(i64 32, ptr %651) #9
  %5255 = load i1, ptr %658, align 1
  br i1 %5255, label %5256, label %5264

5256:                                             ; preds = %5254
  %5257 = load ptr, ptr %649, align 8
  %5258 = icmp eq ptr %648, %5257
  br i1 %5258, label %5263, label %5259

5259:                                             ; preds = %5259, %5256
  %5260 = phi ptr [ %5257, %5256 ], [ %5261, %5259 ]
  %5261 = getelementptr inbounds %"class.std::vector", ptr %5260, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5261) #9
  %5262 = icmp eq ptr %5261, %648
  br i1 %5262, label %5263, label %5259

5263:                                             ; preds = %5259, %5256
  br label %5264

5264:                                             ; preds = %5263, %5254
  call void @llvm.lifetime.end.p0(i64 24, ptr %648) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %645) #9
  br label %5269

5265:                                             ; preds = %4695, %4693, %4690
  %5266 = landingpad { ptr, i32 }
          catch ptr null
  %5267 = extractvalue { ptr, i32 } %5266, 0
  store ptr %5267, ptr %4, align 8
  %5268 = extractvalue { ptr, i32 } %5266, 1
  store i32 %5268, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %660) #9
  br label %5269

5269:                                             ; preds = %5265, %5264, %5198
  %5270 = load ptr, ptr %4, align 8
  %5271 = call ptr @__cxa_begin_catch(ptr %5270) #9
  %5272 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %5273 unwind label %5531

5273:                                             ; preds = %5269
  %5274 = load ptr, ptr %5272, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %661) #9
  %5275 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %5276 unwind label %5535

5276:                                             ; preds = %5273
  %5277 = load ptr, ptr %5275, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %661, ptr noundef nonnull align 8 dereferenceable(30) %5277, i32 noundef 2462)
          to label %5278 unwind label %5535

5278:                                             ; preds = %5276
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %5274, ptr noundef nonnull align 8 dereferenceable(30) %661, ptr noundef @.str.541)
          to label %5279 unwind label %5535

5279:                                             ; preds = %5278
  call void @llvm.lifetime.end.p0(i64 32, ptr %661) #9
  invoke void @__cxa_end_catch()
          to label %5280 unwind label %5539

5280:                                             ; preds = %5279
  br label %5281

5281:                                             ; preds = %5530, %5280
  br label %5282

5282:                                             ; preds = %5281
  br label %5283

5283:                                             ; preds = %5282
  %5284 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %5284)
          to label %5285 unwind label %5539

5285:                                             ; preds = %5283
  call void @llvm.lifetime.start.p0(i64 16, ptr %662) #9
  %5286 = 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 %663) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %664) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %664) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %663, ptr noundef @.str.542, ptr noundef nonnull align 1 dereferenceable(1) %664)
          to label %5287 unwind label %5545

5287:                                             ; preds = %5285
  call void @llvm.lifetime.start.p0(i64 32, ptr %667) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %667, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  %5288 = getelementptr inbounds %"class.std::shared_ptr", ptr %667, i64 1
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %5288, ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  %5289 = getelementptr inbounds %"class.std::initializer_list.94", ptr %666, i32 0, i32 0
  store ptr %667, ptr %5289, align 8, !tbaa !9
  %5290 = getelementptr inbounds %"class.std::initializer_list.94", ptr %666, i32 0, i32 1
  store i64 2, ptr %5290, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %668) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %668) #9
  %5291 = getelementptr inbounds { ptr, i64 }, ptr %666, i32 0, i32 0
  %5292 = load ptr, ptr %5291, align 8
  %5293 = getelementptr inbounds { ptr, i64 }, ptr %666, i32 0, i32 1
  %5294 = load i64, ptr %5293, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %665, ptr %5292, i64 %5294, ptr noundef nonnull align 1 dereferenceable(1) %668)
          to label %5295 unwind label %5549

5295:                                             ; preds = %5287
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %662, ptr noundef nonnull align 8 dereferenceable(33088) %5286, ptr noundef nonnull align 8 dereferenceable(32) %663, ptr noundef %665)
          to label %5296 unwind label %5553

5296:                                             ; preds = %5295
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %665) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %668) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %668) #9
  %5297 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %667, i32 0, i32 0
  %5298 = getelementptr inbounds %"class.std::shared_ptr", ptr %5297, i64 2
  br label %5299

5299:                                             ; preds = %5299, %5296
  %5300 = phi ptr [ %5298, %5296 ], [ %5301, %5299 ]
  %5301 = getelementptr inbounds %"class.std::shared_ptr", ptr %5300, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5301) #9
  %5302 = icmp eq ptr %5301, %5297
  br i1 %5302, label %5303, label %5299

5303:                                             ; preds = %5299
  call void @llvm.lifetime.end.p0(i64 32, ptr %667) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %663) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %664) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %664) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %663) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %669) #9
  %5304 = 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 %670) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %671) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %671) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %670, ptr noundef @.str.542, ptr noundef nonnull align 1 dereferenceable(1) %671)
          to label %5305 unwind label %5566

5305:                                             ; preds = %5303
  call void @llvm.lifetime.start.p0(i64 32, ptr %674) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %674, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  %5306 = getelementptr inbounds %"class.std::shared_ptr", ptr %674, i64 1
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %5306, ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  %5307 = getelementptr inbounds %"class.std::initializer_list.94", ptr %673, i32 0, i32 0
  store ptr %674, ptr %5307, align 8, !tbaa !9
  %5308 = getelementptr inbounds %"class.std::initializer_list.94", ptr %673, i32 0, i32 1
  store i64 2, ptr %5308, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %675) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %675) #9
  %5309 = getelementptr inbounds { ptr, i64 }, ptr %673, i32 0, i32 0
  %5310 = load ptr, ptr %5309, align 8
  %5311 = getelementptr inbounds { ptr, i64 }, ptr %673, i32 0, i32 1
  %5312 = load i64, ptr %5311, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %672, ptr %5310, i64 %5312, ptr noundef nonnull align 1 dereferenceable(1) %675)
          to label %5313 unwind label %5570

5313:                                             ; preds = %5305
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %669, ptr noundef nonnull align 8 dereferenceable(33088) %5304, ptr noundef nonnull align 8 dereferenceable(32) %670, ptr noundef %672)
          to label %5314 unwind label %5574

5314:                                             ; preds = %5313
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %672) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %675) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %675) #9
  %5315 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %674, i32 0, i32 0
  %5316 = getelementptr inbounds %"class.std::shared_ptr", ptr %5315, i64 2
  br label %5317

5317:                                             ; preds = %5317, %5314
  %5318 = phi ptr [ %5316, %5314 ], [ %5319, %5317 ]
  %5319 = getelementptr inbounds %"class.std::shared_ptr", ptr %5318, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5319) #9
  %5320 = icmp eq ptr %5319, %5315
  br i1 %5320, label %5321, label %5317

5321:                                             ; preds = %5317
  call void @llvm.lifetime.end.p0(i64 32, ptr %674) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %670) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %671) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %671) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %670) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %676) #9
  %5322 = 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 %677) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %678) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %678) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %677, ptr noundef @.str.542, ptr noundef nonnull align 1 dereferenceable(1) %678)
          to label %5323 unwind label %5587

5323:                                             ; preds = %5321
  call void @llvm.lifetime.start.p0(i64 32, ptr %681) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %681, ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  %5324 = getelementptr inbounds %"class.std::shared_ptr", ptr %681, i64 1
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %5324, ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  %5325 = getelementptr inbounds %"class.std::initializer_list.94", ptr %680, i32 0, i32 0
  store ptr %681, ptr %5325, align 8, !tbaa !9
  %5326 = getelementptr inbounds %"class.std::initializer_list.94", ptr %680, i32 0, i32 1
  store i64 2, ptr %5326, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %682) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %682) #9
  %5327 = getelementptr inbounds { ptr, i64 }, ptr %680, i32 0, i32 0
  %5328 = load ptr, ptr %5327, align 8
  %5329 = getelementptr inbounds { ptr, i64 }, ptr %680, i32 0, i32 1
  %5330 = load i64, ptr %5329, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %679, ptr %5328, i64 %5330, ptr noundef nonnull align 1 dereferenceable(1) %682)
          to label %5331 unwind label %5591

5331:                                             ; preds = %5323
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %676, ptr noundef nonnull align 8 dereferenceable(33088) %5322, ptr noundef nonnull align 8 dereferenceable(32) %677, ptr noundef %679)
          to label %5332 unwind label %5595

5332:                                             ; preds = %5331
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %679) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %682) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %682) #9
  %5333 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %681, i32 0, i32 0
  %5334 = getelementptr inbounds %"class.std::shared_ptr", ptr %5333, i64 2
  br label %5335

5335:                                             ; preds = %5335, %5332
  %5336 = phi ptr [ %5334, %5332 ], [ %5337, %5335 ]
  %5337 = getelementptr inbounds %"class.std::shared_ptr", ptr %5336, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5337) #9
  %5338 = icmp eq ptr %5337, %5333
  br i1 %5338, label %5339, label %5335

5339:                                             ; preds = %5335
  call void @llvm.lifetime.end.p0(i64 32, ptr %681) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %677) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %678) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %678) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %677) #9
  %5340 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %5341 = 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 %684) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %685) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %685) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %684, ptr noundef @.str.543, ptr noundef nonnull align 1 dereferenceable(1) %685)
          to label %5342 unwind label %5608

5342:                                             ; preds = %5339
  call void @llvm.lifetime.start.p0(i64 16, ptr %688) #9
  store i1 true, ptr %696, align 1
  store ptr %688, ptr %689, align 8
  %5343 = 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 %690) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %691) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %691) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %690, ptr noundef @.str.544, ptr noundef nonnull align 1 dereferenceable(1) %691)
          to label %5344 unwind label %5612

5344:                                             ; preds = %5342
  call void @llvm.lifetime.start.p0(i64 32, ptr %694) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %694, ptr noundef nonnull align 8 dereferenceable(16) %662) #9
  %5345 = getelementptr inbounds %"class.std::shared_ptr", ptr %694, i64 1
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %5345, ptr noundef nonnull align 8 dereferenceable(16) %669) #9
  %5346 = getelementptr inbounds %"class.std::initializer_list.94", ptr %693, i32 0, i32 0
  store ptr %694, ptr %5346, align 8, !tbaa !9
  %5347 = getelementptr inbounds %"class.std::initializer_list.94", ptr %693, i32 0, i32 1
  store i64 2, ptr %5347, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %695) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %695) #9
  %5348 = getelementptr inbounds { ptr, i64 }, ptr %693, i32 0, i32 0
  %5349 = load ptr, ptr %5348, align 8
  %5350 = getelementptr inbounds { ptr, i64 }, ptr %693, i32 0, i32 1
  %5351 = load i64, ptr %5350, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %692, ptr %5349, i64 %5351, ptr noundef nonnull align 1 dereferenceable(1) %695)
          to label %5352 unwind label %5616

5352:                                             ; preds = %5344
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %688, ptr noundef nonnull align 8 dereferenceable(33088) %5343, ptr noundef nonnull align 8 dereferenceable(32) %690, ptr noundef %692)
          to label %5353 unwind label %5620

5353:                                             ; preds = %5352
  store i1 false, ptr %696, align 1
  %5354 = getelementptr inbounds %"class.std::initializer_list.94", ptr %687, i32 0, i32 0
  store ptr %688, ptr %5354, align 8, !tbaa !9
  %5355 = getelementptr inbounds %"class.std::initializer_list.94", ptr %687, i32 0, i32 1
  store i64 1, ptr %5355, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %697) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %697) #9
  %5356 = getelementptr inbounds { ptr, i64 }, ptr %687, i32 0, i32 0
  %5357 = load ptr, ptr %5356, align 8
  %5358 = getelementptr inbounds { ptr, i64 }, ptr %687, i32 0, i32 1
  %5359 = load i64, ptr %5358, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %686, ptr %5357, i64 %5359, ptr noundef nonnull align 1 dereferenceable(1) %697)
          to label %5360 unwind label %5624

5360:                                             ; preds = %5353
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %683, ptr noundef nonnull align 8 dereferenceable(33088) %5341, ptr noundef nonnull align 8 dereferenceable(32) %684, ptr noundef %686)
          to label %5361 unwind label %5628

5361:                                             ; preds = %5360
  call void @llvm.memset.p0.i64(ptr align 8 %698, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %698) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %5340, ptr noundef %683, ptr noundef %698)
          to label %5362 unwind label %5632

5362:                                             ; preds = %5361
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %698) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %683) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %686) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %697) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %697) #9
  %5363 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %688, i32 0, i32 0
  %5364 = getelementptr inbounds %"class.std::shared_ptr", ptr %5363, i64 1
  br label %5365

5365:                                             ; preds = %5365, %5362
  %5366 = phi ptr [ %5364, %5362 ], [ %5367, %5365 ]
  %5367 = getelementptr inbounds %"class.std::shared_ptr", ptr %5366, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5367) #9
  %5368 = icmp eq ptr %5367, %5363
  br i1 %5368, label %5369, label %5365

5369:                                             ; preds = %5365
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %692) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %695) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %695) #9
  %5370 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %694, i32 0, i32 0
  %5371 = getelementptr inbounds %"class.std::shared_ptr", ptr %5370, i64 2
  br label %5372

5372:                                             ; preds = %5372, %5369
  %5373 = phi ptr [ %5371, %5369 ], [ %5374, %5372 ]
  %5374 = getelementptr inbounds %"class.std::shared_ptr", ptr %5373, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5374) #9
  %5375 = icmp eq ptr %5374, %5370
  br i1 %5375, label %5376, label %5372

5376:                                             ; preds = %5372
  call void @llvm.lifetime.end.p0(i64 32, ptr %694) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %690) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %691) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %691) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %690) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %688) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %684) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %685) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %685) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %684) #9
  %5377 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  %5378 = 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 %700) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %701) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %701) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %700, ptr noundef @.str.545, ptr noundef nonnull align 1 dereferenceable(1) %701)
          to label %5379 unwind label %5666

5379:                                             ; preds = %5376
  call void @llvm.lifetime.start.p0(i64 16, ptr %704) #9
  store i1 true, ptr %712, align 1
  store ptr %704, ptr %705, align 8
  %5380 = 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 %706) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %707) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %707) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %706, ptr noundef @.str.544, ptr noundef nonnull align 1 dereferenceable(1) %707)
          to label %5381 unwind label %5670

5381:                                             ; preds = %5379
  call void @llvm.lifetime.start.p0(i64 32, ptr %710) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %710, ptr noundef nonnull align 8 dereferenceable(16) %662) #9
  %5382 = getelementptr inbounds %"class.std::shared_ptr", ptr %710, i64 1
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %5382, ptr noundef nonnull align 8 dereferenceable(16) %676) #9
  %5383 = getelementptr inbounds %"class.std::initializer_list.94", ptr %709, i32 0, i32 0
  store ptr %710, ptr %5383, align 8, !tbaa !9
  %5384 = getelementptr inbounds %"class.std::initializer_list.94", ptr %709, i32 0, i32 1
  store i64 2, ptr %5384, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %711) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %711) #9
  %5385 = getelementptr inbounds { ptr, i64 }, ptr %709, i32 0, i32 0
  %5386 = load ptr, ptr %5385, align 8
  %5387 = getelementptr inbounds { ptr, i64 }, ptr %709, i32 0, i32 1
  %5388 = load i64, ptr %5387, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %708, ptr %5386, i64 %5388, ptr noundef nonnull align 1 dereferenceable(1) %711)
          to label %5389 unwind label %5674

5389:                                             ; preds = %5381
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %704, ptr noundef nonnull align 8 dereferenceable(33088) %5380, ptr noundef nonnull align 8 dereferenceable(32) %706, ptr noundef %708)
          to label %5390 unwind label %5678

5390:                                             ; preds = %5389
  store i1 false, ptr %712, align 1
  %5391 = getelementptr inbounds %"class.std::initializer_list.94", ptr %703, i32 0, i32 0
  store ptr %704, ptr %5391, align 8, !tbaa !9
  %5392 = getelementptr inbounds %"class.std::initializer_list.94", ptr %703, i32 0, i32 1
  store i64 1, ptr %5392, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %713) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %713) #9
  %5393 = getelementptr inbounds { ptr, i64 }, ptr %703, i32 0, i32 0
  %5394 = load ptr, ptr %5393, align 8
  %5395 = getelementptr inbounds { ptr, i64 }, ptr %703, i32 0, i32 1
  %5396 = load i64, ptr %5395, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %702, ptr %5394, i64 %5396, ptr noundef nonnull align 1 dereferenceable(1) %713)
          to label %5397 unwind label %5682

5397:                                             ; preds = %5390
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %699, ptr noundef nonnull align 8 dereferenceable(33088) %5378, ptr noundef nonnull align 8 dereferenceable(32) %700, ptr noundef %702)
          to label %5398 unwind label %5686

5398:                                             ; preds = %5397
  call void @llvm.memset.p0.i64(ptr align 8 %714, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %714) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %5377, ptr noundef %699, ptr noundef %714)
          to label %5399 unwind label %5690

5399:                                             ; preds = %5398
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %714) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %699) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %702) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %713) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %713) #9
  %5400 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %704, i32 0, i32 0
  %5401 = getelementptr inbounds %"class.std::shared_ptr", ptr %5400, i64 1
  br label %5402

5402:                                             ; preds = %5402, %5399
  %5403 = phi ptr [ %5401, %5399 ], [ %5404, %5402 ]
  %5404 = getelementptr inbounds %"class.std::shared_ptr", ptr %5403, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5404) #9
  %5405 = icmp eq ptr %5404, %5400
  br i1 %5405, label %5406, label %5402

5406:                                             ; preds = %5402
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %708) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %711) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %711) #9
  %5407 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %710, i32 0, i32 0
  %5408 = getelementptr inbounds %"class.std::shared_ptr", ptr %5407, i64 2
  br label %5409

5409:                                             ; preds = %5409, %5406
  %5410 = phi ptr [ %5408, %5406 ], [ %5411, %5409 ]
  %5411 = getelementptr inbounds %"class.std::shared_ptr", ptr %5410, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5411) #9
  %5412 = icmp eq ptr %5411, %5407
  br i1 %5412, label %5413, label %5409

5413:                                             ; preds = %5409
  call void @llvm.lifetime.end.p0(i64 32, ptr %710) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %706) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %707) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %707) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %706) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %704) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %700) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %701) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %701) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %700) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %715) #9
  %5414 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  %5415 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %5416 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %716) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %718) #9
  store i1 true, ptr %760, align 1
  store ptr %718, ptr %719, align 8
  %5417 = 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 %720) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %721) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %721) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %720, ptr noundef @.str.543, ptr noundef nonnull align 1 dereferenceable(1) %721)
          to label %5418 unwind label %5724

5418:                                             ; preds = %5413
  call void @llvm.lifetime.start.p0(i64 16, ptr %724) #9
  store i1 true, ptr %758, align 1
  store ptr %724, ptr %725, align 8
  %5419 = 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 %726) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %727) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %727) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %726, ptr noundef @.str.544, ptr noundef nonnull align 1 dereferenceable(1) %727)
          to label %5420 unwind label %5728

5420:                                             ; preds = %5418
  call void @llvm.lifetime.start.p0(i64 32, ptr %730) #9
  store i1 true, ptr %756, align 1
  store ptr %730, ptr %731, align 8
  %5421 = 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 %732) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %733) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %733) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %732, ptr noundef @.str.542, ptr noundef nonnull align 1 dereferenceable(1) %733)
          to label %5422 unwind label %5732

5422:                                             ; preds = %5420
  call void @llvm.lifetime.start.p0(i64 32, ptr %736) #9
  store i1 true, ptr %742, align 1
  store ptr %736, ptr %737, align 8
  %5423 = 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 %738) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %739) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %739) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %738, ptr noundef @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %739)
          to label %5424 unwind label %5736

5424:                                             ; preds = %5422
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %736, ptr noundef nonnull align 8 dereferenceable(33088) %5423, ptr noundef nonnull align 8 dereferenceable(32) %738)
          to label %5425 unwind label %5740

5425:                                             ; preds = %5424
  %5426 = getelementptr inbounds %"class.std::shared_ptr", ptr %736, i64 1
  store ptr %5426, ptr %737, align 8
  %5427 = 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 %740) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %741) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %741) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %740, ptr noundef @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %741)
          to label %5428 unwind label %5744

5428:                                             ; preds = %5425
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %5426, ptr noundef nonnull align 8 dereferenceable(33088) %5427, ptr noundef nonnull align 8 dereferenceable(32) %740)
          to label %5429 unwind label %5748

5429:                                             ; preds = %5428
  store i1 false, ptr %742, align 1
  %5430 = getelementptr inbounds %"class.std::initializer_list.94", ptr %735, i32 0, i32 0
  store ptr %736, ptr %5430, align 8, !tbaa !9
  %5431 = getelementptr inbounds %"class.std::initializer_list.94", ptr %735, i32 0, i32 1
  store i64 2, ptr %5431, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %743) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %743) #9
  %5432 = getelementptr inbounds { ptr, i64 }, ptr %735, i32 0, i32 0
  %5433 = load ptr, ptr %5432, align 8
  %5434 = getelementptr inbounds { ptr, i64 }, ptr %735, i32 0, i32 1
  %5435 = load i64, ptr %5434, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %734, ptr %5433, i64 %5435, ptr noundef nonnull align 1 dereferenceable(1) %743)
          to label %5436 unwind label %5752

5436:                                             ; preds = %5429
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %730, ptr noundef nonnull align 8 dereferenceable(33088) %5421, ptr noundef nonnull align 8 dereferenceable(32) %732, ptr noundef %734)
          to label %5437 unwind label %5756

5437:                                             ; preds = %5436
  %5438 = getelementptr inbounds %"class.std::shared_ptr", ptr %730, i64 1
  store ptr %5438, ptr %731, align 8
  %5439 = 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 %744) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %745) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %745) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %744, ptr noundef @.str.542, ptr noundef nonnull align 1 dereferenceable(1) %745)
          to label %5440 unwind label %5760

5440:                                             ; preds = %5437
  call void @llvm.lifetime.start.p0(i64 32, ptr %748) #9
  store i1 true, ptr %754, align 1
  store ptr %748, ptr %749, align 8
  %5441 = 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 %750) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %751) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %751) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %750, ptr noundef @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %751)
          to label %5442 unwind label %5764

5442:                                             ; preds = %5440
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %748, ptr noundef nonnull align 8 dereferenceable(33088) %5441, ptr noundef nonnull align 8 dereferenceable(32) %750)
          to label %5443 unwind label %5768

5443:                                             ; preds = %5442
  %5444 = getelementptr inbounds %"class.std::shared_ptr", ptr %748, i64 1
  store ptr %5444, ptr %749, align 8
  %5445 = 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 %752) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %753) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %753) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %752, ptr noundef @.str.546, ptr noundef nonnull align 1 dereferenceable(1) %753)
          to label %5446 unwind label %5772

5446:                                             ; preds = %5443
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %5444, ptr noundef nonnull align 8 dereferenceable(33088) %5445, ptr noundef nonnull align 8 dereferenceable(32) %752)
          to label %5447 unwind label %5776

5447:                                             ; preds = %5446
  store i1 false, ptr %754, align 1
  %5448 = getelementptr inbounds %"class.std::initializer_list.94", ptr %747, i32 0, i32 0
  store ptr %748, ptr %5448, align 8, !tbaa !9
  %5449 = getelementptr inbounds %"class.std::initializer_list.94", ptr %747, i32 0, i32 1
  store i64 2, ptr %5449, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %755) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %755) #9
  %5450 = getelementptr inbounds { ptr, i64 }, ptr %747, i32 0, i32 0
  %5451 = load ptr, ptr %5450, align 8
  %5452 = getelementptr inbounds { ptr, i64 }, ptr %747, i32 0, i32 1
  %5453 = load i64, ptr %5452, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %746, ptr %5451, i64 %5453, ptr noundef nonnull align 1 dereferenceable(1) %755)
          to label %5454 unwind label %5780

5454:                                             ; preds = %5447
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %5438, ptr noundef nonnull align 8 dereferenceable(33088) %5439, ptr noundef nonnull align 8 dereferenceable(32) %744, ptr noundef %746)
          to label %5455 unwind label %5784

5455:                                             ; preds = %5454
  store i1 false, ptr %756, align 1
  %5456 = getelementptr inbounds %"class.std::initializer_list.94", ptr %729, i32 0, i32 0
  store ptr %730, ptr %5456, align 8, !tbaa !9
  %5457 = getelementptr inbounds %"class.std::initializer_list.94", ptr %729, i32 0, i32 1
  store i64 2, ptr %5457, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %757) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %757) #9
  %5458 = getelementptr inbounds { ptr, i64 }, ptr %729, i32 0, i32 0
  %5459 = load ptr, ptr %5458, align 8
  %5460 = getelementptr inbounds { ptr, i64 }, ptr %729, i32 0, i32 1
  %5461 = load i64, ptr %5460, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %728, ptr %5459, i64 %5461, ptr noundef nonnull align 1 dereferenceable(1) %757)
          to label %5462 unwind label %5788

5462:                                             ; preds = %5455
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %724, ptr noundef nonnull align 8 dereferenceable(33088) %5419, ptr noundef nonnull align 8 dereferenceable(32) %726, ptr noundef %728)
          to label %5463 unwind label %5792

5463:                                             ; preds = %5462
  store i1 false, ptr %758, align 1
  %5464 = getelementptr inbounds %"class.std::initializer_list.94", ptr %723, i32 0, i32 0
  store ptr %724, ptr %5464, align 8, !tbaa !9
  %5465 = getelementptr inbounds %"class.std::initializer_list.94", ptr %723, i32 0, i32 1
  store i64 1, ptr %5465, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %759) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %759) #9
  %5466 = getelementptr inbounds { ptr, i64 }, ptr %723, i32 0, i32 0
  %5467 = load ptr, ptr %5466, align 8
  %5468 = getelementptr inbounds { ptr, i64 }, ptr %723, i32 0, i32 1
  %5469 = load i64, ptr %5468, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %722, ptr %5467, i64 %5469, ptr noundef nonnull align 1 dereferenceable(1) %759)
          to label %5470 unwind label %5796

5470:                                             ; preds = %5463
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %718, ptr noundef nonnull align 8 dereferenceable(33088) %5417, ptr noundef nonnull align 8 dereferenceable(32) %720, ptr noundef %722)
          to label %5471 unwind label %5800

5471:                                             ; preds = %5470
  store i1 false, ptr %760, align 1
  %5472 = getelementptr inbounds %"class.std::initializer_list.94", ptr %717, i32 0, i32 0
  store ptr %718, ptr %5472, align 8, !tbaa !9
  %5473 = getelementptr inbounds %"class.std::initializer_list.94", ptr %717, i32 0, i32 1
  store i64 1, ptr %5473, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %761) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %761) #9
  %5474 = getelementptr inbounds { ptr, i64 }, ptr %717, i32 0, i32 0
  %5475 = load ptr, ptr %5474, align 8
  %5476 = getelementptr inbounds { ptr, i64 }, ptr %717, i32 0, i32 1
  %5477 = load i64, ptr %5476, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %716, ptr %5475, i64 %5477, ptr noundef nonnull align 1 dereferenceable(1) %761)
          to label %5478 unwind label %5804

5478:                                             ; preds = %5471
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %715, ptr noundef nonnull align 8 dereferenceable(64) %5414, ptr noundef %5415, ptr noundef %5416, ptr noundef nonnull align 8 dereferenceable(24) %716, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %5479 unwind label %5808

5479:                                             ; preds = %5478
  %5480 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %715) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %715) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %716) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %761) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %761) #9
  %5481 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %718, i32 0, i32 0
  %5482 = getelementptr inbounds %"class.std::shared_ptr", ptr %5481, i64 1
  br label %5483

5483:                                             ; preds = %5483, %5479
  %5484 = phi ptr [ %5482, %5479 ], [ %5485, %5483 ]
  %5485 = getelementptr inbounds %"class.std::shared_ptr", ptr %5484, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5485) #9
  %5486 = icmp eq ptr %5485, %5481
  br i1 %5486, label %5487, label %5483

5487:                                             ; preds = %5483
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %722) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %759) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %759) #9
  %5488 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %724, i32 0, i32 0
  %5489 = getelementptr inbounds %"class.std::shared_ptr", ptr %5488, i64 1
  br label %5490

5490:                                             ; preds = %5490, %5487
  %5491 = phi ptr [ %5489, %5487 ], [ %5492, %5490 ]
  %5492 = getelementptr inbounds %"class.std::shared_ptr", ptr %5491, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5492) #9
  %5493 = icmp eq ptr %5492, %5488
  br i1 %5493, label %5494, label %5490

5494:                                             ; preds = %5490
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %728) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %757) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %757) #9
  %5495 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %730, i32 0, i32 0
  %5496 = getelementptr inbounds %"class.std::shared_ptr", ptr %5495, i64 2
  br label %5497

5497:                                             ; preds = %5497, %5494
  %5498 = phi ptr [ %5496, %5494 ], [ %5499, %5497 ]
  %5499 = getelementptr inbounds %"class.std::shared_ptr", ptr %5498, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5499) #9
  %5500 = icmp eq ptr %5499, %5495
  br i1 %5500, label %5501, label %5497

5501:                                             ; preds = %5497
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %746) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %755) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %755) #9
  %5502 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %748, i32 0, i32 0
  %5503 = getelementptr inbounds %"class.std::shared_ptr", ptr %5502, i64 2
  br label %5504

5504:                                             ; preds = %5504, %5501
  %5505 = phi ptr [ %5503, %5501 ], [ %5506, %5504 ]
  %5506 = getelementptr inbounds %"class.std::shared_ptr", ptr %5505, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5506) #9
  %5507 = icmp eq ptr %5506, %5502
  br i1 %5507, label %5508, label %5504

5508:                                             ; preds = %5504
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %752) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %753) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %753) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %752) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %750) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %751) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %751) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %750) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %748) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %744) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %745) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %745) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %744) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %734) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %743) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %743) #9
  %5509 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %736, i32 0, i32 0
  %5510 = getelementptr inbounds %"class.std::shared_ptr", ptr %5509, i64 2
  br label %5511

5511:                                             ; preds = %5511, %5508
  %5512 = phi ptr [ %5510, %5508 ], [ %5513, %5511 ]
  %5513 = getelementptr inbounds %"class.std::shared_ptr", ptr %5512, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5513) #9
  %5514 = icmp eq ptr %5513, %5509
  br i1 %5514, label %5515, label %5511

5515:                                             ; preds = %5511
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %740) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %741) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %741) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %740) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %738) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %739) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %739) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %738) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %736) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %732) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %733) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %733) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %732) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %730) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %726) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %727) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %727) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %726) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %724) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %720) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %721) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %721) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %720) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %718) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %716) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %715) #9
  br label %5516

5516:                                             ; preds = %5515
  call void @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %762, ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  %5517 = call noundef zeroext i1 @_ZN25SuiteHtnGoalResolverTests6IsTrueESt10shared_ptrISt6vectorIS1_ISt4pairIS0_I7HtnTermES4_ESaIS5_EESaIS7_EEE(ptr noundef %762)
  %5518 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %5517)
          to label %5519 unwind label %5918

5519:                                             ; preds = %5516
  %5520 = xor i1 %5518, true
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %762) #9
  br i1 %5520, label %5521, label %6093

5521:                                             ; preds = %5519
  %5522 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %5523 unwind label %5922

5523:                                             ; preds = %5521
  %5524 = load ptr, ptr %5522, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %763) #9
  %5525 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %5526 unwind label %5926

5526:                                             ; preds = %5523
  %5527 = load ptr, ptr %5525, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %763, ptr noundef nonnull align 8 dereferenceable(30) %5527, i32 noundef 2484)
          to label %5528 unwind label %5926

5528:                                             ; preds = %5526
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %5524, ptr noundef nonnull align 8 dereferenceable(30) %763, ptr noundef @.str.507)
          to label %5529 unwind label %5926

5529:                                             ; preds = %5528
  call void @llvm.lifetime.end.p0(i64 32, ptr %763) #9
  br label %6093

5530:                                             ; preds = %4696, %4687
  br label %5281

5531:                                             ; preds = %5269
  %5532 = landingpad { ptr, i32 }
          cleanup
  %5533 = extractvalue { ptr, i32 } %5532, 0
  store ptr %5533, ptr %4, align 8
  %5534 = extractvalue { ptr, i32 } %5532, 1
  store i32 %5534, ptr %5, align 4
  br label %5543

5535:                                             ; preds = %5278, %5276, %5273
  %5536 = landingpad { ptr, i32 }
          cleanup
  %5537 = extractvalue { ptr, i32 } %5536, 0
  store ptr %5537, ptr %4, align 8
  %5538 = extractvalue { ptr, i32 } %5536, 1
  store i32 %5538, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %661) #9
  br label %5543

5539:                                             ; preds = %5283, %5279
  %5540 = landingpad { ptr, i32 }
          cleanup
  %5541 = extractvalue { ptr, i32 } %5540, 0
  store ptr %5541, ptr %4, align 8
  %5542 = extractvalue { ptr, i32 } %5540, 1
  store i32 %5542, ptr %5, align 4
  br label %6393

5543:                                             ; preds = %5535, %5531
  invoke void @__cxa_end_catch()
          to label %5544 unwind label %6410

5544:                                             ; preds = %5543
  br label %6393

5545:                                             ; preds = %5285
  %5546 = landingpad { ptr, i32 }
          cleanup
  %5547 = extractvalue { ptr, i32 } %5546, 0
  store ptr %5547, ptr %4, align 8
  %5548 = extractvalue { ptr, i32 } %5546, 1
  store i32 %5548, ptr %5, align 4
  br label %5565

5549:                                             ; preds = %5287
  %5550 = landingpad { ptr, i32 }
          cleanup
  %5551 = extractvalue { ptr, i32 } %5550, 0
  store ptr %5551, ptr %4, align 8
  %5552 = extractvalue { ptr, i32 } %5550, 1
  store i32 %5552, ptr %5, align 4
  br label %5557

5553:                                             ; preds = %5295
  %5554 = landingpad { ptr, i32 }
          cleanup
  %5555 = extractvalue { ptr, i32 } %5554, 0
  store ptr %5555, ptr %4, align 8
  %5556 = extractvalue { ptr, i32 } %5554, 1
  store i32 %5556, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %665) #9
  br label %5557

5557:                                             ; preds = %5553, %5549
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %668) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %668) #9
  %5558 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %667, i32 0, i32 0
  %5559 = getelementptr inbounds %"class.std::shared_ptr", ptr %5558, i64 2
  br label %5560

5560:                                             ; preds = %5560, %5557
  %5561 = phi ptr [ %5559, %5557 ], [ %5562, %5560 ]
  %5562 = getelementptr inbounds %"class.std::shared_ptr", ptr %5561, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5562) #9
  %5563 = icmp eq ptr %5562, %5558
  br i1 %5563, label %5564, label %5560

5564:                                             ; preds = %5560
  call void @llvm.lifetime.end.p0(i64 32, ptr %667) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %663) #9
  br label %5565

5565:                                             ; preds = %5564, %5545
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %664) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %664) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %663) #9
  br label %6392

5566:                                             ; preds = %5303
  %5567 = landingpad { ptr, i32 }
          cleanup
  %5568 = extractvalue { ptr, i32 } %5567, 0
  store ptr %5568, ptr %4, align 8
  %5569 = extractvalue { ptr, i32 } %5567, 1
  store i32 %5569, ptr %5, align 4
  br label %5586

5570:                                             ; preds = %5305
  %5571 = landingpad { ptr, i32 }
          cleanup
  %5572 = extractvalue { ptr, i32 } %5571, 0
  store ptr %5572, ptr %4, align 8
  %5573 = extractvalue { ptr, i32 } %5571, 1
  store i32 %5573, ptr %5, align 4
  br label %5578

5574:                                             ; preds = %5313
  %5575 = landingpad { ptr, i32 }
          cleanup
  %5576 = extractvalue { ptr, i32 } %5575, 0
  store ptr %5576, ptr %4, align 8
  %5577 = extractvalue { ptr, i32 } %5575, 1
  store i32 %5577, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %672) #9
  br label %5578

5578:                                             ; preds = %5574, %5570
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %675) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %675) #9
  %5579 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %674, i32 0, i32 0
  %5580 = getelementptr inbounds %"class.std::shared_ptr", ptr %5579, i64 2
  br label %5581

5581:                                             ; preds = %5581, %5578
  %5582 = phi ptr [ %5580, %5578 ], [ %5583, %5581 ]
  %5583 = getelementptr inbounds %"class.std::shared_ptr", ptr %5582, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5583) #9
  %5584 = icmp eq ptr %5583, %5579
  br i1 %5584, label %5585, label %5581

5585:                                             ; preds = %5581
  call void @llvm.lifetime.end.p0(i64 32, ptr %674) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %670) #9
  br label %5586

5586:                                             ; preds = %5585, %5566
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %671) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %671) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %670) #9
  br label %6391

5587:                                             ; preds = %5321
  %5588 = landingpad { ptr, i32 }
          cleanup
  %5589 = extractvalue { ptr, i32 } %5588, 0
  store ptr %5589, ptr %4, align 8
  %5590 = extractvalue { ptr, i32 } %5588, 1
  store i32 %5590, ptr %5, align 4
  br label %5607

5591:                                             ; preds = %5323
  %5592 = landingpad { ptr, i32 }
          cleanup
  %5593 = extractvalue { ptr, i32 } %5592, 0
  store ptr %5593, ptr %4, align 8
  %5594 = extractvalue { ptr, i32 } %5592, 1
  store i32 %5594, ptr %5, align 4
  br label %5599

5595:                                             ; preds = %5331
  %5596 = landingpad { ptr, i32 }
          cleanup
  %5597 = extractvalue { ptr, i32 } %5596, 0
  store ptr %5597, ptr %4, align 8
  %5598 = extractvalue { ptr, i32 } %5596, 1
  store i32 %5598, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %679) #9
  br label %5599

5599:                                             ; preds = %5595, %5591
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %682) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %682) #9
  %5600 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %681, i32 0, i32 0
  %5601 = getelementptr inbounds %"class.std::shared_ptr", ptr %5600, i64 2
  br label %5602

5602:                                             ; preds = %5602, %5599
  %5603 = phi ptr [ %5601, %5599 ], [ %5604, %5602 ]
  %5604 = getelementptr inbounds %"class.std::shared_ptr", ptr %5603, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5604) #9
  %5605 = icmp eq ptr %5604, %5600
  br i1 %5605, label %5606, label %5602

5606:                                             ; preds = %5602
  call void @llvm.lifetime.end.p0(i64 32, ptr %681) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %677) #9
  br label %5607

5607:                                             ; preds = %5606, %5587
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %678) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %678) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %677) #9
  br label %6390

5608:                                             ; preds = %5339
  %5609 = landingpad { ptr, i32 }
          cleanup
  %5610 = extractvalue { ptr, i32 } %5609, 0
  store ptr %5610, ptr %4, align 8
  %5611 = extractvalue { ptr, i32 } %5609, 1
  store i32 %5611, ptr %5, align 4
  br label %5665

5612:                                             ; preds = %5342
  %5613 = landingpad { ptr, i32 }
          cleanup
  %5614 = extractvalue { ptr, i32 } %5613, 0
  store ptr %5614, ptr %4, align 8
  %5615 = extractvalue { ptr, i32 } %5613, 1
  store i32 %5615, ptr %5, align 4
  br label %5654

5616:                                             ; preds = %5344
  %5617 = landingpad { ptr, i32 }
          cleanup
  %5618 = extractvalue { ptr, i32 } %5617, 0
  store ptr %5618, ptr %4, align 8
  %5619 = extractvalue { ptr, i32 } %5617, 1
  store i32 %5619, ptr %5, align 4
  br label %5646

5620:                                             ; preds = %5352
  %5621 = landingpad { ptr, i32 }
          cleanup
  %5622 = extractvalue { ptr, i32 } %5621, 0
  store ptr %5622, ptr %4, align 8
  %5623 = extractvalue { ptr, i32 } %5621, 1
  store i32 %5623, ptr %5, align 4
  br label %5645

5624:                                             ; preds = %5353
  %5625 = landingpad { ptr, i32 }
          cleanup
  %5626 = extractvalue { ptr, i32 } %5625, 0
  store ptr %5626, ptr %4, align 8
  %5627 = extractvalue { ptr, i32 } %5625, 1
  store i32 %5627, ptr %5, align 4
  br label %5637

5628:                                             ; preds = %5360
  %5629 = landingpad { ptr, i32 }
          cleanup
  %5630 = extractvalue { ptr, i32 } %5629, 0
  store ptr %5630, ptr %4, align 8
  %5631 = extractvalue { ptr, i32 } %5629, 1
  store i32 %5631, ptr %5, align 4
  br label %5636

5632:                                             ; preds = %5361
  %5633 = landingpad { ptr, i32 }
          cleanup
  %5634 = extractvalue { ptr, i32 } %5633, 0
  store ptr %5634, ptr %4, align 8
  %5635 = extractvalue { ptr, i32 } %5633, 1
  store i32 %5635, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %698) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %683) #9
  br label %5636

5636:                                             ; preds = %5632, %5628
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %686) #9
  br label %5637

5637:                                             ; preds = %5636, %5624
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %697) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %697) #9
  %5638 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %688, i32 0, i32 0
  %5639 = getelementptr inbounds %"class.std::shared_ptr", ptr %5638, i64 1
  br label %5640

5640:                                             ; preds = %5640, %5637
  %5641 = phi ptr [ %5639, %5637 ], [ %5642, %5640 ]
  %5642 = getelementptr inbounds %"class.std::shared_ptr", ptr %5641, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5642) #9
  %5643 = icmp eq ptr %5642, %5638
  br i1 %5643, label %5644, label %5640

5644:                                             ; preds = %5640
  br label %5645

5645:                                             ; preds = %5644, %5620
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %692) #9
  br label %5646

5646:                                             ; preds = %5645, %5616
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %695) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %695) #9
  %5647 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %694, i32 0, i32 0
  %5648 = getelementptr inbounds %"class.std::shared_ptr", ptr %5647, i64 2
  br label %5649

5649:                                             ; preds = %5649, %5646
  %5650 = phi ptr [ %5648, %5646 ], [ %5651, %5649 ]
  %5651 = getelementptr inbounds %"class.std::shared_ptr", ptr %5650, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5651) #9
  %5652 = icmp eq ptr %5651, %5647
  br i1 %5652, label %5653, label %5649

5653:                                             ; preds = %5649
  call void @llvm.lifetime.end.p0(i64 32, ptr %694) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %690) #9
  br label %5654

5654:                                             ; preds = %5653, %5612
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %691) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %691) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %690) #9
  %5655 = load i1, ptr %696, align 1
  br i1 %5655, label %5656, label %5664

5656:                                             ; preds = %5654
  %5657 = load ptr, ptr %689, align 8
  %5658 = icmp eq ptr %688, %5657
  br i1 %5658, label %5663, label %5659

5659:                                             ; preds = %5659, %5656
  %5660 = phi ptr [ %5657, %5656 ], [ %5661, %5659 ]
  %5661 = getelementptr inbounds %"class.std::shared_ptr", ptr %5660, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5661) #9
  %5662 = icmp eq ptr %5661, %688
  br i1 %5662, label %5663, label %5659

5663:                                             ; preds = %5659, %5656
  br label %5664

5664:                                             ; preds = %5663, %5654
  call void @llvm.lifetime.end.p0(i64 16, ptr %688) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %684) #9
  br label %5665

5665:                                             ; preds = %5664, %5608
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %685) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %685) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %684) #9
  br label %6389

5666:                                             ; preds = %5376
  %5667 = landingpad { ptr, i32 }
          cleanup
  %5668 = extractvalue { ptr, i32 } %5667, 0
  store ptr %5668, ptr %4, align 8
  %5669 = extractvalue { ptr, i32 } %5667, 1
  store i32 %5669, ptr %5, align 4
  br label %5723

5670:                                             ; preds = %5379
  %5671 = landingpad { ptr, i32 }
          cleanup
  %5672 = extractvalue { ptr, i32 } %5671, 0
  store ptr %5672, ptr %4, align 8
  %5673 = extractvalue { ptr, i32 } %5671, 1
  store i32 %5673, ptr %5, align 4
  br label %5712

5674:                                             ; preds = %5381
  %5675 = landingpad { ptr, i32 }
          cleanup
  %5676 = extractvalue { ptr, i32 } %5675, 0
  store ptr %5676, ptr %4, align 8
  %5677 = extractvalue { ptr, i32 } %5675, 1
  store i32 %5677, ptr %5, align 4
  br label %5704

5678:                                             ; preds = %5389
  %5679 = landingpad { ptr, i32 }
          cleanup
  %5680 = extractvalue { ptr, i32 } %5679, 0
  store ptr %5680, ptr %4, align 8
  %5681 = extractvalue { ptr, i32 } %5679, 1
  store i32 %5681, ptr %5, align 4
  br label %5703

5682:                                             ; preds = %5390
  %5683 = landingpad { ptr, i32 }
          cleanup
  %5684 = extractvalue { ptr, i32 } %5683, 0
  store ptr %5684, ptr %4, align 8
  %5685 = extractvalue { ptr, i32 } %5683, 1
  store i32 %5685, ptr %5, align 4
  br label %5695

5686:                                             ; preds = %5397
  %5687 = landingpad { ptr, i32 }
          cleanup
  %5688 = extractvalue { ptr, i32 } %5687, 0
  store ptr %5688, ptr %4, align 8
  %5689 = extractvalue { ptr, i32 } %5687, 1
  store i32 %5689, ptr %5, align 4
  br label %5694

5690:                                             ; preds = %5398
  %5691 = landingpad { ptr, i32 }
          cleanup
  %5692 = extractvalue { ptr, i32 } %5691, 0
  store ptr %5692, ptr %4, align 8
  %5693 = extractvalue { ptr, i32 } %5691, 1
  store i32 %5693, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %714) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %699) #9
  br label %5694

5694:                                             ; preds = %5690, %5686
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %702) #9
  br label %5695

5695:                                             ; preds = %5694, %5682
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %713) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %713) #9
  %5696 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %704, i32 0, i32 0
  %5697 = getelementptr inbounds %"class.std::shared_ptr", ptr %5696, i64 1
  br label %5698

5698:                                             ; preds = %5698, %5695
  %5699 = phi ptr [ %5697, %5695 ], [ %5700, %5698 ]
  %5700 = getelementptr inbounds %"class.std::shared_ptr", ptr %5699, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5700) #9
  %5701 = icmp eq ptr %5700, %5696
  br i1 %5701, label %5702, label %5698

5702:                                             ; preds = %5698
  br label %5703

5703:                                             ; preds = %5702, %5678
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %708) #9
  br label %5704

5704:                                             ; preds = %5703, %5674
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %711) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %711) #9
  %5705 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %710, i32 0, i32 0
  %5706 = getelementptr inbounds %"class.std::shared_ptr", ptr %5705, i64 2
  br label %5707

5707:                                             ; preds = %5707, %5704
  %5708 = phi ptr [ %5706, %5704 ], [ %5709, %5707 ]
  %5709 = getelementptr inbounds %"class.std::shared_ptr", ptr %5708, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5709) #9
  %5710 = icmp eq ptr %5709, %5705
  br i1 %5710, label %5711, label %5707

5711:                                             ; preds = %5707
  call void @llvm.lifetime.end.p0(i64 32, ptr %710) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %706) #9
  br label %5712

5712:                                             ; preds = %5711, %5670
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %707) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %707) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %706) #9
  %5713 = load i1, ptr %712, align 1
  br i1 %5713, label %5714, label %5722

5714:                                             ; preds = %5712
  %5715 = load ptr, ptr %705, align 8
  %5716 = icmp eq ptr %704, %5715
  br i1 %5716, label %5721, label %5717

5717:                                             ; preds = %5717, %5714
  %5718 = phi ptr [ %5715, %5714 ], [ %5719, %5717 ]
  %5719 = getelementptr inbounds %"class.std::shared_ptr", ptr %5718, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5719) #9
  %5720 = icmp eq ptr %5719, %704
  br i1 %5720, label %5721, label %5717

5721:                                             ; preds = %5717, %5714
  br label %5722

5722:                                             ; preds = %5721, %5712
  call void @llvm.lifetime.end.p0(i64 16, ptr %704) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %700) #9
  br label %5723

5723:                                             ; preds = %5722, %5666
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %701) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %701) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %700) #9
  br label %6389

5724:                                             ; preds = %5413
  %5725 = landingpad { ptr, i32 }
          cleanup
  %5726 = extractvalue { ptr, i32 } %5725, 0
  store ptr %5726, ptr %4, align 8
  %5727 = extractvalue { ptr, i32 } %5725, 1
  store i32 %5727, ptr %5, align 4
  br label %5907

5728:                                             ; preds = %5418
  %5729 = landingpad { ptr, i32 }
          cleanup
  %5730 = extractvalue { ptr, i32 } %5729, 0
  store ptr %5730, ptr %4, align 8
  %5731 = extractvalue { ptr, i32 } %5729, 1
  store i32 %5731, ptr %5, align 4
  br label %5896

5732:                                             ; preds = %5420
  %5733 = landingpad { ptr, i32 }
          cleanup
  %5734 = extractvalue { ptr, i32 } %5733, 0
  store ptr %5734, ptr %4, align 8
  %5735 = extractvalue { ptr, i32 } %5733, 1
  store i32 %5735, ptr %5, align 4
  br label %5885

5736:                                             ; preds = %5422
  %5737 = landingpad { ptr, i32 }
          cleanup
  %5738 = extractvalue { ptr, i32 } %5737, 0
  store ptr %5738, ptr %4, align 8
  %5739 = extractvalue { ptr, i32 } %5737, 1
  store i32 %5739, ptr %5, align 4
  br label %5874

5740:                                             ; preds = %5424
  %5741 = landingpad { ptr, i32 }
          cleanup
  %5742 = extractvalue { ptr, i32 } %5741, 0
  store ptr %5742, ptr %4, align 8
  %5743 = extractvalue { ptr, i32 } %5741, 1
  store i32 %5743, ptr %5, align 4
  br label %5873

5744:                                             ; preds = %5425
  %5745 = landingpad { ptr, i32 }
          cleanup
  %5746 = extractvalue { ptr, i32 } %5745, 0
  store ptr %5746, ptr %4, align 8
  %5747 = extractvalue { ptr, i32 } %5745, 1
  store i32 %5747, ptr %5, align 4
  br label %5872

5748:                                             ; preds = %5428
  %5749 = landingpad { ptr, i32 }
          cleanup
  %5750 = extractvalue { ptr, i32 } %5749, 0
  store ptr %5750, ptr %4, align 8
  %5751 = extractvalue { ptr, i32 } %5749, 1
  store i32 %5751, ptr %5, align 4
  br label %5871

5752:                                             ; preds = %5429
  %5753 = landingpad { ptr, i32 }
          cleanup
  %5754 = extractvalue { ptr, i32 } %5753, 0
  store ptr %5754, ptr %4, align 8
  %5755 = extractvalue { ptr, i32 } %5753, 1
  store i32 %5755, ptr %5, align 4
  br label %5863

5756:                                             ; preds = %5436
  %5757 = landingpad { ptr, i32 }
          cleanup
  %5758 = extractvalue { ptr, i32 } %5757, 0
  store ptr %5758, ptr %4, align 8
  %5759 = extractvalue { ptr, i32 } %5757, 1
  store i32 %5759, ptr %5, align 4
  br label %5862

5760:                                             ; preds = %5437
  %5761 = landingpad { ptr, i32 }
          cleanup
  %5762 = extractvalue { ptr, i32 } %5761, 0
  store ptr %5762, ptr %4, align 8
  %5763 = extractvalue { ptr, i32 } %5761, 1
  store i32 %5763, ptr %5, align 4
  br label %5861

5764:                                             ; preds = %5440
  %5765 = landingpad { ptr, i32 }
          cleanup
  %5766 = extractvalue { ptr, i32 } %5765, 0
  store ptr %5766, ptr %4, align 8
  %5767 = extractvalue { ptr, i32 } %5765, 1
  store i32 %5767, ptr %5, align 4
  br label %5850

5768:                                             ; preds = %5442
  %5769 = landingpad { ptr, i32 }
          cleanup
  %5770 = extractvalue { ptr, i32 } %5769, 0
  store ptr %5770, ptr %4, align 8
  %5771 = extractvalue { ptr, i32 } %5769, 1
  store i32 %5771, ptr %5, align 4
  br label %5849

5772:                                             ; preds = %5443
  %5773 = landingpad { ptr, i32 }
          cleanup
  %5774 = extractvalue { ptr, i32 } %5773, 0
  store ptr %5774, ptr %4, align 8
  %5775 = extractvalue { ptr, i32 } %5773, 1
  store i32 %5775, ptr %5, align 4
  br label %5848

5776:                                             ; preds = %5446
  %5777 = landingpad { ptr, i32 }
          cleanup
  %5778 = extractvalue { ptr, i32 } %5777, 0
  store ptr %5778, ptr %4, align 8
  %5779 = extractvalue { ptr, i32 } %5777, 1
  store i32 %5779, ptr %5, align 4
  br label %5847

5780:                                             ; preds = %5447
  %5781 = landingpad { ptr, i32 }
          cleanup
  %5782 = extractvalue { ptr, i32 } %5781, 0
  store ptr %5782, ptr %4, align 8
  %5783 = extractvalue { ptr, i32 } %5781, 1
  store i32 %5783, ptr %5, align 4
  br label %5839

5784:                                             ; preds = %5454
  %5785 = landingpad { ptr, i32 }
          cleanup
  %5786 = extractvalue { ptr, i32 } %5785, 0
  store ptr %5786, ptr %4, align 8
  %5787 = extractvalue { ptr, i32 } %5785, 1
  store i32 %5787, ptr %5, align 4
  br label %5838

5788:                                             ; preds = %5455
  %5789 = landingpad { ptr, i32 }
          cleanup
  %5790 = extractvalue { ptr, i32 } %5789, 0
  store ptr %5790, ptr %4, align 8
  %5791 = extractvalue { ptr, i32 } %5789, 1
  store i32 %5791, ptr %5, align 4
  br label %5830

5792:                                             ; preds = %5462
  %5793 = landingpad { ptr, i32 }
          cleanup
  %5794 = extractvalue { ptr, i32 } %5793, 0
  store ptr %5794, ptr %4, align 8
  %5795 = extractvalue { ptr, i32 } %5793, 1
  store i32 %5795, ptr %5, align 4
  br label %5829

5796:                                             ; preds = %5463
  %5797 = landingpad { ptr, i32 }
          cleanup
  %5798 = extractvalue { ptr, i32 } %5797, 0
  store ptr %5798, ptr %4, align 8
  %5799 = extractvalue { ptr, i32 } %5797, 1
  store i32 %5799, ptr %5, align 4
  br label %5821

5800:                                             ; preds = %5470
  %5801 = landingpad { ptr, i32 }
          cleanup
  %5802 = extractvalue { ptr, i32 } %5801, 0
  store ptr %5802, ptr %4, align 8
  %5803 = extractvalue { ptr, i32 } %5801, 1
  store i32 %5803, ptr %5, align 4
  br label %5820

5804:                                             ; preds = %5471
  %5805 = landingpad { ptr, i32 }
          cleanup
  %5806 = extractvalue { ptr, i32 } %5805, 0
  store ptr %5806, ptr %4, align 8
  %5807 = extractvalue { ptr, i32 } %5805, 1
  store i32 %5807, ptr %5, align 4
  br label %5812

5808:                                             ; preds = %5478
  %5809 = landingpad { ptr, i32 }
          cleanup
  %5810 = extractvalue { ptr, i32 } %5809, 0
  store ptr %5810, ptr %4, align 8
  %5811 = extractvalue { ptr, i32 } %5809, 1
  store i32 %5811, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %716) #9
  br label %5812

5812:                                             ; preds = %5808, %5804
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %761) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %761) #9
  %5813 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %718, i32 0, i32 0
  %5814 = getelementptr inbounds %"class.std::shared_ptr", ptr %5813, i64 1
  br label %5815

5815:                                             ; preds = %5815, %5812
  %5816 = phi ptr [ %5814, %5812 ], [ %5817, %5815 ]
  %5817 = getelementptr inbounds %"class.std::shared_ptr", ptr %5816, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5817) #9
  %5818 = icmp eq ptr %5817, %5813
  br i1 %5818, label %5819, label %5815

5819:                                             ; preds = %5815
  br label %5820

5820:                                             ; preds = %5819, %5800
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %722) #9
  br label %5821

5821:                                             ; preds = %5820, %5796
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %759) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %759) #9
  %5822 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %724, i32 0, i32 0
  %5823 = getelementptr inbounds %"class.std::shared_ptr", ptr %5822, i64 1
  br label %5824

5824:                                             ; preds = %5824, %5821
  %5825 = phi ptr [ %5823, %5821 ], [ %5826, %5824 ]
  %5826 = getelementptr inbounds %"class.std::shared_ptr", ptr %5825, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5826) #9
  %5827 = icmp eq ptr %5826, %5822
  br i1 %5827, label %5828, label %5824

5828:                                             ; preds = %5824
  br label %5829

5829:                                             ; preds = %5828, %5792
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %728) #9
  br label %5830

5830:                                             ; preds = %5829, %5788
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %757) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %757) #9
  %5831 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %730, i32 0, i32 0
  %5832 = getelementptr inbounds %"class.std::shared_ptr", ptr %5831, i64 2
  br label %5833

5833:                                             ; preds = %5833, %5830
  %5834 = phi ptr [ %5832, %5830 ], [ %5835, %5833 ]
  %5835 = getelementptr inbounds %"class.std::shared_ptr", ptr %5834, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5835) #9
  %5836 = icmp eq ptr %5835, %5831
  br i1 %5836, label %5837, label %5833

5837:                                             ; preds = %5833
  br label %5838

5838:                                             ; preds = %5837, %5784
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %746) #9
  br label %5839

5839:                                             ; preds = %5838, %5780
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %755) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %755) #9
  %5840 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %748, i32 0, i32 0
  %5841 = getelementptr inbounds %"class.std::shared_ptr", ptr %5840, i64 2
  br label %5842

5842:                                             ; preds = %5842, %5839
  %5843 = phi ptr [ %5841, %5839 ], [ %5844, %5842 ]
  %5844 = getelementptr inbounds %"class.std::shared_ptr", ptr %5843, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5844) #9
  %5845 = icmp eq ptr %5844, %5840
  br i1 %5845, label %5846, label %5842

5846:                                             ; preds = %5842
  br label %5847

5847:                                             ; preds = %5846, %5776
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %752) #9
  br label %5848

5848:                                             ; preds = %5847, %5772
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %753) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %753) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %752) #9
  br label %5849

5849:                                             ; preds = %5848, %5768
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %750) #9
  br label %5850

5850:                                             ; preds = %5849, %5764
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %751) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %751) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %750) #9
  %5851 = load i1, ptr %754, align 1
  br i1 %5851, label %5852, label %5860

5852:                                             ; preds = %5850
  %5853 = load ptr, ptr %749, align 8
  %5854 = icmp eq ptr %748, %5853
  br i1 %5854, label %5859, label %5855

5855:                                             ; preds = %5855, %5852
  %5856 = phi ptr [ %5853, %5852 ], [ %5857, %5855 ]
  %5857 = getelementptr inbounds %"class.std::shared_ptr", ptr %5856, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5857) #9
  %5858 = icmp eq ptr %5857, %748
  br i1 %5858, label %5859, label %5855

5859:                                             ; preds = %5855, %5852
  br label %5860

5860:                                             ; preds = %5859, %5850
  call void @llvm.lifetime.end.p0(i64 32, ptr %748) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %744) #9
  br label %5861

5861:                                             ; preds = %5860, %5760
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %745) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %745) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %744) #9
  br label %5862

5862:                                             ; preds = %5861, %5756
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %734) #9
  br label %5863

5863:                                             ; preds = %5862, %5752
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %743) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %743) #9
  %5864 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %736, i32 0, i32 0
  %5865 = getelementptr inbounds %"class.std::shared_ptr", ptr %5864, i64 2
  br label %5866

5866:                                             ; preds = %5866, %5863
  %5867 = phi ptr [ %5865, %5863 ], [ %5868, %5866 ]
  %5868 = getelementptr inbounds %"class.std::shared_ptr", ptr %5867, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5868) #9
  %5869 = icmp eq ptr %5868, %5864
  br i1 %5869, label %5870, label %5866

5870:                                             ; preds = %5866
  br label %5871

5871:                                             ; preds = %5870, %5748
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %740) #9
  br label %5872

5872:                                             ; preds = %5871, %5744
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %741) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %741) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %740) #9
  br label %5873

5873:                                             ; preds = %5872, %5740
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %738) #9
  br label %5874

5874:                                             ; preds = %5873, %5736
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %739) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %739) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %738) #9
  %5875 = load i1, ptr %742, align 1
  br i1 %5875, label %5876, label %5884

5876:                                             ; preds = %5874
  %5877 = load ptr, ptr %737, align 8
  %5878 = icmp eq ptr %736, %5877
  br i1 %5878, label %5883, label %5879

5879:                                             ; preds = %5879, %5876
  %5880 = phi ptr [ %5877, %5876 ], [ %5881, %5879 ]
  %5881 = getelementptr inbounds %"class.std::shared_ptr", ptr %5880, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5881) #9
  %5882 = icmp eq ptr %5881, %736
  br i1 %5882, label %5883, label %5879

5883:                                             ; preds = %5879, %5876
  br label %5884

5884:                                             ; preds = %5883, %5874
  call void @llvm.lifetime.end.p0(i64 32, ptr %736) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %732) #9
  br label %5885

5885:                                             ; preds = %5884, %5732
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %733) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %733) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %732) #9
  %5886 = load i1, ptr %756, align 1
  br i1 %5886, label %5887, label %5895

5887:                                             ; preds = %5885
  %5888 = load ptr, ptr %731, align 8
  %5889 = icmp eq ptr %730, %5888
  br i1 %5889, label %5894, label %5890

5890:                                             ; preds = %5890, %5887
  %5891 = phi ptr [ %5888, %5887 ], [ %5892, %5890 ]
  %5892 = getelementptr inbounds %"class.std::shared_ptr", ptr %5891, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5892) #9
  %5893 = icmp eq ptr %5892, %730
  br i1 %5893, label %5894, label %5890

5894:                                             ; preds = %5890, %5887
  br label %5895

5895:                                             ; preds = %5894, %5885
  call void @llvm.lifetime.end.p0(i64 32, ptr %730) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %726) #9
  br label %5896

5896:                                             ; preds = %5895, %5728
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %727) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %727) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %726) #9
  %5897 = load i1, ptr %758, align 1
  br i1 %5897, label %5898, label %5906

5898:                                             ; preds = %5896
  %5899 = load ptr, ptr %725, align 8
  %5900 = icmp eq ptr %724, %5899
  br i1 %5900, label %5905, label %5901

5901:                                             ; preds = %5901, %5898
  %5902 = phi ptr [ %5899, %5898 ], [ %5903, %5901 ]
  %5903 = getelementptr inbounds %"class.std::shared_ptr", ptr %5902, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5903) #9
  %5904 = icmp eq ptr %5903, %724
  br i1 %5904, label %5905, label %5901

5905:                                             ; preds = %5901, %5898
  br label %5906

5906:                                             ; preds = %5905, %5896
  call void @llvm.lifetime.end.p0(i64 16, ptr %724) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %720) #9
  br label %5907

5907:                                             ; preds = %5906, %5724
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %721) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %721) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %720) #9
  %5908 = load i1, ptr %760, align 1
  br i1 %5908, label %5909, label %5917

5909:                                             ; preds = %5907
  %5910 = load ptr, ptr %719, align 8
  %5911 = icmp eq ptr %718, %5910
  br i1 %5911, label %5916, label %5912

5912:                                             ; preds = %5912, %5909
  %5913 = phi ptr [ %5910, %5909 ], [ %5914, %5912 ]
  %5914 = getelementptr inbounds %"class.std::shared_ptr", ptr %5913, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5914) #9
  %5915 = icmp eq ptr %5914, %718
  br i1 %5915, label %5916, label %5912

5916:                                             ; preds = %5912, %5909
  br label %5917

5917:                                             ; preds = %5916, %5907
  call void @llvm.lifetime.end.p0(i64 16, ptr %718) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %716) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %715) #9
  br label %6389

5918:                                             ; preds = %5516
  %5919 = landingpad { ptr, i32 }
          catch ptr null
  %5920 = extractvalue { ptr, i32 } %5919, 0
  store ptr %5920, ptr %4, align 8
  %5921 = extractvalue { ptr, i32 } %5919, 1
  store i32 %5921, ptr %5, align 4
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %762) #9
  br label %5930

5922:                                             ; preds = %5521
  %5923 = landingpad { ptr, i32 }
          catch ptr null
  %5924 = extractvalue { ptr, i32 } %5923, 0
  store ptr %5924, ptr %4, align 8
  %5925 = extractvalue { ptr, i32 } %5923, 1
  store i32 %5925, ptr %5, align 4
  br label %5930

5926:                                             ; preds = %5528, %5526, %5523
  %5927 = landingpad { ptr, i32 }
          catch ptr null
  %5928 = extractvalue { ptr, i32 } %5927, 0
  store ptr %5928, ptr %4, align 8
  %5929 = extractvalue { ptr, i32 } %5927, 1
  store i32 %5929, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %763) #9
  br label %5930

5930:                                             ; preds = %5926, %5922, %5918
  %5931 = load ptr, ptr %4, align 8
  %5932 = call ptr @__cxa_begin_catch(ptr %5931) #9
  %5933 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %5934 unwind label %6094

5934:                                             ; preds = %5930
  %5935 = load ptr, ptr %5933, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %764) #9
  %5936 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %5937 unwind label %6098

5937:                                             ; preds = %5934
  %5938 = load ptr, ptr %5936, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %764, ptr noundef nonnull align 8 dereferenceable(30) %5938, i32 noundef 2484)
          to label %5939 unwind label %6098

5939:                                             ; preds = %5937
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %5935, ptr noundef nonnull align 8 dereferenceable(30) %764, ptr noundef @.str.508)
          to label %5940 unwind label %6098

5940:                                             ; preds = %5939
  call void @llvm.lifetime.end.p0(i64 32, ptr %764) #9
  invoke void @__cxa_end_catch()
          to label %5941 unwind label %6102

5941:                                             ; preds = %5940
  br label %5942

5942:                                             ; preds = %6093, %5941
  br label %5943

5943:                                             ; preds = %5942
  br label %5944

5944:                                             ; preds = %5943
  call void @llvm.lifetime.start.p0(i64 16, ptr %765) #9
  %5945 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  %5946 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %5947 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %766) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %768) #9
  store i1 true, ptr %808, align 1
  store ptr %768, ptr %769, align 8
  %5948 = 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 %770) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %771) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %771) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %770, ptr noundef @.str.545, ptr noundef nonnull align 1 dereferenceable(1) %771)
          to label %5949 unwind label %6108

5949:                                             ; preds = %5944
  call void @llvm.lifetime.start.p0(i64 16, ptr %774) #9
  store i1 true, ptr %806, align 1
  store ptr %774, ptr %775, align 8
  %5950 = 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 %776) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %777) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %777) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %776, ptr noundef @.str.544, ptr noundef nonnull align 1 dereferenceable(1) %777)
          to label %5951 unwind label %6112

5951:                                             ; preds = %5949
  call void @llvm.lifetime.start.p0(i64 32, ptr %780) #9
  store i1 true, ptr %804, align 1
  store ptr %780, ptr %781, align 8
  %5952 = 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 %782) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %783) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %783) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %782, ptr noundef @.str.542, ptr noundef nonnull align 1 dereferenceable(1) %783)
          to label %5953 unwind label %6116

5953:                                             ; preds = %5951
  call void @llvm.lifetime.start.p0(i64 32, ptr %786) #9
  store i1 true, ptr %792, align 1
  store ptr %786, ptr %787, align 8
  %5954 = 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 %788) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %789) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %789) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %788, ptr noundef @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %789)
          to label %5955 unwind label %6120

5955:                                             ; preds = %5953
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %786, ptr noundef nonnull align 8 dereferenceable(33088) %5954, ptr noundef nonnull align 8 dereferenceable(32) %788)
          to label %5956 unwind label %6124

5956:                                             ; preds = %5955
  %5957 = getelementptr inbounds %"class.std::shared_ptr", ptr %786, i64 1
  store ptr %5957, ptr %787, align 8
  %5958 = 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 %790) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %791) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %791) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %790, ptr noundef @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %791)
          to label %5959 unwind label %6128

5959:                                             ; preds = %5956
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %5957, ptr noundef nonnull align 8 dereferenceable(33088) %5958, ptr noundef nonnull align 8 dereferenceable(32) %790)
          to label %5960 unwind label %6132

5960:                                             ; preds = %5959
  store i1 false, ptr %792, align 1
  %5961 = getelementptr inbounds %"class.std::initializer_list.94", ptr %785, i32 0, i32 0
  store ptr %786, ptr %5961, align 8, !tbaa !9
  %5962 = getelementptr inbounds %"class.std::initializer_list.94", ptr %785, i32 0, i32 1
  store i64 2, ptr %5962, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %793) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %793) #9
  %5963 = getelementptr inbounds { ptr, i64 }, ptr %785, i32 0, i32 0
  %5964 = load ptr, ptr %5963, align 8
  %5965 = getelementptr inbounds { ptr, i64 }, ptr %785, i32 0, i32 1
  %5966 = load i64, ptr %5965, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %784, ptr %5964, i64 %5966, ptr noundef nonnull align 1 dereferenceable(1) %793)
          to label %5967 unwind label %6136

5967:                                             ; preds = %5960
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %780, ptr noundef nonnull align 8 dereferenceable(33088) %5952, ptr noundef nonnull align 8 dereferenceable(32) %782, ptr noundef %784)
          to label %5968 unwind label %6140

5968:                                             ; preds = %5967
  %5969 = getelementptr inbounds %"class.std::shared_ptr", ptr %780, i64 1
  store ptr %5969, ptr %781, align 8
  %5970 = 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 %794) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %795) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %795) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %794, ptr noundef @.str.542, ptr noundef nonnull align 1 dereferenceable(1) %795)
          to label %5971 unwind label %6144

5971:                                             ; preds = %5968
  call void @llvm.lifetime.start.p0(i64 32, ptr %798) #9
  store i1 true, ptr %802, align 1
  store ptr %798, ptr %799, align 8
  %5972 = 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 %800) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %801) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %801) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %800, ptr noundef @.str.137, ptr noundef nonnull align 1 dereferenceable(1) %801)
          to label %5973 unwind label %6148

5973:                                             ; preds = %5971
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %798, ptr noundef nonnull align 8 dereferenceable(33088) %5972, ptr noundef nonnull align 8 dereferenceable(32) %800)
          to label %5974 unwind label %6152

5974:                                             ; preds = %5973
  %5975 = getelementptr inbounds %"class.std::shared_ptr", ptr %798, i64 1
  store ptr %5975, ptr %799, align 8
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %5975, ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  store i1 false, ptr %802, align 1
  %5976 = getelementptr inbounds %"class.std::initializer_list.94", ptr %797, i32 0, i32 0
  store ptr %798, ptr %5976, align 8, !tbaa !9
  %5977 = getelementptr inbounds %"class.std::initializer_list.94", ptr %797, i32 0, i32 1
  store i64 2, ptr %5977, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %803) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %803) #9
  %5978 = getelementptr inbounds { ptr, i64 }, ptr %797, i32 0, i32 0
  %5979 = load ptr, ptr %5978, align 8
  %5980 = getelementptr inbounds { ptr, i64 }, ptr %797, i32 0, i32 1
  %5981 = load i64, ptr %5980, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %796, ptr %5979, i64 %5981, ptr noundef nonnull align 1 dereferenceable(1) %803)
          to label %5982 unwind label %6156

5982:                                             ; preds = %5974
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %5969, ptr noundef nonnull align 8 dereferenceable(33088) %5970, ptr noundef nonnull align 8 dereferenceable(32) %794, ptr noundef %796)
          to label %5983 unwind label %6160

5983:                                             ; preds = %5982
  store i1 false, ptr %804, align 1
  %5984 = getelementptr inbounds %"class.std::initializer_list.94", ptr %779, i32 0, i32 0
  store ptr %780, ptr %5984, align 8, !tbaa !9
  %5985 = getelementptr inbounds %"class.std::initializer_list.94", ptr %779, i32 0, i32 1
  store i64 2, ptr %5985, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %805) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %805) #9
  %5986 = getelementptr inbounds { ptr, i64 }, ptr %779, i32 0, i32 0
  %5987 = load ptr, ptr %5986, align 8
  %5988 = getelementptr inbounds { ptr, i64 }, ptr %779, i32 0, i32 1
  %5989 = load i64, ptr %5988, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %778, ptr %5987, i64 %5989, ptr noundef nonnull align 1 dereferenceable(1) %805)
          to label %5990 unwind label %6164

5990:                                             ; preds = %5983
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %774, ptr noundef nonnull align 8 dereferenceable(33088) %5950, ptr noundef nonnull align 8 dereferenceable(32) %776, ptr noundef %778)
          to label %5991 unwind label %6168

5991:                                             ; preds = %5990
  store i1 false, ptr %806, align 1
  %5992 = getelementptr inbounds %"class.std::initializer_list.94", ptr %773, i32 0, i32 0
  store ptr %774, ptr %5992, align 8, !tbaa !9
  %5993 = getelementptr inbounds %"class.std::initializer_list.94", ptr %773, i32 0, i32 1
  store i64 1, ptr %5993, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %807) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %807) #9
  %5994 = getelementptr inbounds { ptr, i64 }, ptr %773, i32 0, i32 0
  %5995 = load ptr, ptr %5994, align 8
  %5996 = getelementptr inbounds { ptr, i64 }, ptr %773, i32 0, i32 1
  %5997 = load i64, ptr %5996, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %772, ptr %5995, i64 %5997, ptr noundef nonnull align 1 dereferenceable(1) %807)
          to label %5998 unwind label %6172

5998:                                             ; preds = %5991
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %768, ptr noundef nonnull align 8 dereferenceable(33088) %5948, ptr noundef nonnull align 8 dereferenceable(32) %770, ptr noundef %772)
          to label %5999 unwind label %6176

5999:                                             ; preds = %5998
  store i1 false, ptr %808, align 1
  %6000 = getelementptr inbounds %"class.std::initializer_list.94", ptr %767, i32 0, i32 0
  store ptr %768, ptr %6000, align 8, !tbaa !9
  %6001 = getelementptr inbounds %"class.std::initializer_list.94", ptr %767, i32 0, i32 1
  store i64 1, ptr %6001, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr %809) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %809) #9
  %6002 = getelementptr inbounds { ptr, i64 }, ptr %767, i32 0, i32 0
  %6003 = load ptr, ptr %6002, align 8
  %6004 = getelementptr inbounds { ptr, i64 }, ptr %767, i32 0, i32 1
  %6005 = load i64, ptr %6004, align 8
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %766, ptr %6003, i64 %6005, ptr noundef nonnull align 1 dereferenceable(1) %809)
          to label %6006 unwind label %6180

6006:                                             ; preds = %5999
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %765, ptr noundef nonnull align 8 dereferenceable(64) %5945, ptr noundef %5946, ptr noundef %5947, ptr noundef nonnull align 8 dereferenceable(24) %766, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %6007 unwind label %6184

6007:                                             ; preds = %6006
  %6008 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %765) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %765) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %766) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %809) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %809) #9
  %6009 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %768, i32 0, i32 0
  %6010 = getelementptr inbounds %"class.std::shared_ptr", ptr %6009, i64 1
  br label %6011

6011:                                             ; preds = %6011, %6007
  %6012 = phi ptr [ %6010, %6007 ], [ %6013, %6011 ]
  %6013 = getelementptr inbounds %"class.std::shared_ptr", ptr %6012, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6013) #9
  %6014 = icmp eq ptr %6013, %6009
  br i1 %6014, label %6015, label %6011

6015:                                             ; preds = %6011
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %772) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %807) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %807) #9
  %6016 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %774, i32 0, i32 0
  %6017 = getelementptr inbounds %"class.std::shared_ptr", ptr %6016, i64 1
  br label %6018

6018:                                             ; preds = %6018, %6015
  %6019 = phi ptr [ %6017, %6015 ], [ %6020, %6018 ]
  %6020 = getelementptr inbounds %"class.std::shared_ptr", ptr %6019, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6020) #9
  %6021 = icmp eq ptr %6020, %6016
  br i1 %6021, label %6022, label %6018

6022:                                             ; preds = %6018
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %778) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %805) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %805) #9
  %6023 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %780, i32 0, i32 0
  %6024 = getelementptr inbounds %"class.std::shared_ptr", ptr %6023, i64 2
  br label %6025

6025:                                             ; preds = %6025, %6022
  %6026 = phi ptr [ %6024, %6022 ], [ %6027, %6025 ]
  %6027 = getelementptr inbounds %"class.std::shared_ptr", ptr %6026, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6027) #9
  %6028 = icmp eq ptr %6027, %6023
  br i1 %6028, label %6029, label %6025

6029:                                             ; preds = %6025
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %796) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %803) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %803) #9
  %6030 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %798, i32 0, i32 0
  %6031 = getelementptr inbounds %"class.std::shared_ptr", ptr %6030, i64 2
  br label %6032

6032:                                             ; preds = %6032, %6029
  %6033 = phi ptr [ %6031, %6029 ], [ %6034, %6032 ]
  %6034 = getelementptr inbounds %"class.std::shared_ptr", ptr %6033, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6034) #9
  %6035 = icmp eq ptr %6034, %6030
  br i1 %6035, label %6036, label %6032

6036:                                             ; preds = %6032
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %800) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %801) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %801) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %800) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %798) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %794) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %795) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %795) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %794) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %784) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %793) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %793) #9
  %6037 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %786, i32 0, i32 0
  %6038 = getelementptr inbounds %"class.std::shared_ptr", ptr %6037, i64 2
  br label %6039

6039:                                             ; preds = %6039, %6036
  %6040 = phi ptr [ %6038, %6036 ], [ %6041, %6039 ]
  %6041 = getelementptr inbounds %"class.std::shared_ptr", ptr %6040, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6041) #9
  %6042 = icmp eq ptr %6041, %6037
  br i1 %6042, label %6043, label %6039

6043:                                             ; preds = %6039
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %790) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %791) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %791) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %790) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %788) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %789) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %789) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %788) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %786) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %782) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %783) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %783) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %782) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %780) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %776) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %777) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %777) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %776) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %774) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %770) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %771) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %771) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %770) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %768) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %766) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %765) #9
  br label %6044

6044:                                             ; preds = %6043
  %6045 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ERKS8_(ptr noundef nonnull align 8 dereferenceable(24) %810, ptr noundef nonnull align 8 dereferenceable(24) %6045)
          to label %6046 unwind label %6292

6046:                                             ; preds = %6044
  call void @llvm.lifetime.start.p0(i64 24, ptr %813) #9
  store i1 true, ptr %823, align 1
  store ptr %813, ptr %814, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %816) #9
  store i1 true, ptr %821, align 1
  store ptr %816, ptr %817, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %818) #9
  %6047 = 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 %819) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %820) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %820) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %819, ptr noundef @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %820)
          to label %6048 unwind label %6296

6048:                                             ; preds = %6046
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %818, ptr noundef nonnull align 8 dereferenceable(33088) %6047, ptr noundef nonnull align 8 dereferenceable(32) %819)
          to label %6049 unwind label %6300

6049:                                             ; preds = %6048
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %816, ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %818)
          to label %6050 unwind label %6304

6050:                                             ; preds = %6049
  store i1 false, ptr %821, align 1
  %6051 = getelementptr inbounds %"class.std::initializer_list", ptr %815, i32 0, i32 0
  store ptr %816, ptr %6051, align 8, !tbaa !13
  %6052 = getelementptr inbounds %"class.std::initializer_list", ptr %815, i32 0, i32 1
  store i64 1, ptr %6052, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %822) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %822) #9
  %6053 = getelementptr inbounds { ptr, i64 }, ptr %815, i32 0, i32 0
  %6054 = load ptr, ptr %6053, align 8
  %6055 = getelementptr inbounds { ptr, i64 }, ptr %815, i32 0, i32 1
  %6056 = load i64, ptr %6055, align 8
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %813, ptr %6054, i64 %6056, ptr noundef nonnull align 1 dereferenceable(1) %822)
          to label %6057 unwind label %6308

6057:                                             ; preds = %6050
  store i1 false, ptr %823, align 1
  %6058 = getelementptr inbounds %"class.std::initializer_list.104", ptr %812, i32 0, i32 0
  store ptr %813, ptr %6058, align 8, !tbaa !16
  %6059 = getelementptr inbounds %"class.std::initializer_list.104", ptr %812, i32 0, i32 1
  store i64 1, ptr %6059, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 1, ptr %824) #9
  call void @_ZNSaISt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %824) #9
  %6060 = getelementptr inbounds { ptr, i64 }, ptr %812, i32 0, i32 0
  %6061 = load ptr, ptr %6060, align 8
  %6062 = getelementptr inbounds { ptr, i64 }, ptr %812, i32 0, i32 1
  %6063 = load i64, ptr %6062, align 8
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ESt16initializer_listIS6_ERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %811, ptr %6061, i64 %6063, ptr noundef nonnull align 1 dereferenceable(1) %824)
          to label %6064 unwind label %6312

6064:                                             ; preds = %6057
  %6065 = invoke noundef zeroext i1 @_Z14CheckSolutionsSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EES8_(ptr noundef %810, ptr noundef %811)
          to label %6066 unwind label %6316

6066:                                             ; preds = %6064
  %6067 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %6065)
          to label %6068 unwind label %6316

6068:                                             ; preds = %6066
  %6069 = xor i1 %6067, true
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %811) #9
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %824) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %824) #9
  %6070 = getelementptr inbounds [1 x %"class.std::vector"], ptr %813, i32 0, i32 0
  %6071 = getelementptr inbounds %"class.std::vector", ptr %6070, i64 1
  br label %6072

6072:                                             ; preds = %6072, %6068
  %6073 = phi ptr [ %6071, %6068 ], [ %6074, %6072 ]
  %6074 = getelementptr inbounds %"class.std::vector", ptr %6073, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6074) #9
  %6075 = icmp eq ptr %6074, %6070
  br i1 %6075, label %6076, label %6072

6076:                                             ; preds = %6072
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %822) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %822) #9
  %6077 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %816, i32 0, i32 0
  %6078 = getelementptr inbounds %"struct.std::pair", ptr %6077, i64 1
  br label %6079

6079:                                             ; preds = %6079, %6076
  %6080 = phi ptr [ %6078, %6076 ], [ %6081, %6079 ]
  %6081 = getelementptr inbounds %"struct.std::pair", ptr %6080, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6081) #9
  %6082 = icmp eq ptr %6081, %6077
  br i1 %6082, label %6083, label %6079

6083:                                             ; preds = %6079
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %818) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %819) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %820) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %820) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %819) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %818) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %816) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %813) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %810) #9
  br i1 %6069, label %6084, label %6378

6084:                                             ; preds = %6083
  %6085 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %6086 unwind label %6292

6086:                                             ; preds = %6084
  %6087 = load ptr, ptr %6085, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %825) #9
  %6088 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %6089 unwind label %6359

6089:                                             ; preds = %6086
  %6090 = load ptr, ptr %6088, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %825, ptr noundef nonnull align 8 dereferenceable(30) %6090, i32 noundef 2500)
          to label %6091 unwind label %6359

6091:                                             ; preds = %6089
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %6087, ptr noundef nonnull align 8 dereferenceable(30) %825, ptr noundef @.str.547)
          to label %6092 unwind label %6359

6092:                                             ; preds = %6091
  call void @llvm.lifetime.end.p0(i64 32, ptr %825) #9
  br label %6378

6093:                                             ; preds = %5529, %5519
  br label %5942

6094:                                             ; preds = %5930
  %6095 = landingpad { ptr, i32 }
          cleanup
  %6096 = extractvalue { ptr, i32 } %6095, 0
  store ptr %6096, ptr %4, align 8
  %6097 = extractvalue { ptr, i32 } %6095, 1
  store i32 %6097, ptr %5, align 4
  br label %6106

6098:                                             ; preds = %5939, %5937, %5934
  %6099 = landingpad { ptr, i32 }
          cleanup
  %6100 = extractvalue { ptr, i32 } %6099, 0
  store ptr %6100, ptr %4, align 8
  %6101 = extractvalue { ptr, i32 } %6099, 1
  store i32 %6101, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %764) #9
  br label %6106

6102:                                             ; preds = %6373, %5940
  %6103 = landingpad { ptr, i32 }
          cleanup
  %6104 = extractvalue { ptr, i32 } %6103, 0
  store ptr %6104, ptr %4, align 8
  %6105 = extractvalue { ptr, i32 } %6103, 1
  store i32 %6105, ptr %5, align 4
  br label %6389

6106:                                             ; preds = %6098, %6094
  invoke void @__cxa_end_catch()
          to label %6107 unwind label %6410

6107:                                             ; preds = %6106
  br label %6389

6108:                                             ; preds = %5944
  %6109 = landingpad { ptr, i32 }
          cleanup
  %6110 = extractvalue { ptr, i32 } %6109, 0
  store ptr %6110, ptr %4, align 8
  %6111 = extractvalue { ptr, i32 } %6109, 1
  store i32 %6111, ptr %5, align 4
  br label %6281

6112:                                             ; preds = %5949
  %6113 = landingpad { ptr, i32 }
          cleanup
  %6114 = extractvalue { ptr, i32 } %6113, 0
  store ptr %6114, ptr %4, align 8
  %6115 = extractvalue { ptr, i32 } %6113, 1
  store i32 %6115, ptr %5, align 4
  br label %6270

6116:                                             ; preds = %5951
  %6117 = landingpad { ptr, i32 }
          cleanup
  %6118 = extractvalue { ptr, i32 } %6117, 0
  store ptr %6118, ptr %4, align 8
  %6119 = extractvalue { ptr, i32 } %6117, 1
  store i32 %6119, ptr %5, align 4
  br label %6259

6120:                                             ; preds = %5953
  %6121 = landingpad { ptr, i32 }
          cleanup
  %6122 = extractvalue { ptr, i32 } %6121, 0
  store ptr %6122, ptr %4, align 8
  %6123 = extractvalue { ptr, i32 } %6121, 1
  store i32 %6123, ptr %5, align 4
  br label %6248

6124:                                             ; preds = %5955
  %6125 = landingpad { ptr, i32 }
          cleanup
  %6126 = extractvalue { ptr, i32 } %6125, 0
  store ptr %6126, ptr %4, align 8
  %6127 = extractvalue { ptr, i32 } %6125, 1
  store i32 %6127, ptr %5, align 4
  br label %6247

6128:                                             ; preds = %5956
  %6129 = landingpad { ptr, i32 }
          cleanup
  %6130 = extractvalue { ptr, i32 } %6129, 0
  store ptr %6130, ptr %4, align 8
  %6131 = extractvalue { ptr, i32 } %6129, 1
  store i32 %6131, ptr %5, align 4
  br label %6246

6132:                                             ; preds = %5959
  %6133 = landingpad { ptr, i32 }
          cleanup
  %6134 = extractvalue { ptr, i32 } %6133, 0
  store ptr %6134, ptr %4, align 8
  %6135 = extractvalue { ptr, i32 } %6133, 1
  store i32 %6135, ptr %5, align 4
  br label %6245

6136:                                             ; preds = %5960
  %6137 = landingpad { ptr, i32 }
          cleanup
  %6138 = extractvalue { ptr, i32 } %6137, 0
  store ptr %6138, ptr %4, align 8
  %6139 = extractvalue { ptr, i32 } %6137, 1
  store i32 %6139, ptr %5, align 4
  br label %6237

6140:                                             ; preds = %5967
  %6141 = landingpad { ptr, i32 }
          cleanup
  %6142 = extractvalue { ptr, i32 } %6141, 0
  store ptr %6142, ptr %4, align 8
  %6143 = extractvalue { ptr, i32 } %6141, 1
  store i32 %6143, ptr %5, align 4
  br label %6236

6144:                                             ; preds = %5968
  %6145 = landingpad { ptr, i32 }
          cleanup
  %6146 = extractvalue { ptr, i32 } %6145, 0
  store ptr %6146, ptr %4, align 8
  %6147 = extractvalue { ptr, i32 } %6145, 1
  store i32 %6147, ptr %5, align 4
  br label %6235

6148:                                             ; preds = %5971
  %6149 = landingpad { ptr, i32 }
          cleanup
  %6150 = extractvalue { ptr, i32 } %6149, 0
  store ptr %6150, ptr %4, align 8
  %6151 = extractvalue { ptr, i32 } %6149, 1
  store i32 %6151, ptr %5, align 4
  br label %6224

6152:                                             ; preds = %5973
  %6153 = landingpad { ptr, i32 }
          cleanup
  %6154 = extractvalue { ptr, i32 } %6153, 0
  store ptr %6154, ptr %4, align 8
  %6155 = extractvalue { ptr, i32 } %6153, 1
  store i32 %6155, ptr %5, align 4
  br label %6223

6156:                                             ; preds = %5974
  %6157 = landingpad { ptr, i32 }
          cleanup
  %6158 = extractvalue { ptr, i32 } %6157, 0
  store ptr %6158, ptr %4, align 8
  %6159 = extractvalue { ptr, i32 } %6157, 1
  store i32 %6159, ptr %5, align 4
  br label %6215

6160:                                             ; preds = %5982
  %6161 = landingpad { ptr, i32 }
          cleanup
  %6162 = extractvalue { ptr, i32 } %6161, 0
  store ptr %6162, ptr %4, align 8
  %6163 = extractvalue { ptr, i32 } %6161, 1
  store i32 %6163, ptr %5, align 4
  br label %6214

6164:                                             ; preds = %5983
  %6165 = landingpad { ptr, i32 }
          cleanup
  %6166 = extractvalue { ptr, i32 } %6165, 0
  store ptr %6166, ptr %4, align 8
  %6167 = extractvalue { ptr, i32 } %6165, 1
  store i32 %6167, ptr %5, align 4
  br label %6206

6168:                                             ; preds = %5990
  %6169 = landingpad { ptr, i32 }
          cleanup
  %6170 = extractvalue { ptr, i32 } %6169, 0
  store ptr %6170, ptr %4, align 8
  %6171 = extractvalue { ptr, i32 } %6169, 1
  store i32 %6171, ptr %5, align 4
  br label %6205

6172:                                             ; preds = %5991
  %6173 = landingpad { ptr, i32 }
          cleanup
  %6174 = extractvalue { ptr, i32 } %6173, 0
  store ptr %6174, ptr %4, align 8
  %6175 = extractvalue { ptr, i32 } %6173, 1
  store i32 %6175, ptr %5, align 4
  br label %6197

6176:                                             ; preds = %5998
  %6177 = landingpad { ptr, i32 }
          cleanup
  %6178 = extractvalue { ptr, i32 } %6177, 0
  store ptr %6178, ptr %4, align 8
  %6179 = extractvalue { ptr, i32 } %6177, 1
  store i32 %6179, ptr %5, align 4
  br label %6196

6180:                                             ; preds = %5999
  %6181 = landingpad { ptr, i32 }
          cleanup
  %6182 = extractvalue { ptr, i32 } %6181, 0
  store ptr %6182, ptr %4, align 8
  %6183 = extractvalue { ptr, i32 } %6181, 1
  store i32 %6183, ptr %5, align 4
  br label %6188

6184:                                             ; preds = %6006
  %6185 = landingpad { ptr, i32 }
          cleanup
  %6186 = extractvalue { ptr, i32 } %6185, 0
  store ptr %6186, ptr %4, align 8
  %6187 = extractvalue { ptr, i32 } %6185, 1
  store i32 %6187, ptr %5, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %766) #9
  br label %6188

6188:                                             ; preds = %6184, %6180
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %809) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %809) #9
  %6189 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %768, i32 0, i32 0
  %6190 = getelementptr inbounds %"class.std::shared_ptr", ptr %6189, i64 1
  br label %6191

6191:                                             ; preds = %6191, %6188
  %6192 = phi ptr [ %6190, %6188 ], [ %6193, %6191 ]
  %6193 = getelementptr inbounds %"class.std::shared_ptr", ptr %6192, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6193) #9
  %6194 = icmp eq ptr %6193, %6189
  br i1 %6194, label %6195, label %6191

6195:                                             ; preds = %6191
  br label %6196

6196:                                             ; preds = %6195, %6176
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %772) #9
  br label %6197

6197:                                             ; preds = %6196, %6172
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %807) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %807) #9
  %6198 = getelementptr inbounds [1 x %"class.std::shared_ptr"], ptr %774, i32 0, i32 0
  %6199 = getelementptr inbounds %"class.std::shared_ptr", ptr %6198, i64 1
  br label %6200

6200:                                             ; preds = %6200, %6197
  %6201 = phi ptr [ %6199, %6197 ], [ %6202, %6200 ]
  %6202 = getelementptr inbounds %"class.std::shared_ptr", ptr %6201, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6202) #9
  %6203 = icmp eq ptr %6202, %6198
  br i1 %6203, label %6204, label %6200

6204:                                             ; preds = %6200
  br label %6205

6205:                                             ; preds = %6204, %6168
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %778) #9
  br label %6206

6206:                                             ; preds = %6205, %6164
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %805) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %805) #9
  %6207 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %780, i32 0, i32 0
  %6208 = getelementptr inbounds %"class.std::shared_ptr", ptr %6207, i64 2
  br label %6209

6209:                                             ; preds = %6209, %6206
  %6210 = phi ptr [ %6208, %6206 ], [ %6211, %6209 ]
  %6211 = getelementptr inbounds %"class.std::shared_ptr", ptr %6210, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6211) #9
  %6212 = icmp eq ptr %6211, %6207
  br i1 %6212, label %6213, label %6209

6213:                                             ; preds = %6209
  br label %6214

6214:                                             ; preds = %6213, %6160
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %796) #9
  br label %6215

6215:                                             ; preds = %6214, %6156
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %803) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %803) #9
  %6216 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %798, i32 0, i32 0
  %6217 = getelementptr inbounds %"class.std::shared_ptr", ptr %6216, i64 2
  br label %6218

6218:                                             ; preds = %6218, %6215
  %6219 = phi ptr [ %6217, %6215 ], [ %6220, %6218 ]
  %6220 = getelementptr inbounds %"class.std::shared_ptr", ptr %6219, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6220) #9
  %6221 = icmp eq ptr %6220, %6216
  br i1 %6221, label %6222, label %6218

6222:                                             ; preds = %6218
  br label %6223

6223:                                             ; preds = %6222, %6152
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %800) #9
  br label %6224

6224:                                             ; preds = %6223, %6148
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %801) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %801) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %800) #9
  %6225 = load i1, ptr %802, align 1
  br i1 %6225, label %6226, label %6234

6226:                                             ; preds = %6224
  %6227 = load ptr, ptr %799, align 8
  %6228 = icmp eq ptr %798, %6227
  br i1 %6228, label %6233, label %6229

6229:                                             ; preds = %6229, %6226
  %6230 = phi ptr [ %6227, %6226 ], [ %6231, %6229 ]
  %6231 = getelementptr inbounds %"class.std::shared_ptr", ptr %6230, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6231) #9
  %6232 = icmp eq ptr %6231, %798
  br i1 %6232, label %6233, label %6229

6233:                                             ; preds = %6229, %6226
  br label %6234

6234:                                             ; preds = %6233, %6224
  call void @llvm.lifetime.end.p0(i64 32, ptr %798) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %794) #9
  br label %6235

6235:                                             ; preds = %6234, %6144
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %795) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %795) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %794) #9
  br label %6236

6236:                                             ; preds = %6235, %6140
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %784) #9
  br label %6237

6237:                                             ; preds = %6236, %6136
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %793) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %793) #9
  %6238 = getelementptr inbounds [2 x %"class.std::shared_ptr"], ptr %786, i32 0, i32 0
  %6239 = getelementptr inbounds %"class.std::shared_ptr", ptr %6238, i64 2
  br label %6240

6240:                                             ; preds = %6240, %6237
  %6241 = phi ptr [ %6239, %6237 ], [ %6242, %6240 ]
  %6242 = getelementptr inbounds %"class.std::shared_ptr", ptr %6241, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6242) #9
  %6243 = icmp eq ptr %6242, %6238
  br i1 %6243, label %6244, label %6240

6244:                                             ; preds = %6240
  br label %6245

6245:                                             ; preds = %6244, %6132
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %790) #9
  br label %6246

6246:                                             ; preds = %6245, %6128
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %791) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %791) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %790) #9
  br label %6247

6247:                                             ; preds = %6246, %6124
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %788) #9
  br label %6248

6248:                                             ; preds = %6247, %6120
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %789) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %789) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %788) #9
  %6249 = load i1, ptr %792, align 1
  br i1 %6249, label %6250, label %6258

6250:                                             ; preds = %6248
  %6251 = load ptr, ptr %787, align 8
  %6252 = icmp eq ptr %786, %6251
  br i1 %6252, label %6257, label %6253

6253:                                             ; preds = %6253, %6250
  %6254 = phi ptr [ %6251, %6250 ], [ %6255, %6253 ]
  %6255 = getelementptr inbounds %"class.std::shared_ptr", ptr %6254, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6255) #9
  %6256 = icmp eq ptr %6255, %786
  br i1 %6256, label %6257, label %6253

6257:                                             ; preds = %6253, %6250
  br label %6258

6258:                                             ; preds = %6257, %6248
  call void @llvm.lifetime.end.p0(i64 32, ptr %786) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %782) #9
  br label %6259

6259:                                             ; preds = %6258, %6116
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %783) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %783) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %782) #9
  %6260 = load i1, ptr %804, align 1
  br i1 %6260, label %6261, label %6269

6261:                                             ; preds = %6259
  %6262 = load ptr, ptr %781, align 8
  %6263 = icmp eq ptr %780, %6262
  br i1 %6263, label %6268, label %6264

6264:                                             ; preds = %6264, %6261
  %6265 = phi ptr [ %6262, %6261 ], [ %6266, %6264 ]
  %6266 = getelementptr inbounds %"class.std::shared_ptr", ptr %6265, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6266) #9
  %6267 = icmp eq ptr %6266, %780
  br i1 %6267, label %6268, label %6264

6268:                                             ; preds = %6264, %6261
  br label %6269

6269:                                             ; preds = %6268, %6259
  call void @llvm.lifetime.end.p0(i64 32, ptr %780) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %776) #9
  br label %6270

6270:                                             ; preds = %6269, %6112
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %777) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %777) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %776) #9
  %6271 = load i1, ptr %806, align 1
  br i1 %6271, label %6272, label %6280

6272:                                             ; preds = %6270
  %6273 = load ptr, ptr %775, align 8
  %6274 = icmp eq ptr %774, %6273
  br i1 %6274, label %6279, label %6275

6275:                                             ; preds = %6275, %6272
  %6276 = phi ptr [ %6273, %6272 ], [ %6277, %6275 ]
  %6277 = getelementptr inbounds %"class.std::shared_ptr", ptr %6276, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6277) #9
  %6278 = icmp eq ptr %6277, %774
  br i1 %6278, label %6279, label %6275

6279:                                             ; preds = %6275, %6272
  br label %6280

6280:                                             ; preds = %6279, %6270
  call void @llvm.lifetime.end.p0(i64 16, ptr %774) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %770) #9
  br label %6281

6281:                                             ; preds = %6280, %6108
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %771) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %771) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %770) #9
  %6282 = load i1, ptr %808, align 1
  br i1 %6282, label %6283, label %6291

6283:                                             ; preds = %6281
  %6284 = load ptr, ptr %769, align 8
  %6285 = icmp eq ptr %768, %6284
  br i1 %6285, label %6290, label %6286

6286:                                             ; preds = %6286, %6283
  %6287 = phi ptr [ %6284, %6283 ], [ %6288, %6286 ]
  %6288 = getelementptr inbounds %"class.std::shared_ptr", ptr %6287, i64 -1
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6288) #9
  %6289 = icmp eq ptr %6288, %768
  br i1 %6289, label %6290, label %6286

6290:                                             ; preds = %6286, %6283
  br label %6291

6291:                                             ; preds = %6290, %6281
  call void @llvm.lifetime.end.p0(i64 16, ptr %768) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %766) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %765) #9
  br label %6389

6292:                                             ; preds = %6084, %6044
  %6293 = landingpad { ptr, i32 }
          catch ptr null
  %6294 = extractvalue { ptr, i32 } %6293, 0
  store ptr %6294, ptr %4, align 8
  %6295 = extractvalue { ptr, i32 } %6293, 1
  store i32 %6295, ptr %5, align 4
  br label %6363

6296:                                             ; preds = %6046
  %6297 = landingpad { ptr, i32 }
          catch ptr null
  %6298 = extractvalue { ptr, i32 } %6297, 0
  store ptr %6298, ptr %4, align 8
  %6299 = extractvalue { ptr, i32 } %6297, 1
  store i32 %6299, ptr %5, align 4
  br label %6338

6300:                                             ; preds = %6048
  %6301 = landingpad { ptr, i32 }
          catch ptr null
  %6302 = extractvalue { ptr, i32 } %6301, 0
  store ptr %6302, ptr %4, align 8
  %6303 = extractvalue { ptr, i32 } %6301, 1
  store i32 %6303, ptr %5, align 4
  br label %6337

6304:                                             ; preds = %6049
  %6305 = landingpad { ptr, i32 }
          catch ptr null
  %6306 = extractvalue { ptr, i32 } %6305, 0
  store ptr %6306, ptr %4, align 8
  %6307 = extractvalue { ptr, i32 } %6305, 1
  store i32 %6307, ptr %5, align 4
  br label %6336

6308:                                             ; preds = %6050
  %6309 = landingpad { ptr, i32 }
          catch ptr null
  %6310 = extractvalue { ptr, i32 } %6309, 0
  store ptr %6310, ptr %4, align 8
  %6311 = extractvalue { ptr, i32 } %6309, 1
  store i32 %6311, ptr %5, align 4
  br label %6328

6312:                                             ; preds = %6057
  %6313 = landingpad { ptr, i32 }
          catch ptr null
  %6314 = extractvalue { ptr, i32 } %6313, 0
  store ptr %6314, ptr %4, align 8
  %6315 = extractvalue { ptr, i32 } %6313, 1
  store i32 %6315, ptr %5, align 4
  br label %6320

6316:                                             ; preds = %6066, %6064
  %6317 = landingpad { ptr, i32 }
          catch ptr null
  %6318 = extractvalue { ptr, i32 } %6317, 0
  store ptr %6318, ptr %4, align 8
  %6319 = extractvalue { ptr, i32 } %6317, 1
  store i32 %6319, ptr %5, align 4
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %811) #9
  br label %6320

6320:                                             ; preds = %6316, %6312
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %824) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %824) #9
  %6321 = getelementptr inbounds [1 x %"class.std::vector"], ptr %813, i32 0, i32 0
  %6322 = getelementptr inbounds %"class.std::vector", ptr %6321, i64 1
  br label %6323

6323:                                             ; preds = %6323, %6320
  %6324 = phi ptr [ %6322, %6320 ], [ %6325, %6323 ]
  %6325 = getelementptr inbounds %"class.std::vector", ptr %6324, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6325) #9
  %6326 = icmp eq ptr %6325, %6321
  br i1 %6326, label %6327, label %6323

6327:                                             ; preds = %6323
  br label %6328

6328:                                             ; preds = %6327, %6308
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %822) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %822) #9
  %6329 = getelementptr inbounds [1 x %"struct.std::pair"], ptr %816, i32 0, i32 0
  %6330 = getelementptr inbounds %"struct.std::pair", ptr %6329, i64 1
  br label %6331

6331:                                             ; preds = %6331, %6328
  %6332 = phi ptr [ %6330, %6328 ], [ %6333, %6331 ]
  %6333 = getelementptr inbounds %"struct.std::pair", ptr %6332, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6333) #9
  %6334 = icmp eq ptr %6333, %6329
  br i1 %6334, label %6335, label %6331

6335:                                             ; preds = %6331
  br label %6336

6336:                                             ; preds = %6335, %6304
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %818) #9
  br label %6337

6337:                                             ; preds = %6336, %6300
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %819) #9
  br label %6338

6338:                                             ; preds = %6337, %6296
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %820) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %820) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %819) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %818) #9
  %6339 = load i1, ptr %821, align 1
  br i1 %6339, label %6340, label %6348

6340:                                             ; preds = %6338
  %6341 = load ptr, ptr %817, align 8
  %6342 = icmp eq ptr %816, %6341
  br i1 %6342, label %6347, label %6343

6343:                                             ; preds = %6343, %6340
  %6344 = phi ptr [ %6341, %6340 ], [ %6345, %6343 ]
  %6345 = getelementptr inbounds %"struct.std::pair", ptr %6344, i64 -1
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6345) #9
  %6346 = icmp eq ptr %6345, %816
  br i1 %6346, label %6347, label %6343

6347:                                             ; preds = %6343, %6340
  br label %6348

6348:                                             ; preds = %6347, %6338
  call void @llvm.lifetime.end.p0(i64 32, ptr %816) #9
  %6349 = load i1, ptr %823, align 1
  br i1 %6349, label %6350, label %6358

6350:                                             ; preds = %6348
  %6351 = load ptr, ptr %814, align 8
  %6352 = icmp eq ptr %813, %6351
  br i1 %6352, label %6357, label %6353

6353:                                             ; preds = %6353, %6350
  %6354 = phi ptr [ %6351, %6350 ], [ %6355, %6353 ]
  %6355 = getelementptr inbounds %"class.std::vector", ptr %6354, i64 -1
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6355) #9
  %6356 = icmp eq ptr %6355, %813
  br i1 %6356, label %6357, label %6353

6357:                                             ; preds = %6353, %6350
  br label %6358

6358:                                             ; preds = %6357, %6348
  call void @llvm.lifetime.end.p0(i64 24, ptr %813) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %810) #9
  br label %6363

6359:                                             ; preds = %6091, %6089, %6086
  %6360 = landingpad { ptr, i32 }
          catch ptr null
  %6361 = extractvalue { ptr, i32 } %6360, 0
  store ptr %6361, ptr %4, align 8
  %6362 = extractvalue { ptr, i32 } %6360, 1
  store i32 %6362, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %825) #9
  br label %6363

6363:                                             ; preds = %6359, %6358, %6292
  %6364 = load ptr, ptr %4, align 8
  %6365 = call ptr @__cxa_begin_catch(ptr %6364) #9
  %6366 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %6367 unwind label %6379

6367:                                             ; preds = %6363
  %6368 = load ptr, ptr %6366, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %826) #9
  %6369 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %6370 unwind label %6383

6370:                                             ; preds = %6367
  %6371 = load ptr, ptr %6369, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %826, ptr noundef nonnull align 8 dereferenceable(30) %6371, i32 noundef 2500)
          to label %6372 unwind label %6383

6372:                                             ; preds = %6370
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %6368, ptr noundef nonnull align 8 dereferenceable(30) %826, ptr noundef @.str.548)
          to label %6373 unwind label %6383

6373:                                             ; preds = %6372
  call void @llvm.lifetime.end.p0(i64 32, ptr %826) #9
  invoke void @__cxa_end_catch()
          to label %6374 unwind label %6102

6374:                                             ; preds = %6373
  br label %6375

6375:                                             ; preds = %6378, %6374
  br label %6376

6376:                                             ; preds = %6375
  br label %6377

6377:                                             ; preds = %6376
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %676) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %676) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %669) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %669) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %662) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %662) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %586) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %586) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %573) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %573) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %550) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %550) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %537) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %537) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #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 %12) #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 %9) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #9
  call void @_ZNSt12__shared_ptrI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #9
  call void @_ZNSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #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

6378:                                             ; preds = %6092, %6083
  br label %6375

6379:                                             ; preds = %6363
  %6380 = landingpad { ptr, i32 }
          cleanup
  %6381 = extractvalue { ptr, i32 } %6380, 0
  store ptr %6381, ptr %4, align 8
  %6382 = extractvalue { ptr, i32 } %6380, 1
  store i32 %6382, ptr %5, align 4
  br label %6387

6383:                                             ; preds = %6372, %6370, %6367
  %6384 = landingpad { ptr, i32 }
          cleanup
  %6385 = extractvalue { ptr, i32 } %6384, 0
  store ptr %6385, ptr %4, align 8
  %6386 = extractvalue { ptr, i32 } %6384, 1
  store i32 %6386, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %826) #9
  br label %6387

6387:                                             ; preds = %6383, %6379
  invoke void @__cxa_end_catch()
          to label %6388 unwind label %6410

6388:                                             ; preds = %6387
  br label %6389

6389:                                             ; preds = %6388, %6291, %6107, %6102, %5917, %5723, %5665
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %676) #9
  br label %6390

6390:                                             ; preds = %6389, %5607
  call void @llvm.lifetime.end.p0(i64 16, ptr %676) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %669) #9
  br label %6391

6391:                                             ; preds = %6390, %5586
  call void @llvm.lifetime.end.p0(i64 16, ptr %669) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %662) #9
  br label %6392

6392:                                             ; preds = %6391, %5565
  call void @llvm.lifetime.end.p0(i64 16, ptr %662) #9
  br label %6393

6393:                                             ; preds = %6392, %5544, %5539, %5197, %5119
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %586) #9
  br label %6394

6394:                                             ; preds = %6393, %5051
  call void @llvm.lifetime.end.p0(i64 16, ptr %586) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %573) #9
  br label %6395

6395:                                             ; preds = %6394, %4958
  call void @llvm.lifetime.end.p0(i64 16, ptr %573) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %550) #9
  br label %6396

6396:                                             ; preds = %6395, %4907
  call void @llvm.lifetime.end.p0(i64 16, ptr %550) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %537) #9
  br label %6397

6397:                                             ; preds = %6396, %4814
  call void @llvm.lifetime.end.p0(i64 16, ptr %537) #9
  br label %6398

6398:                                             ; preds = %6397, %4763, %4707, %4368, %4290, %4220, %4071, %3993, %3837, %3769, %3713, %3657, %3565, %3217, %3149, %3103, %3047, %2977, %2671, %2623, %2577, %2467, %2264, %2196, %2150, %2040, %1773, %1725, %1679, %1456, %1408, %1362, %1215, %1147, %1142, %1052, %1016, %970
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  br label %6399

6399:                                             ; preds = %6398, %956
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  br label %6400

6400:                                             ; preds = %6399, %947
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  br label %6401

6401:                                             ; preds = %6400, %938
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #9
  call void @_ZNSt12__shared_ptrI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #9
  br label %6402

6402:                                             ; preds = %6401, %926, %922
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #9
  call void @_ZNSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  br label %6403

6403:                                             ; preds = %6402, %918, %914
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #9
  call void @_ZNSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  br label %6404

6404:                                             ; preds = %6403, %910
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #9
  br label %6405

6405:                                             ; preds = %6404
  %6406 = load ptr, ptr %4, align 8
  %6407 = load i32, ptr %5, align 4
  %6408 = insertvalue { ptr, i32 } poison, ptr %6406, 0
  %6409 = insertvalue { ptr, i32 } %6408, i32 %6407, 1
  resume { ptr, i32 } %6409

6410:                                             ; preds = %6387, %6106, %5543, %4706, %4219, %3992, %3564, %2976, %2466, %2039, %1678, %1361, %1146
  %6411 = landingpad { ptr, i32 }
          catch ptr null
  %6412 = extractvalue { ptr, i32 } %6411, 0
  call void @__clang_call_terminate(ptr %6412) #12
  unreachable
}

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

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress 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 = { "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 = { 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 #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_listISt10shared_ptrI7HtnTermEE", !6, i64 0, !11, i64 8}
!11 = !{!"long", !7, i64 0}
!12 = !{!10, !11, i64 8}
!13 = !{!14, !6, i64 0}
!14 = !{!"_ZTSSt16initializer_listISt4pairISt10shared_ptrI7HtnTermES3_EE", !6, i64 0, !11, i64 8}
!15 = !{!14, !11, i64 8}
!16 = !{!17, !6, i64 0}
!17 = !{!"_ZTSSt16initializer_listISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEE", !6, i64 0, !11, i64 8}
!18 = !{!17, !11, i64 8}


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

%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.85" = type { %"class.std::__shared_ptr.86" }
%"class.std::__shared_ptr.86" = type { ptr, %"class.std::__shared_count" }
%"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_ptr.56" = type { %"class.std::__shared_ptr.57" }
%"class.std::__shared_ptr.57" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.101" = type { %"class.std::__shared_ptr.102" }
%"class.std::__shared_ptr.102" = type { ptr, %"class.std::__shared_count" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.88" = type { i8 }
%"class.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 }
%"class.UnitTest::TestDetails" = type <{ ptr, ptr, ptr, i32, i8, i8, [2 x i8] }>
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<std::vector<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>, std::allocator<std::vector<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>, std::allocator<std::vector<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>, std::allocator<std::vector<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>, std::allocator<std::vector<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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::allocator.10" = type { i8 }

@.str.77 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.502 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.505 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.506 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.507 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.508 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.509 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.510 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.511 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.512 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.513 = external hidden unnamed_addr constant [158 x i8], align 1
@.str.514 = external hidden unnamed_addr constant [188 x i8], align 1
@.str.515 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.516 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.517 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.518 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.519 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.520 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.521 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.522 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.523 = external hidden unnamed_addr constant [152 x i8], align 1
@.str.524 = external hidden unnamed_addr constant [182 x i8], align 1
@.str.525 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.526 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.527 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.528 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.529 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.530 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.531 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.532 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.533 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.534 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.535 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.536 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.537 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.538 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.539 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.540 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.541 = external hidden unnamed_addr constant [118 x i8], align 1
@.str.542 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.543 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.544 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.545 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.546 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.547 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.548 = external hidden unnamed_addr constant [120 x i8], align 1

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

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

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 #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z14CheckSolutionsSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EES8_(ptr noundef, ptr noundef) local_unnamed_addr #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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10HtnRuleSetC2Ev(ptr noundef nonnull align 8 dereferenceable(144)) unnamed_addr #2 align 2

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

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

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

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

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

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 noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(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 @_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 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 #4

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

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

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

; 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 #2 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_S2_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 zeroext i1 @_ZN25SuiteHtnGoalResolverTests6IsTrueESt10shared_ptrISt6vectorIS1_ISt4pairIS0_I7HtnTermES4_ESaIS5_EESaIS7_EEE(ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #3 align 2

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

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

declare void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #4

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

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

declare void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8, ptr noundef nonnull align 8 dereferenceable(64), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN25SuiteHtnGoalResolverTests31TestHtnGoalResolverResolveTests7RunImplEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(49) %0) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::shared_ptr.21", align 8
  %3 = alloca %"class.std::shared_ptr.56", align 8
  %4 = alloca %"class.std::shared_ptr.101", align 8
  %5 = alloca %"class.std::shared_ptr.85", align 8
  %6 = alloca %"class.std::shared_ptr", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator.88", align 1
  %9 = alloca %"class.std::shared_ptr", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator.88", align 1
  %12 = alloca %"class.std::shared_ptr", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator.88", align 1
  %15 = alloca %"class.std::shared_ptr", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator.88", align 1
  %18 = alloca %"class.std::vector.0", 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::vector.0", align 8
  %23 = alloca [1 x %"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::allocator.2", align 1
  %27 = alloca %"class.std::vector.0", align 8
  %28 = alloca %"class.std::shared_ptr.85", align 8
  %29 = alloca %"class.std::vector.0", align 8
  %30 = alloca [1 x %"class.std::shared_ptr"], align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator.88", align 1
  %33 = alloca %"class.std::allocator.2", align 1
  %34 = alloca %"class.std::shared_ptr.85", align 8
  %35 = alloca %"class.UnitTest::TestDetails", align 8
  %36 = alloca %"class.UnitTest::TestDetails", align 8
  %37 = alloca %"class.std::shared_ptr.85", align 8
  %38 = alloca %"class.std::vector.0", align 8
  %39 = alloca [1 x %"class.std::shared_ptr"], align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.88", align 1
  %42 = alloca %"class.std::vector.0", align 8
  %43 = alloca [1 x %"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::allocator.2", align 1
  %47 = alloca %"class.std::allocator.2", align 1
  %48 = alloca %"class.std::shared_ptr.85", align 8
  %49 = alloca %"class.UnitTest::TestDetails", align 8
  %50 = alloca %"class.UnitTest::TestDetails", align 8
  %51 = alloca %"class.std::shared_ptr", align 8
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator.88", align 1
  %54 = alloca %"class.std::vector.0", align 8
  %55 = alloca [1 x %"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.2", align 1
  %59 = alloca %"class.std::vector.0", align 8
  %60 = alloca %"class.std::shared_ptr.85", align 8
  %61 = alloca %"class.std::vector.0", align 8
  %62 = alloca [1 x %"class.std::shared_ptr"], align 8
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::allocator.88", align 1
  %65 = alloca %"class.std::vector.0", align 8
  %66 = alloca [1 x %"class.std::shared_ptr"], align 8
  %67 = alloca %"class.std::allocator.2", align 1
  %68 = alloca %"class.std::allocator.2", align 1
  %69 = alloca %"class.std::vector.8", align 8
  %70 = alloca %"class.std::vector.8", align 8
  %71 = alloca [1 x %"class.std::vector"], align 8
  %72 = alloca [1 x %"struct.std::pair"], align 8
  %73 = alloca %"class.std::shared_ptr", align 8
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca %"class.std::allocator.88", align 1
  %76 = alloca %"class.std::allocator", align 1
  %77 = alloca %"class.std::allocator.10", align 1
  %78 = alloca %"class.UnitTest::TestDetails", align 8
  %79 = alloca %"class.UnitTest::TestDetails", align 8
  %80 = alloca %"class.std::shared_ptr", align 8
  %81 = alloca %"class.std::__cxx11::basic_string", align 8
  %82 = alloca %"class.std::allocator.88", align 1
  %83 = alloca %"class.std::vector.0", align 8
  %84 = alloca [1 x %"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.2", align 1
  %88 = alloca %"class.std::vector.0", align 8
  %89 = alloca %"class.std::shared_ptr.85", align 8
  %90 = alloca %"class.std::vector.0", align 8
  %91 = alloca [1 x %"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 [1 x %"class.std::shared_ptr"], align 8
  %96 = alloca %"class.std::allocator.2", align 1
  %97 = alloca %"class.std::allocator.2", align 1
  %98 = alloca %"class.std::vector.8", align 8
  %99 = alloca %"class.std::vector.8", align 8
  %100 = alloca [2 x %"class.std::vector"], align 8
  %101 = alloca [1 x %"struct.std::pair"], align 8
  %102 = alloca %"class.std::shared_ptr", align 8
  %103 = alloca %"class.std::__cxx11::basic_string", align 8
  %104 = alloca %"class.std::allocator.88", align 1
  %105 = alloca %"class.std::allocator", align 1
  %106 = alloca [1 x %"struct.std::pair"], align 8
  %107 = alloca %"class.std::shared_ptr", align 8
  %108 = alloca %"class.std::__cxx11::basic_string", align 8
  %109 = alloca %"class.std::allocator.88", align 1
  %110 = alloca %"class.std::allocator", align 1
  %111 = alloca %"class.std::allocator.10", align 1
  %112 = alloca %"class.UnitTest::TestDetails", align 8
  %113 = alloca %"class.UnitTest::TestDetails", align 8
  %114 = alloca %"class.std::shared_ptr", align 8
  %115 = alloca %"class.std::__cxx11::basic_string", align 8
  %116 = alloca %"class.std::allocator.88", align 1
  %117 = alloca %"class.std::vector.0", align 8
  %118 = alloca [1 x %"class.std::shared_ptr"], align 8
  %119 = alloca %"class.std::__cxx11::basic_string", align 8
  %120 = alloca %"class.std::allocator.88", align 1
  %121 = alloca %"class.std::allocator.2", align 1
  %122 = alloca %"class.std::vector.0", align 8
  %123 = alloca [1 x %"class.std::shared_ptr"], align 8
  %124 = alloca %"class.std::__cxx11::basic_string", align 8
  %125 = alloca %"class.std::allocator.88", align 1
  %126 = alloca %"class.std::vector.0", align 8
  %127 = alloca [1 x %"class.std::shared_ptr"], align 8
  %128 = alloca %"class.std::__cxx11::basic_string", align 8
  %129 = alloca %"class.std::allocator.88", align 1
  %130 = alloca %"class.std::allocator.2", align 1
  %131 = alloca %"class.std::allocator.2", align 1
  %132 = alloca %"class.std::shared_ptr", align 8
  %133 = alloca %"class.std::__cxx11::basic_string", align 8
  %134 = alloca %"class.std::allocator.88", align 1
  %135 = alloca %"class.std::vector.0", align 8
  %136 = alloca [1 x %"class.std::shared_ptr"], align 8
  %137 = alloca %"class.std::__cxx11::basic_string", align 8
  %138 = alloca %"class.std::allocator.88", align 1
  %139 = alloca %"class.std::allocator.2", align 1
  %140 = alloca %"class.std::vector.0", align 8
  %141 = alloca %"class.std::shared_ptr.85", align 8
  %142 = alloca %"class.std::vector.0", align 8
  %143 = alloca [1 x %"class.std::shared_ptr"], align 8
  %144 = alloca %"class.std::__cxx11::basic_string", align 8
  %145 = alloca %"class.std::allocator.88", align 1
  %146 = alloca %"class.std::vector.0", align 8
  %147 = alloca [1 x %"class.std::shared_ptr"], align 8
  %148 = alloca %"class.std::__cxx11::basic_string", align 8
  %149 = alloca %"class.std::allocator.88", align 1
  %150 = alloca %"class.std::allocator.2", align 1
  %151 = alloca %"class.std::allocator.2", align 1
  %152 = alloca %"class.std::shared_ptr.85", align 8
  %153 = alloca %"class.UnitTest::TestDetails", align 8
  %154 = alloca %"class.UnitTest::TestDetails", 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 [1 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::allocator.2", align 1
  %163 = alloca %"class.std::vector.0", align 8
  %164 = alloca [1 x %"class.std::shared_ptr"], align 8
  %165 = alloca %"class.std::__cxx11::basic_string", align 8
  %166 = alloca %"class.std::allocator.88", align 1
  %167 = alloca %"class.std::vector.0", align 8
  %168 = alloca [1 x %"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::allocator.2", align 1
  %172 = alloca %"class.std::allocator.2", align 1
  %173 = alloca %"class.std::shared_ptr", align 8
  %174 = alloca %"class.std::__cxx11::basic_string", align 8
  %175 = alloca %"class.std::allocator.88", align 1
  %176 = alloca %"class.std::vector.0", align 8
  %177 = alloca [1 x %"class.std::shared_ptr"], align 8
  %178 = alloca %"class.std::__cxx11::basic_string", align 8
  %179 = alloca %"class.std::allocator.88", align 1
  %180 = alloca %"class.std::allocator.2", align 1
  %181 = alloca %"class.std::vector.0", align 8
  %182 = alloca %"class.std::shared_ptr.85", align 8
  %183 = alloca %"class.std::vector.0", align 8
  %184 = alloca [1 x %"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::vector.0", align 8
  %188 = alloca [1 x %"class.std::shared_ptr"], align 8
  %189 = alloca %"class.std::allocator.2", align 1
  %190 = alloca %"class.std::allocator.2", align 1
  %191 = alloca %"class.std::vector.8", align 8
  %192 = alloca %"class.std::vector.8", align 8
  %193 = alloca [1 x %"class.std::vector"], align 8
  %194 = alloca [1 x %"struct.std::pair"], align 8
  %195 = alloca %"class.std::shared_ptr", align 8
  %196 = alloca %"class.std::__cxx11::basic_string", align 8
  %197 = alloca %"class.std::allocator.88", align 1
  %198 = alloca %"class.std::allocator", align 1
  %199 = alloca %"class.std::allocator.10", align 1
  %200 = alloca %"class.UnitTest::TestDetails", align 8
  %201 = alloca %"class.UnitTest::TestDetails", align 8
  %202 = alloca %"class.std::shared_ptr", align 8
  %203 = alloca %"class.std::__cxx11::basic_string", align 8
  %204 = alloca %"class.std::allocator.88", align 1
  %205 = alloca %"class.std::vector.0", align 8
  %206 = alloca [2 x %"class.std::shared_ptr"], align 8
  %207 = alloca %"class.std::allocator.2", align 1
  %208 = alloca %"class.std::vector.0", align 8
  %209 = alloca [1 x %"class.std::shared_ptr"], align 8
  %210 = alloca %"class.std::__cxx11::basic_string", align 8
  %211 = alloca %"class.std::allocator.88", align 1
  %212 = alloca %"class.std::vector.0", align 8
  %213 = alloca [1 x %"class.std::shared_ptr"], align 8
  %214 = alloca %"class.std::allocator.2", align 1
  %215 = alloca %"class.std::allocator.2", align 1
  %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::vector.0", align 8
  %220 = alloca [2 x %"class.std::shared_ptr"], align 8
  %221 = alloca %"class.std::__cxx11::basic_string", align 8
  %222 = alloca %"class.std::allocator.88", align 1
  %223 = alloca %"class.std::__cxx11::basic_string", align 8
  %224 = alloca %"class.std::allocator.88", align 1
  %225 = alloca %"class.std::allocator.2", align 1
  %226 = alloca %"class.std::vector.0", align 8
  %227 = alloca %"class.std::shared_ptr", align 8
  %228 = alloca %"class.std::__cxx11::basic_string", align 8
  %229 = alloca %"class.std::allocator.88", align 1
  %230 = alloca %"class.std::vector.0", align 8
  %231 = alloca [1 x %"class.std::shared_ptr"], align 8
  %232 = alloca %"class.std::__cxx11::basic_string", align 8
  %233 = alloca %"class.std::allocator.88", align 1
  %234 = alloca %"class.std::allocator.2", align 1
  %235 = alloca %"class.std::vector.0", align 8
  %236 = alloca %"class.std::shared_ptr.85", align 8
  %237 = alloca %"class.std::vector.0", align 8
  %238 = alloca [1 x %"class.std::shared_ptr"], align 8
  %239 = alloca %"class.std::__cxx11::basic_string", align 8
  %240 = alloca %"class.std::allocator.88", align 1
  %241 = alloca %"class.std::vector.0", align 8
  %242 = alloca [2 x %"class.std::shared_ptr"], align 8
  %243 = alloca %"class.std::__cxx11::basic_string", align 8
  %244 = alloca %"class.std::allocator.88", align 1
  %245 = alloca %"class.std::allocator.2", align 1
  %246 = alloca %"class.std::allocator.2", align 1
  %247 = alloca %"class.std::vector.8", align 8
  %248 = alloca %"class.std::vector.8", align 8
  %249 = alloca [2 x %"class.std::vector"], align 8
  %250 = alloca [1 x %"struct.std::pair"], align 8
  %251 = alloca %"class.std::shared_ptr", align 8
  %252 = alloca %"class.std::__cxx11::basic_string", align 8
  %253 = alloca %"class.std::allocator.88", align 1
  %254 = alloca %"class.std::allocator", align 1
  %255 = alloca [1 x %"struct.std::pair"], align 8
  %256 = alloca %"class.std::shared_ptr", align 8
  %257 = alloca %"class.std::__cxx11::basic_string", align 8
  %258 = alloca %"class.std::allocator.88", align 1
  %259 = alloca %"class.std::allocator", align 1
  %260 = alloca %"class.std::allocator.10", align 1
  %261 = alloca %"class.UnitTest::TestDetails", align 8
  %262 = alloca %"class.UnitTest::TestDetails", align 8
  %263 = alloca %"class.std::shared_ptr", align 8
  %264 = alloca %"class.std::__cxx11::basic_string", align 8
  %265 = alloca %"class.std::allocator.88", align 1
  %266 = alloca %"class.std::vector.0", align 8
  %267 = alloca [2 x %"class.std::shared_ptr"], align 8
  %268 = alloca %"class.std::allocator.2", align 1
  %269 = alloca %"class.std::vector.0", align 8
  %270 = alloca [2 x %"class.std::shared_ptr"], align 8
  %271 = alloca %"class.std::__cxx11::basic_string", align 8
  %272 = alloca %"class.std::allocator.88", align 1
  %273 = alloca %"class.std::vector.0", align 8
  %274 = alloca [2 x %"class.std::shared_ptr"], align 8
  %275 = alloca %"class.std::allocator.2", align 1
  %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::allocator.2", align 1
  %281 = alloca %"class.std::allocator.2", align 1
  %282 = alloca %"class.std::shared_ptr", align 8
  %283 = alloca %"class.std::__cxx11::basic_string", align 8
  %284 = alloca %"class.std::allocator.88", align 1
  %285 = alloca %"class.std::vector.0", align 8
  %286 = alloca [2 x %"class.std::shared_ptr"], align 8
  %287 = alloca %"class.std::__cxx11::basic_string", align 8
  %288 = alloca %"class.std::allocator.88", align 1
  %289 = alloca %"class.std::__cxx11::basic_string", align 8
  %290 = alloca %"class.std::allocator.88", align 1
  %291 = alloca %"class.std::allocator.2", align 1
  %292 = alloca %"class.std::vector.0", align 8
  %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::vector.0", align 8
  %297 = alloca [2 x %"class.std::shared_ptr"], align 8
  %298 = alloca %"class.std::__cxx11::basic_string", align 8
  %299 = alloca %"class.std::allocator.88", align 1
  %300 = alloca %"class.std::__cxx11::basic_string", align 8
  %301 = alloca %"class.std::allocator.88", align 1
  %302 = alloca %"class.std::allocator.2", align 1
  %303 = alloca %"class.std::vector.0", align 8
  %304 = alloca %"class.std::shared_ptr.85", align 8
  %305 = alloca %"class.std::vector.0", align 8
  %306 = alloca [1 x %"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::vector.0", align 8
  %310 = alloca [2 x %"class.std::shared_ptr"], align 8
  %311 = alloca %"class.std::__cxx11::basic_string", align 8
  %312 = alloca %"class.std::allocator.88", align 1
  %313 = alloca %"class.std::allocator.2", align 1
  %314 = alloca %"class.std::allocator.2", align 1
  %315 = alloca %"class.std::vector.8", align 8
  %316 = alloca %"class.std::vector.8", align 8
  %317 = alloca [1 x %"class.std::vector"], align 8
  %318 = alloca [1 x %"struct.std::pair"], align 8
  %319 = alloca %"class.std::shared_ptr", align 8
  %320 = alloca %"class.std::__cxx11::basic_string", align 8
  %321 = alloca %"class.std::allocator.88", align 1
  %322 = alloca %"class.std::allocator", align 1
  %323 = alloca %"class.std::allocator.10", align 1
  %324 = alloca %"class.UnitTest::TestDetails", align 8
  %325 = alloca %"class.UnitTest::TestDetails", align 8
  %326 = alloca %"class.std::shared_ptr.85", align 8
  %327 = alloca %"class.std::vector.0", align 8
  %328 = alloca [1 x %"class.std::shared_ptr"], align 8
  %329 = alloca %"class.std::__cxx11::basic_string", align 8
  %330 = alloca %"class.std::allocator.88", align 1
  %331 = alloca %"class.std::vector.0", align 8
  %332 = alloca [2 x %"class.std::shared_ptr"], align 8
  %333 = alloca %"class.std::__cxx11::basic_string", align 8
  %334 = alloca %"class.std::allocator.88", align 1
  %335 = alloca %"class.std::__cxx11::basic_string", align 8
  %336 = alloca %"class.std::allocator.88", align 1
  %337 = alloca %"class.std::allocator.2", align 1
  %338 = alloca %"class.std::allocator.2", align 1
  %339 = alloca %"class.std::shared_ptr.85", align 8
  %340 = alloca %"class.UnitTest::TestDetails", align 8
  %341 = alloca %"class.UnitTest::TestDetails", align 8
  %342 = alloca %"class.std::shared_ptr", align 8
  %343 = alloca %"class.std::__cxx11::basic_string", align 8
  %344 = alloca %"class.std::allocator.88", align 1
  %345 = alloca %"class.std::vector.0", align 8
  %346 = alloca [2 x %"class.std::shared_ptr"], align 8
  %347 = alloca %"class.std::allocator.2", align 1
  %348 = alloca %"class.std::vector.0", align 8
  %349 = alloca [1 x %"class.std::shared_ptr"], align 8
  %350 = alloca %"class.std::__cxx11::basic_string", align 8
  %351 = alloca %"class.std::allocator.88", align 1
  %352 = alloca %"class.std::vector.0", align 8
  %353 = alloca [2 x %"class.std::shared_ptr"], align 8
  %354 = alloca %"class.std::allocator.2", align 1
  %355 = alloca %"class.std::allocator.2", align 1
  %356 = alloca %"class.std::shared_ptr.85", align 8
  %357 = alloca %"class.std::vector.0", align 8
  %358 = alloca [1 x %"class.std::shared_ptr"], align 8
  %359 = alloca %"class.std::__cxx11::basic_string", align 8
  %360 = alloca %"class.std::allocator.88", align 1
  %361 = alloca %"class.std::vector.0", align 8
  %362 = alloca [2 x %"class.std::shared_ptr"], align 8
  %363 = alloca %"class.std::__cxx11::basic_string", align 8
  %364 = alloca %"class.std::allocator.88", align 1
  %365 = alloca %"class.std::__cxx11::basic_string", align 8
  %366 = alloca %"class.std::allocator.88", align 1
  %367 = alloca %"class.std::allocator.2", align 1
  %368 = alloca %"class.std::allocator.2", align 1
  %369 = alloca %"class.std::shared_ptr.85", align 8
  %370 = alloca %"class.UnitTest::TestDetails", align 8
  %371 = alloca %"class.UnitTest::TestDetails", align 8
  %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::vector.0", align 8
  %376 = alloca [2 x %"class.std::shared_ptr"], align 8
  %377 = alloca %"class.std::__cxx11::basic_string", align 8
  %378 = alloca %"class.std::allocator.88", align 1
  %379 = alloca %"class.std::__cxx11::basic_string", align 8
  %380 = alloca %"class.std::allocator.88", align 1
  %381 = alloca %"class.std::allocator.2", align 1
  %382 = alloca %"class.std::vector.0", align 8
  %383 = alloca %"class.std::shared_ptr", align 8
  %384 = alloca %"class.std::__cxx11::basic_string", align 8
  %385 = alloca %"class.std::allocator.88", align 1
  %386 = alloca %"class.std::vector.0", align 8
  %387 = alloca [2 x %"class.std::shared_ptr"], align 8
  %388 = alloca %"class.std::__cxx11::basic_string", align 8
  %389 = alloca %"class.std::allocator.88", align 1
  %390 = alloca %"class.std::__cxx11::basic_string", align 8
  %391 = alloca %"class.std::allocator.88", align 1
  %392 = alloca %"class.std::allocator.2", align 1
  %393 = alloca %"class.std::shared_ptr", align 8
  %394 = alloca %"class.std::__cxx11::basic_string", align 8
  %395 = alloca %"class.std::allocator.88", align 1
  %396 = alloca %"class.std::vector.0", align 8
  %397 = alloca [2 x %"class.std::shared_ptr"], align 8
  %398 = alloca %"class.std::__cxx11::basic_string", align 8
  %399 = alloca %"class.std::allocator.88", align 1
  %400 = alloca %"class.std::__cxx11::basic_string", align 8
  %401 = alloca %"class.std::allocator.88", align 1
  %402 = alloca %"class.std::vector.0", align 8
  %403 = alloca [2 x %"class.std::shared_ptr"], align 8
  %404 = alloca %"class.std::__cxx11::basic_string", align 8
  %405 = alloca %"class.std::allocator.88", align 1
  %406 = alloca %"class.std::__cxx11::basic_string", align 8
  %407 = alloca %"class.std::allocator.88", align 1
  %408 = alloca %"class.std::allocator.2", align 1
  %409 = alloca %"class.std::allocator.2", align 1
  %410 = alloca %"class.std::shared_ptr", align 8
  %411 = alloca %"class.std::__cxx11::basic_string", align 8
  %412 = alloca %"class.std::allocator.88", align 1
  %413 = alloca %"class.std::vector.0", align 8
  %414 = alloca [2 x %"class.std::shared_ptr"], align 8
  %415 = alloca %"class.std::__cxx11::basic_string", align 8
  %416 = alloca %"class.std::allocator.88", align 1
  %417 = alloca %"class.std::__cxx11::basic_string", align 8
  %418 = alloca %"class.std::allocator.88", align 1
  %419 = alloca %"class.std::allocator.2", align 1
  %420 = alloca %"class.std::shared_ptr", align 8
  %421 = alloca %"class.std::__cxx11::basic_string", align 8
  %422 = alloca %"class.std::allocator.88", align 1
  %423 = alloca %"class.std::vector.0", align 8
  %424 = alloca [2 x %"class.std::shared_ptr"], align 8
  %425 = alloca %"class.std::__cxx11::basic_string", align 8
  %426 = alloca %"class.std::allocator.88", align 1
  %427 = alloca %"class.std::__cxx11::basic_string", align 8
  %428 = alloca %"class.std::allocator.88", align 1
  %429 = alloca %"class.std::vector.0", align 8
  %430 = alloca [2 x %"class.std::shared_ptr"], align 8
  %431 = alloca %"class.std::__cxx11::basic_string", align 8
  %432 = alloca %"class.std::allocator.88", align 1
  %433 = alloca %"class.std::__cxx11::basic_string", align 8
  %434 = alloca %"class.std::allocator.88", align 1
  %435 = alloca %"class.std::allocator.2", align 1
  %436 = alloca %"class.std::allocator.2", align 1
  %437 = alloca %"class.std::shared_ptr", align 8
  %438 = alloca %"class.std::__cxx11::basic_string", align 8
  %439 = alloca %"class.std::allocator.88", align 1
  %440 = alloca %"class.std::vector.0", align 8
  %441 = alloca [2 x %"class.std::shared_ptr"], align 8
  %442 = alloca %"class.std::__cxx11::basic_string", align 8
  %443 = alloca %"class.std::allocator.88", align 1
  %444 = alloca %"class.std::__cxx11::basic_string", align 8
  %445 = alloca %"class.std::allocator.88", align 1
  %446 = alloca %"class.std::allocator.2", align 1
  %447 = alloca %"class.std::vector.0", align 8
  %448 = alloca [4 x %"class.std::shared_ptr"], align 8
  %449 = alloca %"class.std::allocator.2", align 1
  %450 = alloca %"class.std::shared_ptr.85", align 8
  %451 = alloca %"class.std::vector.0", align 8
  %452 = alloca [1 x %"class.std::shared_ptr"], align 8
  %453 = alloca %"class.std::__cxx11::basic_string", align 8
  %454 = alloca %"class.std::allocator.88", align 1
  %455 = alloca %"class.std::vector.0", align 8
  %456 = alloca [2 x %"class.std::shared_ptr"], align 8
  %457 = alloca %"class.std::__cxx11::basic_string", align 8
  %458 = alloca %"class.std::allocator.88", align 1
  %459 = alloca %"class.std::__cxx11::basic_string", align 8
  %460 = alloca %"class.std::allocator.88", align 1
  %461 = alloca %"class.std::allocator.2", align 1
  %462 = alloca %"class.std::allocator.2", align 1
  %463 = alloca %"class.std::vector.8", align 8
  %464 = alloca %"class.std::vector.8", align 8
  %465 = alloca [1 x %"class.std::vector"], align 8
  %466 = alloca [1 x %"struct.std::pair"], align 8
  %467 = alloca %"class.std::shared_ptr", align 8
  %468 = alloca %"class.std::__cxx11::basic_string", align 8
  %469 = alloca %"class.std::allocator.88", align 1
  %470 = alloca %"class.std::allocator", align 1
  %471 = alloca %"class.std::allocator.10", align 1
  %472 = alloca %"class.UnitTest::TestDetails", align 8
  %473 = alloca %"class.UnitTest::TestDetails", align 8
  %474 = alloca %"class.std::shared_ptr", align 8
  %475 = alloca %"class.std::__cxx11::basic_string", align 8
  %476 = alloca %"class.std::allocator.88", align 1
  %477 = alloca %"class.std::vector.0", align 8
  %478 = alloca [2 x %"class.std::shared_ptr"], align 8
  %479 = alloca %"class.std::allocator.2", align 1
  %480 = alloca %"class.std::shared_ptr", align 8
  %481 = alloca %"class.std::__cxx11::basic_string", align 8
  %482 = alloca %"class.std::allocator.88", align 1
  %483 = alloca %"class.std::vector.0", align 8
  %484 = alloca [2 x %"class.std::shared_ptr"], align 8
  %485 = alloca %"class.std::allocator.2", align 1
  %486 = alloca %"class.std::shared_ptr", align 8
  %487 = alloca %"class.std::__cxx11::basic_string", align 8
  %488 = alloca %"class.std::allocator.88", align 1
  %489 = alloca %"class.std::vector.0", align 8
  %490 = alloca [2 x %"class.std::shared_ptr"], align 8
  %491 = alloca %"class.std::allocator.2", align 1
  %492 = alloca %"class.std::shared_ptr", align 8
  %493 = alloca %"class.std::__cxx11::basic_string", align 8
  %494 = alloca %"class.std::allocator.88", align 1
  %495 = alloca %"class.std::vector.0", align 8
  %496 = alloca [1 x %"class.std::shared_ptr"], align 8
  %497 = alloca %"class.std::__cxx11::basic_string", align 8
  %498 = alloca %"class.std::allocator.88", align 1
  %499 = alloca %"class.std::vector.0", align 8
  %500 = alloca [2 x %"class.std::shared_ptr"], align 8
  %501 = alloca %"class.std::allocator.2", align 1
  %502 = alloca %"class.std::allocator.2", align 1
  %503 = alloca %"class.std::vector.0", align 8
  %504 = alloca %"class.std::shared_ptr", align 8
  %505 = alloca %"class.std::__cxx11::basic_string", align 8
  %506 = alloca %"class.std::allocator.88", align 1
  %507 = alloca %"class.std::vector.0", align 8
  %508 = alloca [1 x %"class.std::shared_ptr"], align 8
  %509 = alloca %"class.std::__cxx11::basic_string", align 8
  %510 = alloca %"class.std::allocator.88", align 1
  %511 = alloca %"class.std::vector.0", align 8
  %512 = alloca [2 x %"class.std::shared_ptr"], align 8
  %513 = alloca %"class.std::allocator.2", align 1
  %514 = alloca %"class.std::allocator.2", align 1
  %515 = alloca %"class.std::vector.0", align 8
  %516 = alloca %"class.std::shared_ptr.85", align 8
  %517 = alloca %"class.std::vector.0", align 8
  %518 = alloca [1 x %"class.std::shared_ptr"], align 8
  %519 = alloca %"class.std::__cxx11::basic_string", align 8
  %520 = alloca %"class.std::allocator.88", align 1
  %521 = alloca %"class.std::vector.0", align 8
  %522 = alloca [1 x %"class.std::shared_ptr"], align 8
  %523 = alloca %"class.std::__cxx11::basic_string", align 8
  %524 = alloca %"class.std::allocator.88", align 1
  %525 = alloca %"class.std::vector.0", align 8
  %526 = alloca [2 x %"class.std::shared_ptr"], align 8
  %527 = alloca %"class.std::__cxx11::basic_string", align 8
  %528 = alloca %"class.std::allocator.88", align 1
  %529 = alloca %"class.std::vector.0", align 8
  %530 = alloca [2 x %"class.std::shared_ptr"], align 8
  %531 = alloca %"class.std::__cxx11::basic_string", align 8
  %532 = alloca %"class.std::allocator.88", align 1
  %533 = alloca %"class.std::__cxx11::basic_string", align 8
  %534 = alloca %"class.std::allocator.88", align 1
  %535 = alloca %"class.std::allocator.2", align 1
  %536 = alloca %"class.std::__cxx11::basic_string", align 8
  %537 = alloca %"class.std::allocator.88", align 1
  %538 = alloca %"class.std::vector.0", align 8
  %539 = alloca [2 x %"class.std::shared_ptr"], align 8
  %540 = alloca %"class.std::__cxx11::basic_string", align 8
  %541 = alloca %"class.std::allocator.88", align 1
  %542 = alloca %"class.std::__cxx11::basic_string", align 8
  %543 = alloca %"class.std::allocator.88", align 1
  %544 = alloca %"class.std::allocator.2", align 1
  %545 = alloca %"class.std::allocator.2", align 1
  %546 = alloca %"class.std::allocator.2", align 1
  %547 = alloca %"class.std::allocator.2", align 1
  %548 = alloca %"class.std::shared_ptr.85", align 8
  %549 = alloca %"class.UnitTest::TestDetails", align 8
  %550 = alloca %"class.UnitTest::TestDetails", align 8
  %551 = alloca %"class.std::shared_ptr.85", align 8
  %552 = alloca %"class.std::vector.0", align 8
  %553 = alloca [1 x %"class.std::shared_ptr"], align 8
  %554 = alloca %"class.std::__cxx11::basic_string", align 8
  %555 = alloca %"class.std::allocator.88", align 1
  %556 = alloca %"class.std::vector.0", align 8
  %557 = alloca [1 x %"class.std::shared_ptr"], align 8
  %558 = alloca %"class.std::__cxx11::basic_string", align 8
  %559 = alloca %"class.std::allocator.88", align 1
  %560 = alloca %"class.std::vector.0", align 8
  %561 = alloca [2 x %"class.std::shared_ptr"], align 8
  %562 = alloca %"class.std::__cxx11::basic_string", align 8
  %563 = alloca %"class.std::allocator.88", align 1
  %564 = alloca %"class.std::vector.0", align 8
  %565 = alloca [2 x %"class.std::shared_ptr"], align 8
  %566 = alloca %"class.std::__cxx11::basic_string", align 8
  %567 = alloca %"class.std::allocator.88", align 1
  %568 = alloca %"class.std::__cxx11::basic_string", align 8
  %569 = alloca %"class.std::allocator.88", align 1
  %570 = alloca %"class.std::allocator.2", align 1
  %571 = alloca %"class.std::__cxx11::basic_string", align 8
  %572 = alloca %"class.std::allocator.88", align 1
  %573 = alloca %"class.std::vector.0", align 8
  %574 = alloca [2 x %"class.std::shared_ptr"], align 8
  %575 = alloca %"class.std::__cxx11::basic_string", align 8
  %576 = alloca %"class.std::allocator.88", align 1
  %577 = alloca %"class.std::allocator.2", align 1
  %578 = alloca %"class.std::allocator.2", align 1
  %579 = alloca %"class.std::allocator.2", align 1
  %580 = alloca %"class.std::allocator.2", align 1
  %581 = alloca %"class.std::vector.8", align 8
  %582 = alloca %"class.std::vector.8", align 8
  %583 = alloca [1 x %"class.std::vector"], align 8
  %584 = alloca [1 x %"struct.std::pair"], align 8
  %585 = alloca %"class.std::shared_ptr", align 8
  %586 = alloca %"class.std::__cxx11::basic_string", align 8
  %587 = alloca %"class.std::allocator.88", align 1
  %588 = alloca %"class.std::allocator", align 1
  %589 = alloca %"class.std::allocator.10", align 1
  %590 = alloca %"class.UnitTest::TestDetails", align 8
  %591 = alloca %"class.UnitTest::TestDetails", align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #9
  %592 = tail call noalias noundef nonnull dereferenceable(33088) ptr @_Znwm(i64 noundef 33088) #10
  invoke void @_ZN14HtnTermFactoryC1Ev(ptr noundef nonnull align 8 dereferenceable(33088) %592)
          to label %593 unwind label %645

593:                                              ; preds = %1
  call void @_ZNSt10shared_ptrI14HtnTermFactoryEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull %592)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #9
  %594 = invoke noalias noundef nonnull dereferenceable(144) ptr @_Znwm(i64 noundef 144) #10
          to label %595 unwind label %647

595:                                              ; preds = %593
  invoke void @_ZN10HtnRuleSetC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %594)
          to label %596 unwind label %649

596:                                              ; preds = %595
  invoke void @_ZNSt10shared_ptrI10HtnRuleSetEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull %594)
          to label %597 unwind label %647

597:                                              ; preds = %596
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9
  %598 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #10
          to label %599 unwind label %651

599:                                              ; preds = %597
  invoke void @_ZN15HtnGoalResolverC1Ev(ptr noundef nonnull align 8 dereferenceable(64) %598)
          to label %600 unwind label %653

600:                                              ; preds = %599
  invoke void @_ZNSt10shared_ptrI15HtnGoalResolverEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull %598)
          to label %601 unwind label %651

601:                                              ; preds = %600
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #9
  call void @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #9
  %602 = 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 %7) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %603 unwind label %655

603:                                              ; preds = %601
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %6, ptr noundef nonnull align 8 dereferenceable(33088) %602, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %604 unwind label %657

604:                                              ; preds = %603
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #9
  %605 = 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 %10) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.91, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %606 unwind label %660

606:                                              ; preds = %604
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %9, ptr noundef nonnull align 8 dereferenceable(33088) %605, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %607 unwind label %662

607:                                              ; preds = %606
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #9
  %608 = 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 %13) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.97, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %609 unwind label %665

609:                                              ; preds = %607
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %12, ptr noundef nonnull align 8 dereferenceable(33088) %608, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %610 unwind label %667

610:                                              ; preds = %609
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  %611 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %612 = 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 %16) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.502, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %613 unwind label %670

613:                                              ; preds = %610
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %15, ptr noundef nonnull align 8 dereferenceable(33088) %612, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %614 unwind label %672

614:                                              ; preds = %613
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %18, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %611, ptr noundef nonnull %15, ptr noundef nonnull %18)
          to label %615 unwind label %674

615:                                              ; preds = %614
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #9
  %616 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %617 = 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 %20) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %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 nonnull @.str.505, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %618 unwind label %678

618:                                              ; preds = %615
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #9
  %619 = 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.506, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %620 unwind label %680

620:                                              ; preds = %618
  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) %619, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %621 unwind label %682

621:                                              ; preds = %620
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr nonnull %23, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %622 unwind label %684

622:                                              ; preds = %621
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %19, ptr noundef nonnull align 8 dereferenceable(33088) %617, ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull %22)
          to label %623 unwind label %686

623:                                              ; preds = %622
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %27, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %616, ptr noundef nonnull %19, ptr noundef nonnull %27)
          to label %624 unwind label %688

624:                                              ; preds = %623
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #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
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #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 nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #9
  %625 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  %626 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %627 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #9
  %628 = 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 %31) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull @.str.502, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %629 unwind label %693

629:                                              ; preds = %624
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %30, ptr noundef nonnull align 8 dereferenceable(33088) %628, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %630 unwind label %695

630:                                              ; preds = %629
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr nonnull %30, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %631 unwind label %697

631:                                              ; preds = %630
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %28, ptr noundef nonnull align 8 dereferenceable(64) %625, ptr noundef %626, ptr noundef %627, ptr noundef nonnull align 8 dereferenceable(24) %29, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %632 unwind label %699

632:                                              ; preds = %631
  %633 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %28) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #9
  call void @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  %634 = call noundef zeroext i1 @_ZN25SuiteHtnGoalResolverTests6IsTrueESt10shared_ptrISt6vectorIS1_ISt4pairIS0_I7HtnTermES4_ESaIS5_EESaIS7_EEE(ptr noundef nonnull %34)
  %635 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %634)
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #9
  br i1 %635, label %716, label %636

636:                                              ; preds = %632
  %637 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %638 unwind label %702

638:                                              ; preds = %636
  %639 = load ptr, ptr %637, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #9
  %640 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %641 unwind label %704

641:                                              ; preds = %638
  %642 = load ptr, ptr %640, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %35, ptr noundef nonnull align 8 dereferenceable(30) %642, i32 noundef 2356)
          to label %643 unwind label %704

643:                                              ; preds = %641
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %639, ptr noundef nonnull align 8 dereferenceable(30) %35, ptr noundef nonnull @.str.507)
          to label %644 unwind label %704

644:                                              ; preds = %643
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #9
  br label %716

645:                                              ; preds = %1
  %646 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %592, i64 noundef 33088) #11
  br label %2675

647:                                              ; preds = %596, %593
  %648 = landingpad { ptr, i32 }
          cleanup
  br label %2674

649:                                              ; preds = %595
  %650 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %594, i64 noundef 144) #11
  br label %2674

651:                                              ; preds = %600, %597
  %652 = landingpad { ptr, i32 }
          cleanup
  br label %2673

653:                                              ; preds = %599
  %654 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %598, i64 noundef 64) #11
  br label %2673

655:                                              ; preds = %601
  %656 = landingpad { ptr, i32 }
          cleanup
  br label %659

657:                                              ; preds = %603
  %658 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  br label %659

659:                                              ; preds = %657, %655
  %.pn = phi { ptr, i32 } [ %658, %657 ], [ %656, %655 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  br label %2672

660:                                              ; preds = %604
  %661 = landingpad { ptr, i32 }
          cleanup
  br label %664

662:                                              ; preds = %606
  %663 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  br label %664

664:                                              ; preds = %662, %660
  %.pn1345 = phi { ptr, i32 } [ %663, %662 ], [ %661, %660 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  br label %2671

665:                                              ; preds = %607
  %666 = landingpad { ptr, i32 }
          cleanup
  br label %669

667:                                              ; preds = %609
  %668 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  br label %669

669:                                              ; preds = %667, %665
  %.pn1347 = phi { ptr, i32 } [ %668, %667 ], [ %666, %665 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  br label %2670

670:                                              ; preds = %610
  %671 = landingpad { ptr, i32 }
          cleanup
  br label %677

672:                                              ; preds = %613
  %673 = landingpad { ptr, i32 }
          cleanup
  br label %676

674:                                              ; preds = %614
  %675 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  br label %676

676:                                              ; preds = %674, %672
  %.pn1349 = phi { ptr, i32 } [ %675, %674 ], [ %673, %672 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  br label %677

677:                                              ; preds = %676, %670
  %.pn1349.pn = phi { ptr, i32 } [ %.pn1349, %676 ], [ %671, %670 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #9
  br label %2669

678:                                              ; preds = %615
  %679 = landingpad { ptr, i32 }
          cleanup
  br label %692

680:                                              ; preds = %618
  %681 = landingpad { ptr, i32 }
          cleanup
  br label %691

682:                                              ; preds = %620
  %683 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1989

684:                                              ; preds = %621
  %685 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1989.loopexit

686:                                              ; preds = %622
  %687 = landingpad { ptr, i32 }
          cleanup
  br label %690

688:                                              ; preds = %623
  %689 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  br label %690

690:                                              ; preds = %688, %686
  %.pn1352 = phi { ptr, i32 } [ %689, %688 ], [ %687, %686 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  br label %.loopexit1989.loopexit

.loopexit1989.loopexit:                           ; preds = %690, %684
  %.pn1352.pn = phi { ptr, i32 } [ %.pn1352, %690 ], [ %685, %684 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #9
  br label %.loopexit1989

.loopexit1989:                                    ; preds = %.loopexit1989.loopexit, %682
  %.pn1352.pn.pn = phi { ptr, i32 } [ %683, %682 ], [ %.pn1352.pn, %.loopexit1989.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  br label %691

691:                                              ; preds = %.loopexit1989, %680
  %.pn1352.pn.pn.pn = phi { ptr, i32 } [ %.pn1352.pn.pn, %.loopexit1989 ], [ %681, %680 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  br label %692

692:                                              ; preds = %691, %678
  %.pn1352.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1352.pn.pn.pn, %691 ], [ %679, %678 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  br label %2669

693:                                              ; preds = %624
  %694 = landingpad { ptr, i32 }
          cleanup
  br label %701

695:                                              ; preds = %629
  %696 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1988

697:                                              ; preds = %630
  %698 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1988.loopexit

699:                                              ; preds = %631
  %700 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #9
  br label %.loopexit1988.loopexit

.loopexit1988.loopexit:                           ; preds = %699, %697
  %.pn1358 = phi { ptr, i32 } [ %700, %699 ], [ %698, %697 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #9
  br label %.loopexit1988

.loopexit1988:                                    ; preds = %.loopexit1988.loopexit, %695
  %.pn1358.pn = phi { ptr, i32 } [ %696, %695 ], [ %.pn1358, %.loopexit1988.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  br label %701

701:                                              ; preds = %.loopexit1988, %693
  %.pn1358.pn.pn = phi { ptr, i32 } [ %.pn1358.pn, %.loopexit1988 ], [ %694, %693 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #9
  br label %2669

702:                                              ; preds = %636
  %703 = landingpad { ptr, i32 }
          catch ptr null
  br label %706

704:                                              ; preds = %643, %641, %638
  %705 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #9
  br label %706

706:                                              ; preds = %704, %702
  %.pn1362 = phi { ptr, i32 } [ %705, %704 ], [ %703, %702 ]
  %.13 = extractvalue { ptr, i32 } %.pn1362, 0
  %707 = call ptr @__cxa_begin_catch(ptr %.13) #9
  %708 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %709 unwind label %741

709:                                              ; preds = %706
  %710 = load ptr, ptr %708, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #9
  %711 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %712 unwind label %743

712:                                              ; preds = %709
  %713 = load ptr, ptr %711, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %36, ptr noundef nonnull align 8 dereferenceable(30) %713, i32 noundef 2356)
          to label %714 unwind label %743

714:                                              ; preds = %712
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %710, ptr noundef nonnull align 8 dereferenceable(30) %36, ptr noundef nonnull @.str.508)
          to label %715 unwind label %743

715:                                              ; preds = %714
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #9
  invoke void @__cxa_end_catch()
          to label %716 unwind label %745

716:                                              ; preds = %632, %644, %715
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #9
  %717 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  %718 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %719 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %38) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #9
  %720 = 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 %40) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull @.str.505, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %721 unwind label %748

721:                                              ; preds = %716
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #9
  %722 = 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.506, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %723 unwind label %750

723:                                              ; preds = %721
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %43, ptr noundef nonnull align 8 dereferenceable(33088) %722, ptr noundef nonnull align 8 dereferenceable(32) %44)
          to label %724 unwind label %752

724:                                              ; preds = %723
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr nonnull %43, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %725 unwind label %754

725:                                              ; preds = %724
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %39, ptr noundef nonnull align 8 dereferenceable(33088) %720, ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull %42)
          to label %726 unwind label %756

726:                                              ; preds = %725
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %47) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr nonnull %39, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %727 unwind label %758

727:                                              ; preds = %726
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %37, ptr noundef nonnull align 8 dereferenceable(64) %717, ptr noundef %718, ptr noundef %719, ptr noundef nonnull align 8 dereferenceable(24) %38, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %728 unwind label %760

728:                                              ; preds = %727
  %729 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %37) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #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 %43) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %38) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #9
  call void @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  %730 = call noundef zeroext i1 @_ZN25SuiteHtnGoalResolverTests6IsTrueESt10shared_ptrISt6vectorIS1_ISt4pairIS0_I7HtnTermES4_ESaIS5_EESaIS7_EEE(ptr noundef nonnull %48)
  %731 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %730)
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #9
  br i1 %731, label %778, label %732

732:                                              ; preds = %728
  %733 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %734 unwind label %764

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

737:                                              ; preds = %734
  %738 = load ptr, ptr %736, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %49, ptr noundef nonnull align 8 dereferenceable(30) %738, i32 noundef 2358)
          to label %739 unwind label %766

739:                                              ; preds = %737
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %735, ptr noundef nonnull align 8 dereferenceable(30) %49, ptr noundef nonnull @.str.507)
          to label %740 unwind label %766

740:                                              ; preds = %739
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #9
  br label %778

741:                                              ; preds = %706
  %742 = landingpad { ptr, i32 }
          cleanup
  br label %747

743:                                              ; preds = %714, %712, %709
  %744 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #9
  br label %747

745:                                              ; preds = %1883, %1882, %1768, %1767, %1691, %1690, %1469, %1468, %1269, %1268, %1124, %1123, %992, %991, %876, %778, %777, %715
  %746 = landingpad { ptr, i32 }
          cleanup
  br label %2669

747:                                              ; preds = %743, %741
  %.pn1363 = phi { ptr, i32 } [ %744, %743 ], [ %742, %741 ]
  invoke void @__cxa_end_catch()
          to label %2669 unwind label %2676

748:                                              ; preds = %716
  %749 = landingpad { ptr, i32 }
          cleanup
  br label %763

750:                                              ; preds = %721
  %751 = landingpad { ptr, i32 }
          cleanup
  br label %762

752:                                              ; preds = %723
  %753 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1986

754:                                              ; preds = %724
  %755 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1986.loopexit

756:                                              ; preds = %725
  %757 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1987

758:                                              ; preds = %726
  %759 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1987.loopexit

760:                                              ; preds = %727
  %761 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #9
  br label %.loopexit1987.loopexit

.loopexit1987.loopexit:                           ; preds = %760, %758
  %.pn1365 = phi { ptr, i32 } [ %761, %760 ], [ %759, %758 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #9
  br label %.loopexit1987

.loopexit1987:                                    ; preds = %.loopexit1987.loopexit, %756
  %.pn1365.pn = phi { ptr, i32 } [ %757, %756 ], [ %.pn1365, %.loopexit1987.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #9
  br label %.loopexit1986.loopexit

.loopexit1986.loopexit:                           ; preds = %.loopexit1987, %754
  %.pn1365.pn.pn = phi { ptr, i32 } [ %.pn1365.pn, %.loopexit1987 ], [ %755, %754 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #9
  br label %.loopexit1986

.loopexit1986:                                    ; preds = %.loopexit1986.loopexit, %752
  %.pn1365.pn.pn.pn = phi { ptr, i32 } [ %753, %752 ], [ %.pn1365.pn.pn, %.loopexit1986.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  br label %762

762:                                              ; preds = %.loopexit1986, %750
  %.pn1365.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1365.pn.pn.pn, %.loopexit1986 ], [ %751, %750 ]
  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 %43) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  br label %763

763:                                              ; preds = %762, %748
  %.pn1365.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1365.pn.pn.pn.pn, %762 ], [ %749, %748 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %38) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #9
  br label %2669

764:                                              ; preds = %732
  %765 = landingpad { ptr, i32 }
          catch ptr null
  br label %768

766:                                              ; preds = %739, %737, %734
  %767 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #9
  br label %768

768:                                              ; preds = %766, %764
  %.pn1372 = phi { ptr, i32 } [ %767, %766 ], [ %765, %764 ]
  %.21 = extractvalue { ptr, i32 } %.pn1372, 0
  %769 = call ptr @__cxa_begin_catch(ptr %.21) #9
  %770 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %771 unwind label %819

771:                                              ; preds = %768
  %772 = load ptr, ptr %770, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #9
  %773 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %774 unwind label %821

774:                                              ; preds = %771
  %775 = load ptr, ptr %773, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %50, ptr noundef nonnull align 8 dereferenceable(30) %775, i32 noundef 2358)
          to label %776 unwind label %821

776:                                              ; preds = %774
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %772, ptr noundef nonnull align 8 dereferenceable(30) %50, ptr noundef nonnull @.str.508)
          to label %777 unwind label %821

777:                                              ; preds = %776
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #9
  invoke void @__cxa_end_catch()
          to label %778 unwind label %745

778:                                              ; preds = %728, %740, %777
  %779 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %779)
          to label %780 unwind label %745

780:                                              ; preds = %778
  %781 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %782 = 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 %52) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %53) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull @.str.509, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %783 unwind label %824

783:                                              ; preds = %780
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %55) #9
  %784 = 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.502, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %785 unwind label %826

785:                                              ; preds = %783
  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) %784, ptr noundef nonnull align 8 dereferenceable(32) %56)
          to label %786 unwind label %828

786:                                              ; preds = %785
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %58) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr nonnull %55, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %787 unwind label %830

787:                                              ; preds = %786
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %51, ptr noundef nonnull align 8 dereferenceable(33088) %782, ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull %54)
          to label %788 unwind label %832

788:                                              ; preds = %787
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %59, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %59) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %781, ptr noundef nonnull %51, ptr noundef nonnull %59)
          to label %789 unwind label %834

789:                                              ; preds = %788
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %59) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %60) #9
  %790 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  %791 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %792 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %61) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %62) #9
  %793 = 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.509, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %794 unwind label %839

794:                                              ; preds = %789
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %66) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %66, ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %67) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #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) %67)
          to label %795 unwind label %841

795:                                              ; preds = %794
  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) %793, ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull %65)
          to label %796 unwind label %843

796:                                              ; preds = %795
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %68) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %61, ptr nonnull %62, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %797 unwind label %845

797:                                              ; preds = %796
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %60, ptr noundef nonnull align 8 dereferenceable(64) %790, ptr noundef %791, ptr noundef %792, ptr noundef nonnull align 8 dereferenceable(24) %61, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %798 unwind label %847

798:                                              ; preds = %797
  %799 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %60) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %68) #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) %67) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #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 %62) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %61) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #9
  %800 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ERKS8_(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 8 dereferenceable(24) %800)
          to label %801 unwind label %851

801:                                              ; preds = %798
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %71) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %72) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %73) #9
  %802 = 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 %74) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %75) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull @.str.502, ptr noundef nonnull align 1 dereferenceable(1) %75)
          to label %803 unwind label %853

803:                                              ; preds = %801
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %73, ptr noundef nonnull align 8 dereferenceable(33088) %802, ptr noundef nonnull align 8 dereferenceable(32) %74)
          to label %804 unwind label %855

804:                                              ; preds = %803
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %73)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %76) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %71, ptr nonnull %72, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %76)
          to label %805 unwind label %857

805:                                              ; preds = %804
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %77) #9
  call void @_ZNSaISt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ESt16initializer_listIS6_ERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %70, ptr nonnull %71, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %806 unwind label %859

806:                                              ; preds = %805
  %807 = invoke noundef zeroext i1 @_Z14CheckSolutionsSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EES8_(ptr noundef nonnull %69, ptr noundef nonnull %70)
          to label %808 unwind label %861

808:                                              ; preds = %806
  %809 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %807)
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #9
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %71) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %75) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %74) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %72) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %71) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #9
  br i1 %809, label %877, label %810

810:                                              ; preds = %808
  %811 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %812 unwind label %851

812:                                              ; preds = %810
  %813 = load ptr, ptr %811, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %78) #9
  %814 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %815 unwind label %865

815:                                              ; preds = %812
  %816 = load ptr, ptr %814, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %78, ptr noundef nonnull align 8 dereferenceable(30) %816, i32 noundef 2364)
          to label %817 unwind label %865

817:                                              ; preds = %815
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %813, ptr noundef nonnull align 8 dereferenceable(30) %78, ptr noundef nonnull @.str.510)
          to label %818 unwind label %865

818:                                              ; preds = %817
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %78) #9
  br label %877

819:                                              ; preds = %768
  %820 = landingpad { ptr, i32 }
          cleanup
  br label %823

821:                                              ; preds = %776, %774, %771
  %822 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #9
  br label %823

823:                                              ; preds = %821, %819
  %.pn1373 = phi { ptr, i32 } [ %822, %821 ], [ %820, %819 ]
  invoke void @__cxa_end_catch()
          to label %2669 unwind label %2676

824:                                              ; preds = %780
  %825 = landingpad { ptr, i32 }
          cleanup
  br label %838

826:                                              ; preds = %783
  %827 = landingpad { ptr, i32 }
          cleanup
  br label %837

828:                                              ; preds = %785
  %829 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1985

830:                                              ; preds = %786
  %831 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1985.loopexit

832:                                              ; preds = %787
  %833 = landingpad { ptr, i32 }
          cleanup
  br label %836

834:                                              ; preds = %788
  %835 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %59) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #9
  br label %836

836:                                              ; preds = %834, %832
  %.pn1375 = phi { ptr, i32 } [ %835, %834 ], [ %833, %832 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #9
  br label %.loopexit1985.loopexit

.loopexit1985.loopexit:                           ; preds = %836, %830
  %.pn1375.pn = phi { ptr, i32 } [ %.pn1375, %836 ], [ %831, %830 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #9
  br label %.loopexit1985

.loopexit1985:                                    ; preds = %.loopexit1985.loopexit, %828
  %.pn1375.pn.pn = phi { ptr, i32 } [ %829, %828 ], [ %.pn1375.pn, %.loopexit1985.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #9
  br label %837

837:                                              ; preds = %.loopexit1985, %826
  %.pn1375.pn.pn.pn = phi { ptr, i32 } [ %.pn1375.pn.pn, %.loopexit1985 ], [ %827, %826 ]
  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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #9
  br label %838

838:                                              ; preds = %837, %824
  %.pn1375.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1375.pn.pn.pn, %837 ], [ %825, %824 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #9
  br label %2669

839:                                              ; preds = %789
  %840 = landingpad { ptr, i32 }
          cleanup
  br label %850

841:                                              ; preds = %794
  %842 = landingpad { ptr, i32 }
          cleanup
  br label %849

843:                                              ; preds = %795
  %844 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1984

845:                                              ; preds = %796
  %846 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1984.loopexit

847:                                              ; preds = %797
  %848 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  br label %.loopexit1984.loopexit

.loopexit1984.loopexit:                           ; preds = %847, %845
  %.pn1381 = phi { ptr, i32 } [ %848, %847 ], [ %846, %845 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %68) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #9
  br label %.loopexit1984

.loopexit1984:                                    ; preds = %.loopexit1984.loopexit, %843
  %.pn1381.pn = phi { ptr, i32 } [ %844, %843 ], [ %.pn1381, %.loopexit1984.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #9
  br label %849

849:                                              ; preds = %.loopexit1984, %841
  %.pn1381.pn.pn = phi { ptr, i32 } [ %.pn1381.pn, %.loopexit1984 ], [ %842, %841 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #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 %850

850:                                              ; preds = %849, %839
  %.pn1381.pn.pn.pn = phi { ptr, i32 } [ %.pn1381.pn.pn, %849 ], [ %840, %839 ]
  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 %62) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %61) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #9
  br label %2669

851:                                              ; preds = %810, %798
  %852 = landingpad { ptr, i32 }
          catch ptr null
  br label %867

853:                                              ; preds = %801
  %854 = landingpad { ptr, i32 }
          catch ptr null
  br label %864

855:                                              ; preds = %803
  %856 = landingpad { ptr, i32 }
          catch ptr null
  br label %863

857:                                              ; preds = %804
  %858 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit1983

859:                                              ; preds = %805
  %860 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit1983.loopexit

861:                                              ; preds = %806
  %862 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #9
  br label %.loopexit1983.loopexit

.loopexit1983.loopexit:                           ; preds = %861, %859
  %.pn1386 = phi { ptr, i32 } [ %862, %861 ], [ %860, %859 ]
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %71) #9
  br label %.loopexit1983

.loopexit1983:                                    ; preds = %.loopexit1983.loopexit, %857
  %.pn1386.pn = phi { ptr, i32 } [ %858, %857 ], [ %.pn1386, %.loopexit1983.loopexit ]
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #9
  br label %863

863:                                              ; preds = %.loopexit1983, %855
  %.pn1386.pn.pn = phi { ptr, i32 } [ %.pn1386.pn, %.loopexit1983 ], [ %856, %855 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  br label %864

864:                                              ; preds = %863, %853
  %.pn1386.pn.pn.pn = phi { ptr, i32 } [ %.pn1386.pn.pn, %863 ], [ %854, %853 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %75) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %74) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %72) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %71) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #9
  br label %867

865:                                              ; preds = %817, %815, %812
  %866 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %78) #9
  br label %867

867:                                              ; preds = %865, %864, %851
  %.pn1387 = phi { ptr, i32 } [ %866, %865 ], [ %852, %851 ], [ %.pn1386.pn.pn.pn, %864 ]
  %.36 = extractvalue { ptr, i32 } %.pn1387, 0
  %868 = call ptr @__cxa_begin_catch(ptr %.36) #9
  %869 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %870 unwind label %922

870:                                              ; preds = %867
  %871 = load ptr, ptr %869, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %79) #9
  %872 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %873 unwind label %924

873:                                              ; preds = %870
  %874 = load ptr, ptr %872, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %79, ptr noundef nonnull align 8 dereferenceable(30) %874, i32 noundef 2364)
          to label %875 unwind label %924

875:                                              ; preds = %873
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %871, ptr noundef nonnull align 8 dereferenceable(30) %79, ptr noundef nonnull @.str.511)
          to label %876 unwind label %924

876:                                              ; preds = %875
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #9
  invoke void @__cxa_end_catch()
          to label %877 unwind label %745

877:                                              ; preds = %808, %818, %876
  %878 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %879 = 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 %81) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %82) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef nonnull @.str.509, ptr noundef nonnull align 1 dereferenceable(1) %82)
          to label %880 unwind label %927

880:                                              ; preds = %877
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %84) #9
  %881 = 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.512, ptr noundef nonnull align 1 dereferenceable(1) %86)
          to label %882 unwind label %929

882:                                              ; preds = %880
  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) %881, ptr noundef nonnull align 8 dereferenceable(32) %85)
          to label %883 unwind label %931

883:                                              ; preds = %882
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %87) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %83, ptr nonnull %84, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %87)
          to label %884 unwind label %933

884:                                              ; preds = %883
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %80, ptr noundef nonnull align 8 dereferenceable(33088) %879, ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef nonnull %83)
          to label %885 unwind label %935

885:                                              ; preds = %884
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %88, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %88) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %878, ptr noundef nonnull %80, ptr noundef nonnull %88)
          to label %886 unwind label %937

886:                                              ; preds = %885
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %88) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %87) #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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %82) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %89) #9
  %887 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  %888 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %889 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %90) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %91) #9
  %890 = 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.509, ptr noundef nonnull align 1 dereferenceable(1) %93)
          to label %891 unwind label %942

891:                                              ; preds = %886
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %95) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %95, ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %96) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %94, ptr nonnull %95, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %96)
          to label %892 unwind label %944

892:                                              ; preds = %891
  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) %890, ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull %94)
          to label %893 unwind label %946

893:                                              ; preds = %892
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %97) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %90, ptr nonnull %91, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %97)
          to label %894 unwind label %948

894:                                              ; preds = %893
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %89, ptr noundef nonnull align 8 dereferenceable(64) %887, ptr noundef %888, ptr noundef %889, ptr noundef nonnull align 8 dereferenceable(24) %90, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %895 unwind label %950

895:                                              ; preds = %894
  %896 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %89) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %89) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #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) %96) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #9
  call void @llvm.lifetime.end.p0(i64 16, 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 %91) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %90) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %89) #9
  %897 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ERKS8_(ptr noundef nonnull align 8 dereferenceable(24) %98, ptr noundef nonnull align 8 dereferenceable(24) %897)
          to label %898 unwind label %954

898:                                              ; preds = %895
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %100) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %101) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %102) #9
  %899 = 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 %103) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %104) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %103, ptr noundef nonnull @.str.502, ptr noundef nonnull align 1 dereferenceable(1) %104)
          to label %900 unwind label %.thread

900:                                              ; preds = %898
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %102, ptr noundef nonnull align 8 dereferenceable(33088) %899, ptr noundef nonnull align 8 dereferenceable(32) %103)
          to label %901 unwind label %957

901:                                              ; preds = %900
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %101, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %102)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %105) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %100, ptr nonnull %101, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %105)
          to label %902 unwind label %959

902:                                              ; preds = %901
  %903 = getelementptr inbounds i8, ptr %100, i64 24
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %106) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %107) #9
  %904 = 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.512, ptr noundef nonnull align 1 dereferenceable(1) %109)
          to label %905 unwind label %961

905:                                              ; preds = %902
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %107, ptr noundef nonnull align 8 dereferenceable(33088) %904, ptr noundef nonnull align 8 dereferenceable(32) %108)
          to label %906 unwind label %963

906:                                              ; preds = %905
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %107)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %110) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %903, ptr nonnull %106, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %110)
          to label %907 unwind label %965

907:                                              ; preds = %906
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %111) #9
  call void @_ZNSaISt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %111) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ESt16initializer_listIS6_ERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %99, ptr nonnull %100, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %111)
          to label %908 unwind label %967

908:                                              ; preds = %907
  %909 = invoke noundef zeroext i1 @_Z14CheckSolutionsSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EES8_(ptr noundef nonnull %98, ptr noundef nonnull %99)
          to label %910 unwind label %969

910:                                              ; preds = %908
  %911 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %909)
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %99) #9
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %111) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %111) #9
  %912 = getelementptr inbounds i8, ptr %100, i64 24
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %912) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %100) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %110) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %107) #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 @llvm.lifetime.end.p0(i64 16, ptr nonnull %107) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %106) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %105) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %102) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %104) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %103) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %102) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %100) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #9
  br i1 %911, label %992, label %913

913:                                              ; preds = %910
  %914 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %915 unwind label %954

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

918:                                              ; preds = %915
  %919 = load ptr, ptr %917, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %112, ptr noundef nonnull align 8 dereferenceable(30) %919, i32 noundef 2372)
          to label %920 unwind label %980

920:                                              ; preds = %918
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %916, ptr noundef nonnull align 8 dereferenceable(30) %112, ptr noundef nonnull @.str.513)
          to label %921 unwind label %980

921:                                              ; preds = %920
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %112) #9
  br label %992

922:                                              ; preds = %867
  %923 = landingpad { ptr, i32 }
          cleanup
  br label %926

924:                                              ; preds = %875, %873, %870
  %925 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #9
  br label %926

926:                                              ; preds = %924, %922
  %.pn1388 = phi { ptr, i32 } [ %925, %924 ], [ %923, %922 ]
  invoke void @__cxa_end_catch()
          to label %2669 unwind label %2676

927:                                              ; preds = %877
  %928 = landingpad { ptr, i32 }
          cleanup
  br label %941

929:                                              ; preds = %880
  %930 = landingpad { ptr, i32 }
          cleanup
  br label %940

931:                                              ; preds = %882
  %932 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1982

933:                                              ; preds = %883
  %934 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1982.loopexit

935:                                              ; preds = %884
  %936 = landingpad { ptr, i32 }
          cleanup
  br label %939

937:                                              ; preds = %885
  %938 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %88) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #9
  br label %939

939:                                              ; preds = %937, %935
  %.pn1390 = phi { ptr, i32 } [ %938, %937 ], [ %936, %935 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #9
  br label %.loopexit1982.loopexit

.loopexit1982.loopexit:                           ; preds = %939, %933
  %.pn1390.pn = phi { ptr, i32 } [ %.pn1390, %939 ], [ %934, %933 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %87) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #9
  br label %.loopexit1982

.loopexit1982:                                    ; preds = %.loopexit1982.loopexit, %931
  %.pn1390.pn.pn = phi { ptr, i32 } [ %932, %931 ], [ %.pn1390.pn, %.loopexit1982.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #9
  br label %940

940:                                              ; preds = %.loopexit1982, %929
  %.pn1390.pn.pn.pn = phi { ptr, i32 } [ %.pn1390.pn.pn, %.loopexit1982 ], [ %930, %929 ]
  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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #9
  br label %941

941:                                              ; preds = %940, %927
  %.pn1390.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1390.pn.pn.pn, %940 ], [ %928, %927 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %82) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #9
  br label %2669

942:                                              ; preds = %886
  %943 = landingpad { ptr, i32 }
          cleanup
  br label %953

944:                                              ; preds = %891
  %945 = landingpad { ptr, i32 }
          cleanup
  br label %952

946:                                              ; preds = %892
  %947 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1981

948:                                              ; preds = %893
  %949 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1981.loopexit

950:                                              ; preds = %894
  %951 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #9
  br label %.loopexit1981.loopexit

.loopexit1981.loopexit:                           ; preds = %950, %948
  %.pn1396 = phi { ptr, i32 } [ %951, %950 ], [ %949, %948 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #9
  br label %.loopexit1981

.loopexit1981:                                    ; preds = %.loopexit1981.loopexit, %946
  %.pn1396.pn = phi { ptr, i32 } [ %947, %946 ], [ %.pn1396, %.loopexit1981.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %94) #9
  br label %952

952:                                              ; preds = %.loopexit1981, %944
  %.pn1396.pn.pn = phi { ptr, i32 } [ %.pn1396.pn, %.loopexit1981 ], [ %945, %944 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %95) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #9
  br label %953

953:                                              ; preds = %952, %942
  %.pn1396.pn.pn.pn = phi { ptr, i32 } [ %.pn1396.pn.pn, %952 ], [ %943, %942 ]
  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 %91) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %90) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %89) #9
  br label %2669

954:                                              ; preds = %913, %895
  %955 = landingpad { ptr, i32 }
          catch ptr null
  br label %982

.thread:                                          ; preds = %898
  %956 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %104) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %103) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %102) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #9
  br label %.loopexit1979

957:                                              ; preds = %900
  %958 = landingpad { ptr, i32 }
          catch ptr null
  br label %975

959:                                              ; preds = %901
  %960 = landingpad { ptr, i32 }
          catch ptr null
  br label %974

961:                                              ; preds = %902
  %962 = landingpad { ptr, i32 }
          catch ptr null
  br label %973

963:                                              ; preds = %905
  %964 = landingpad { ptr, i32 }
          catch ptr null
  br label %972

965:                                              ; preds = %906
  %966 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit1980

967:                                              ; preds = %907
  %968 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit1980.loopexit

969:                                              ; preds = %908
  %970 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %99) #9
  br label %.loopexit1980.loopexit

.loopexit1980.loopexit:                           ; preds = %969, %967
  %.pn1401 = phi { ptr, i32 } [ %970, %969 ], [ %968, %967 ]
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %111) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %111) #9
  %971 = getelementptr inbounds i8, ptr %100, i64 24
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %971) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %100) #9
  br label %.loopexit1980

.loopexit1980:                                    ; preds = %.loopexit1980.loopexit, %965
  %.0948 = phi i1 [ true, %965 ], [ false, %.loopexit1980.loopexit ]
  %.pn1401.pn = phi { ptr, i32 } [ %966, %965 ], [ %.pn1401, %.loopexit1980.loopexit ]
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %110) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %107) #9
  br label %972

972:                                              ; preds = %.loopexit1980, %963
  %.1949 = phi i1 [ %.0948, %.loopexit1980 ], [ true, %963 ]
  %.pn1401.pn.pn = phi { ptr, i32 } [ %.pn1401.pn, %.loopexit1980 ], [ %964, %963 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #9
  br label %973

973:                                              ; preds = %972, %961
  %.2950 = phi i1 [ %.1949, %972 ], [ true, %961 ]
  %.pn1401.pn.pn.pn = phi { ptr, i32 } [ %.pn1401.pn.pn, %972 ], [ %962, %961 ]
  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 @llvm.lifetime.end.p0(i64 16, ptr nonnull %107) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %106) #9
  br label %974

974:                                              ; preds = %973, %959
  %.3951 = phi i1 [ %.2950, %973 ], [ true, %959 ]
  %.0941 = phi ptr [ %903, %973 ], [ %100, %959 ]
  %.pn1401.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1401.pn.pn.pn, %973 ], [ %960, %959 ]
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %105) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %102) #9
  br label %975

975:                                              ; preds = %957, %974
  %.4952 = phi i1 [ %.3951, %974 ], [ true, %957 ]
  %.1942 = phi ptr [ %.0941, %974 ], [ %100, %957 ]
  %.pn1401.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1401.pn.pn.pn.pn, %974 ], [ %958, %957 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %104) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %103) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %102) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #9
  %976 = icmp ne ptr %100, %.1942
  %or.cond37.not = select i1 %.4952, i1 %976, i1 false
  br i1 %or.cond37.not, label %.preheader1978, label %.loopexit1979

.preheader1978:                                   ; preds = %975, %.preheader1978
  %977 = phi ptr [ %978, %.preheader1978 ], [ %.1942, %975 ]
  %978 = getelementptr inbounds i8, ptr %977, i64 -24
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %978) #9
  %979 = icmp eq ptr %978, %100
  br i1 %979, label %.loopexit1979, label %.preheader1978

.loopexit1979:                                    ; preds = %.preheader1978, %.thread, %975
  %.pn1401.pn.pn.pn.pn.pn.pn1724 = phi { ptr, i32 } [ %956, %.thread ], [ %.pn1401.pn.pn.pn.pn.pn, %975 ], [ %.pn1401.pn.pn.pn.pn.pn, %.preheader1978 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %100) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #9
  br label %982

980:                                              ; preds = %920, %918, %915
  %981 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %112) #9
  br label %982

982:                                              ; preds = %980, %.loopexit1979, %954
  %.pn1402 = phi { ptr, i32 } [ %981, %980 ], [ %955, %954 ], [ %.pn1401.pn.pn.pn.pn.pn.pn1724, %.loopexit1979 ]
  %.54 = extractvalue { ptr, i32 } %.pn1402, 0
  %983 = call ptr @__cxa_begin_catch(ptr %.54) #9
  %984 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %985 unwind label %1045

985:                                              ; preds = %982
  %986 = load ptr, ptr %984, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %113) #9
  %987 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %988 unwind label %1047

988:                                              ; preds = %985
  %989 = load ptr, ptr %987, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %113, ptr noundef nonnull align 8 dereferenceable(30) %989, i32 noundef 2372)
          to label %990 unwind label %1047

990:                                              ; preds = %988
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %986, ptr noundef nonnull align 8 dereferenceable(30) %113, ptr noundef nonnull @.str.514)
          to label %991 unwind label %1047

991:                                              ; preds = %990
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %113) #9
  invoke void @__cxa_end_catch()
          to label %992 unwind label %745

992:                                              ; preds = %910, %921, %991
  %993 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %993)
          to label %994 unwind label %745

994:                                              ; preds = %992
  %995 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %996 = 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 %115) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %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 nonnull @.str.515, ptr noundef nonnull align 1 dereferenceable(1) %116)
          to label %997 unwind label %1050

997:                                              ; preds = %994
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %118) #9
  %998 = 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 %119) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %120) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %120) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %119, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %120)
          to label %999 unwind label %1052

999:                                              ; preds = %997
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %118, ptr noundef nonnull align 8 dereferenceable(33088) %998, ptr noundef nonnull align 8 dereferenceable(32) %119)
          to label %1000 unwind label %1054

1000:                                             ; preds = %999
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %121) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %121) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %117, ptr nonnull %118, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %121)
          to label %1001 unwind label %1056

1001:                                             ; preds = %1000
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %114, ptr noundef nonnull align 8 dereferenceable(33088) %996, ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef nonnull %117)
          to label %1002 unwind label %1058

1002:                                             ; preds = %1001
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %123) #9
  %1003 = 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 %124) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %125) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %125) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %124, ptr noundef nonnull @.str.516, ptr noundef nonnull align 1 dereferenceable(1) %125)
          to label %1004 unwind label %1060

1004:                                             ; preds = %1002
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %127) #9
  %1005 = 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 %128) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %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 nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %129)
          to label %1006 unwind label %1062

1006:                                             ; preds = %1004
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %127, ptr noundef nonnull align 8 dereferenceable(33088) %1005, ptr noundef nonnull align 8 dereferenceable(32) %128)
          to label %1007 unwind label %1064

1007:                                             ; preds = %1006
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %130) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %126, ptr nonnull %127, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %130)
          to label %1008 unwind label %1066

1008:                                             ; preds = %1007
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %123, ptr noundef nonnull align 8 dereferenceable(33088) %1003, ptr noundef nonnull align 8 dereferenceable(32) %124, ptr noundef nonnull %126)
          to label %1009 unwind label %1068

1009:                                             ; preds = %1008
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %131) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %122, ptr nonnull %123, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %131)
          to label %1010 unwind label %1070

1010:                                             ; preds = %1009
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %995, ptr noundef nonnull %114, ptr noundef nonnull %122)
          to label %1011 unwind label %1072

1011:                                             ; preds = %1010
  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 nonnull %131) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %123) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %126) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %130) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %127) #9
  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 nonnull %129) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %128) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %127) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %125) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %125) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %124) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %123) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %117) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %121) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %121) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %118) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %120) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %120) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %119) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %118) #9
  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 nonnull %116) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %115) #9
  %1012 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %1013 = 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.516, ptr noundef nonnull align 1 dereferenceable(1) %134)
          to label %1014 unwind label %1079

1014:                                             ; preds = %1011
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %136) #9
  %1015 = 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 %137) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %138) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %137, ptr noundef nonnull @.str.517, ptr noundef nonnull align 1 dereferenceable(1) %138)
          to label %1016 unwind label %1081

1016:                                             ; preds = %1014
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %136, ptr noundef nonnull align 8 dereferenceable(33088) %1015, ptr noundef nonnull align 8 dereferenceable(32) %137)
          to label %1017 unwind label %1083

1017:                                             ; preds = %1016
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %139) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %139) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %135, ptr nonnull %136, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %139)
          to label %1018 unwind label %1085

1018:                                             ; preds = %1017
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %132, ptr noundef nonnull align 8 dereferenceable(33088) %1013, ptr noundef nonnull align 8 dereferenceable(32) %133, ptr noundef nonnull %135)
          to label %1019 unwind label %1087

1019:                                             ; preds = %1018
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %140, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %140) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %1012, ptr noundef nonnull %132, ptr noundef nonnull %140)
          to label %1020 unwind label %1089

1020:                                             ; preds = %1019
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %140) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %132) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %135) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %139) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %139) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %136) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %138) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %137) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %136) #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 @llvm.lifetime.start.p0(i64 16, ptr nonnull %141) #9
  %1021 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  %1022 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %1023 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %142) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %143) #9
  %1024 = 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 %144) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %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 nonnull @.str.515, ptr noundef nonnull align 1 dereferenceable(1) %145)
          to label %1025 unwind label %1094

1025:                                             ; preds = %1020
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %147) #9
  %1026 = 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 %148) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %149) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %149) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %148, ptr noundef nonnull @.str.517, ptr noundef nonnull align 1 dereferenceable(1) %149)
          to label %1027 unwind label %1096

1027:                                             ; preds = %1025
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %147, ptr noundef nonnull align 8 dereferenceable(33088) %1026, ptr noundef nonnull align 8 dereferenceable(32) %148)
          to label %1028 unwind label %1098

1028:                                             ; preds = %1027
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %150) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %150) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %146, ptr nonnull %147, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %150)
          to label %1029 unwind label %1100

1029:                                             ; preds = %1028
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %143, ptr noundef nonnull align 8 dereferenceable(33088) %1024, ptr noundef nonnull align 8 dereferenceable(32) %144, ptr noundef nonnull %146)
          to label %1030 unwind label %1102

1030:                                             ; preds = %1029
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %151) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %151) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %142, ptr nonnull %143, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %151)
          to label %1031 unwind label %1104

1031:                                             ; preds = %1030
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %141, ptr noundef nonnull align 8 dereferenceable(64) %1021, ptr noundef %1022, ptr noundef %1023, ptr noundef nonnull align 8 dereferenceable(24) %142, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %1032 unwind label %1106

1032:                                             ; preds = %1031
  %1033 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %141) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %141) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %142) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %151) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %151) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %143) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %146) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %150) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %150) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %147) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %148) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %149) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %149) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %148) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %147) #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 nonnull %145) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %144) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %143) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %142) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %141) #9
  call void @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %152, ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  %1034 = call noundef zeroext i1 @_ZN25SuiteHtnGoalResolverTests6IsTrueESt10shared_ptrISt6vectorIS1_ISt4pairIS0_I7HtnTermES4_ESaIS5_EESaIS7_EEE(ptr noundef nonnull %152)
  %1035 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1034)
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %152) #9
  br i1 %1035, label %1124, label %1036

1036:                                             ; preds = %1032
  %1037 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1038 unwind label %1110

1038:                                             ; preds = %1036
  %1039 = load ptr, ptr %1037, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %153) #9
  %1040 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1041 unwind label %1112

1041:                                             ; preds = %1038
  %1042 = load ptr, ptr %1040, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %153, ptr noundef nonnull align 8 dereferenceable(30) %1042, i32 noundef 2382)
          to label %1043 unwind label %1112

1043:                                             ; preds = %1041
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1039, ptr noundef nonnull align 8 dereferenceable(30) %153, ptr noundef nonnull @.str.507)
          to label %1044 unwind label %1112

1044:                                             ; preds = %1043
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %153) #9
  br label %1124

1045:                                             ; preds = %982
  %1046 = landingpad { ptr, i32 }
          cleanup
  br label %1049

1047:                                             ; preds = %990, %988, %985
  %1048 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %113) #9
  br label %1049

1049:                                             ; preds = %1047, %1045
  %.pn1403 = phi { ptr, i32 } [ %1048, %1047 ], [ %1046, %1045 ]
  invoke void @__cxa_end_catch()
          to label %2669 unwind label %2676

1050:                                             ; preds = %994
  %1051 = landingpad { ptr, i32 }
          cleanup
  br label %1078

1052:                                             ; preds = %997
  %1053 = landingpad { ptr, i32 }
          cleanup
  br label %1077

1054:                                             ; preds = %999
  %1055 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1975

1056:                                             ; preds = %1000
  %1057 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1975.loopexit

1058:                                             ; preds = %1001
  %1059 = landingpad { ptr, i32 }
          cleanup
  br label %1076

1060:                                             ; preds = %1002
  %1061 = landingpad { ptr, i32 }
          cleanup
  br label %1075

1062:                                             ; preds = %1004
  %1063 = landingpad { ptr, i32 }
          cleanup
  br label %1074

1064:                                             ; preds = %1006
  %1065 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1976

1066:                                             ; preds = %1007
  %1067 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1976.loopexit

1068:                                             ; preds = %1008
  %1069 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1977

1070:                                             ; preds = %1009
  %1071 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1977.loopexit

1072:                                             ; preds = %1010
  %1073 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %122) #9
  br label %.loopexit1977.loopexit

.loopexit1977.loopexit:                           ; preds = %1072, %1070
  %.pn1405 = phi { ptr, i32 } [ %1073, %1072 ], [ %1071, %1070 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %131) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %123) #9
  br label %.loopexit1977

.loopexit1977:                                    ; preds = %.loopexit1977.loopexit, %1068
  %.pn1405.pn = phi { ptr, i32 } [ %1069, %1068 ], [ %.pn1405, %.loopexit1977.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %126) #9
  br label %.loopexit1976.loopexit

.loopexit1976.loopexit:                           ; preds = %.loopexit1977, %1066
  %.pn1405.pn.pn = phi { ptr, i32 } [ %.pn1405.pn, %.loopexit1977 ], [ %1067, %1066 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %130) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %127) #9
  br label %.loopexit1976

.loopexit1976:                                    ; preds = %.loopexit1976.loopexit, %1064
  %.pn1405.pn.pn.pn = phi { ptr, i32 } [ %1065, %1064 ], [ %.pn1405.pn.pn, %.loopexit1976.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #9
  br label %1074

1074:                                             ; preds = %.loopexit1976, %1062
  %.pn1405.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1405.pn.pn.pn, %.loopexit1976 ], [ %1063, %1062 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %129) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %129) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %128) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %127) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #9
  br label %1075

1075:                                             ; preds = %1074, %1060
  %.pn1405.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1405.pn.pn.pn.pn, %1074 ], [ %1061, %1060 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %125) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %125) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %124) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %123) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114) #9
  br label %1076

1076:                                             ; preds = %1075, %1058
  %.pn1405.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1405.pn.pn.pn.pn.pn, %1075 ], [ %1059, %1058 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %117) #9
  br label %.loopexit1975.loopexit

.loopexit1975.loopexit:                           ; preds = %1076, %1056
  %.pn1405.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1405.pn.pn.pn.pn.pn.pn, %1076 ], [ %1057, %1056 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %121) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %121) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %118) #9
  br label %.loopexit1975

.loopexit1975:                                    ; preds = %.loopexit1975.loopexit, %1054
  %.pn1405.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1055, %1054 ], [ %.pn1405.pn.pn.pn.pn.pn.pn.pn, %.loopexit1975.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #9
  br label %1077

1077:                                             ; preds = %.loopexit1975, %1052
  %.pn1405.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1405.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit1975 ], [ %1053, %1052 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %120) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %120) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %119) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %118) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #9
  br label %1078

1078:                                             ; preds = %1077, %1050
  %.pn1405.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1405.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1077 ], [ %1051, %1050 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %116) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %115) #9
  br label %2669

1079:                                             ; preds = %1011
  %1080 = landingpad { ptr, i32 }
          cleanup
  br label %1093

1081:                                             ; preds = %1014
  %1082 = landingpad { ptr, i32 }
          cleanup
  br label %1092

1083:                                             ; preds = %1016
  %1084 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1974

1085:                                             ; preds = %1017
  %1086 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1974.loopexit

1087:                                             ; preds = %1018
  %1088 = landingpad { ptr, i32 }
          cleanup
  br label %1091

1089:                                             ; preds = %1019
  %1090 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %140) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %132) #9
  br label %1091

1091:                                             ; preds = %1089, %1087
  %.pn1417 = phi { ptr, i32 } [ %1090, %1089 ], [ %1088, %1087 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %135) #9
  br label %.loopexit1974.loopexit

.loopexit1974.loopexit:                           ; preds = %1091, %1085
  %.pn1417.pn = phi { ptr, i32 } [ %.pn1417, %1091 ], [ %1086, %1085 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %139) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %139) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %136) #9
  br label %.loopexit1974

.loopexit1974:                                    ; preds = %.loopexit1974.loopexit, %1083
  %.pn1417.pn.pn = phi { ptr, i32 } [ %1084, %1083 ], [ %.pn1417.pn, %.loopexit1974.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #9
  br label %1092

1092:                                             ; preds = %.loopexit1974, %1081
  %.pn1417.pn.pn.pn = phi { ptr, i32 } [ %.pn1417.pn.pn, %.loopexit1974 ], [ %1082, %1081 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %138) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %137) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %136) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #9
  br label %1093

1093:                                             ; preds = %1092, %1079
  %.pn1417.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1417.pn.pn.pn, %1092 ], [ %1080, %1079 ]
  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 %2669

1094:                                             ; preds = %1020
  %1095 = landingpad { ptr, i32 }
          cleanup
  br label %1109

1096:                                             ; preds = %1025
  %1097 = landingpad { ptr, i32 }
          cleanup
  br label %1108

1098:                                             ; preds = %1027
  %1099 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1972

1100:                                             ; preds = %1028
  %1101 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1972.loopexit

1102:                                             ; preds = %1029
  %1103 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1973

1104:                                             ; preds = %1030
  %1105 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1973.loopexit

1106:                                             ; preds = %1031
  %1107 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %142) #9
  br label %.loopexit1973.loopexit

.loopexit1973.loopexit:                           ; preds = %1106, %1104
  %.pn1423 = phi { ptr, i32 } [ %1107, %1106 ], [ %1105, %1104 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %151) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %151) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %143) #9
  br label %.loopexit1973

.loopexit1973:                                    ; preds = %.loopexit1973.loopexit, %1102
  %.pn1423.pn = phi { ptr, i32 } [ %1103, %1102 ], [ %.pn1423, %.loopexit1973.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %146) #9
  br label %.loopexit1972.loopexit

.loopexit1972.loopexit:                           ; preds = %.loopexit1973, %1100
  %.pn1423.pn.pn = phi { ptr, i32 } [ %.pn1423.pn, %.loopexit1973 ], [ %1101, %1100 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %150) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %150) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %147) #9
  br label %.loopexit1972

.loopexit1972:                                    ; preds = %.loopexit1972.loopexit, %1098
  %.pn1423.pn.pn.pn = phi { ptr, i32 } [ %1099, %1098 ], [ %.pn1423.pn.pn, %.loopexit1972.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %148) #9
  br label %1108

1108:                                             ; preds = %.loopexit1972, %1096
  %.pn1423.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1423.pn.pn.pn, %.loopexit1972 ], [ %1097, %1096 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %149) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %149) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %148) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %147) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #9
  br label %1109

1109:                                             ; preds = %1108, %1094
  %.pn1423.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1423.pn.pn.pn.pn, %1108 ], [ %1095, %1094 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %145) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %144) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %143) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %142) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %141) #9
  br label %2669

1110:                                             ; preds = %1036
  %1111 = landingpad { ptr, i32 }
          catch ptr null
  br label %1114

1112:                                             ; preds = %1043, %1041, %1038
  %1113 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %153) #9
  br label %1114

1114:                                             ; preds = %1112, %1110
  %.pn1430 = phi { ptr, i32 } [ %1113, %1112 ], [ %1111, %1110 ]
  %.78 = extractvalue { ptr, i32 } %.pn1430, 0
  %1115 = call ptr @__cxa_begin_catch(ptr %.78) #9
  %1116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1117 unwind label %1182

1117:                                             ; preds = %1114
  %1118 = load ptr, ptr %1116, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %154) #9
  %1119 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1120 unwind label %1184

1120:                                             ; preds = %1117
  %1121 = load ptr, ptr %1119, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %154, ptr noundef nonnull align 8 dereferenceable(30) %1121, i32 noundef 2382)
          to label %1122 unwind label %1184

1122:                                             ; preds = %1120
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1118, ptr noundef nonnull align 8 dereferenceable(30) %154, ptr noundef nonnull @.str.508)
          to label %1123 unwind label %1184

1123:                                             ; preds = %1122
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %154) #9
  invoke void @__cxa_end_catch()
          to label %1124 unwind label %745

1124:                                             ; preds = %1032, %1044, %1123
  %1125 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %1125)
          to label %1126 unwind label %745

1126:                                             ; preds = %1124
  %1127 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %1128 = 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.515, ptr noundef nonnull align 1 dereferenceable(1) %157)
          to label %1129 unwind label %1187

1129:                                             ; preds = %1126
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %159) #9
  %1130 = 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.83, ptr noundef nonnull align 1 dereferenceable(1) %161)
          to label %1131 unwind label %1189

1131:                                             ; preds = %1129
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %159, ptr noundef nonnull align 8 dereferenceable(33088) %1130, ptr noundef nonnull align 8 dereferenceable(32) %160)
          to label %1132 unwind label %1191

1132:                                             ; preds = %1131
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %162) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %162) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %158, ptr nonnull %159, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %162)
          to label %1133 unwind label %1193

1133:                                             ; preds = %1132
  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) %1128, ptr noundef nonnull align 8 dereferenceable(32) %156, ptr noundef nonnull %158)
          to label %1134 unwind label %1195

1134:                                             ; preds = %1133
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %164) #9
  %1135 = 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 %165) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %166) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %166) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %165, ptr noundef nonnull @.str.516, ptr noundef nonnull align 1 dereferenceable(1) %166)
          to label %1136 unwind label %1197

1136:                                             ; preds = %1134
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %168) #9
  %1137 = 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 %169) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %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 nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %170)
          to label %1138 unwind label %1199

1138:                                             ; preds = %1136
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %168, ptr noundef nonnull align 8 dereferenceable(33088) %1137, ptr noundef nonnull align 8 dereferenceable(32) %169)
          to label %1139 unwind label %1201

1139:                                             ; preds = %1138
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %171) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %171) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %167, ptr nonnull %168, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %171)
          to label %1140 unwind label %1203

1140:                                             ; preds = %1139
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %164, ptr noundef nonnull align 8 dereferenceable(33088) %1135, ptr noundef nonnull align 8 dereferenceable(32) %165, ptr noundef nonnull %167)
          to label %1141 unwind label %1205

1141:                                             ; preds = %1140
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %172) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %172) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %163, ptr nonnull %164, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %172)
          to label %1142 unwind label %1207

1142:                                             ; preds = %1141
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %1127, ptr noundef nonnull %155, ptr noundef nonnull %163)
          to label %1143 unwind label %1209

1143:                                             ; preds = %1142
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %163) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %172) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %172) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %164) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %167) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %171) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %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 nonnull %170) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %169) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %168) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %165) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %166) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %166) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %165) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %164) #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) %162) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %162) #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) %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 16, 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
  %1144 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %1145 = 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 %174) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %175) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %175) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %174, ptr noundef nonnull @.str.516, ptr noundef nonnull align 1 dereferenceable(1) %175)
          to label %1146 unwind label %1216

1146:                                             ; preds = %1143
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %177) #9
  %1147 = 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 %178) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %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 nonnull @.str.517, ptr noundef nonnull align 1 dereferenceable(1) %179)
          to label %1148 unwind label %1218

1148:                                             ; preds = %1146
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %177, ptr noundef nonnull align 8 dereferenceable(33088) %1147, ptr noundef nonnull align 8 dereferenceable(32) %178)
          to label %1149 unwind label %1220

1149:                                             ; preds = %1148
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %180) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %180) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %176, ptr nonnull %177, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %180)
          to label %1150 unwind label %1222

1150:                                             ; preds = %1149
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %173, ptr noundef nonnull align 8 dereferenceable(33088) %1145, ptr noundef nonnull align 8 dereferenceable(32) %174, ptr noundef nonnull %176)
          to label %1151 unwind label %1224

1151:                                             ; preds = %1150
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %181, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %181) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %1144, ptr noundef nonnull %173, ptr noundef nonnull %181)
          to label %1152 unwind label %1226

1152:                                             ; preds = %1151
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %181) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %173) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %176) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %180) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %180) #9
  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 nonnull %179) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %178) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %177) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %175) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %175) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %174) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %182) #9
  %1153 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  %1154 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %1155 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %183) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %184) #9
  %1156 = 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.515, ptr noundef nonnull align 1 dereferenceable(1) %186)
          to label %1157 unwind label %1231

1157:                                             ; preds = %1152
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %188) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %188, ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %189) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %189) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %187, ptr nonnull %188, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %189)
          to label %1158 unwind label %1233

1158:                                             ; preds = %1157
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %184, ptr noundef nonnull align 8 dereferenceable(33088) %1156, ptr noundef nonnull align 8 dereferenceable(32) %185, ptr noundef nonnull %187)
          to label %1159 unwind label %1235

1159:                                             ; preds = %1158
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %190) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %190) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %183, ptr nonnull %184, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %190)
          to label %1160 unwind label %1237

1160:                                             ; preds = %1159
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %182, ptr noundef nonnull align 8 dereferenceable(64) %1153, ptr noundef %1154, ptr noundef %1155, ptr noundef nonnull align 8 dereferenceable(24) %183, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %1161 unwind label %1239

1161:                                             ; preds = %1160
  %1162 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %182) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %182) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %183) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %190) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %190) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %184) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %187) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %189) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %189) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %188) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %188) #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 @llvm.lifetime.end.p0(i64 24, ptr nonnull %183) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %182) #9
  %1163 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ERKS8_(ptr noundef nonnull align 8 dereferenceable(24) %191, ptr noundef nonnull align 8 dereferenceable(24) %1163)
          to label %1164 unwind label %1243

1164:                                             ; preds = %1161
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %193) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %194) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %195) #9
  %1165 = 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 %196) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %197) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %197) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %196, ptr noundef nonnull @.str.517, ptr noundef nonnull align 1 dereferenceable(1) %197)
          to label %1166 unwind label %1245

1166:                                             ; preds = %1164
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %195, ptr noundef nonnull align 8 dereferenceable(33088) %1165, ptr noundef nonnull align 8 dereferenceable(32) %196)
          to label %1167 unwind label %1247

1167:                                             ; preds = %1166
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %194, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %195)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %198) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %198) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %193, ptr nonnull %194, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %198)
          to label %1168 unwind label %1249

1168:                                             ; preds = %1167
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %199) #9
  call void @_ZNSaISt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %199) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ESt16initializer_listIS6_ERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %192, ptr nonnull %193, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %199)
          to label %1169 unwind label %1251

1169:                                             ; preds = %1168
  %1170 = invoke noundef zeroext i1 @_Z14CheckSolutionsSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EES8_(ptr noundef nonnull %191, ptr noundef nonnull %192)
          to label %1171 unwind label %1253

1171:                                             ; preds = %1169
  %1172 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1170)
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %192) #9
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %199) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %199) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %193) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %198) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %198) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %194) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %195) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %197) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %197) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %196) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %195) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %194) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %193) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %191) #9
  br i1 %1172, label %1269, label %1173

1173:                                             ; preds = %1171
  %1174 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1175 unwind label %1243

1175:                                             ; preds = %1173
  %1176 = load ptr, ptr %1174, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %200) #9
  %1177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1178 unwind label %1257

1178:                                             ; preds = %1175
  %1179 = load ptr, ptr %1177, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %200, ptr noundef nonnull align 8 dereferenceable(30) %1179, i32 noundef 2394)
          to label %1180 unwind label %1257

1180:                                             ; preds = %1178
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1176, ptr noundef nonnull align 8 dereferenceable(30) %200, ptr noundef nonnull @.str.518)
          to label %1181 unwind label %1257

1181:                                             ; preds = %1180
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %200) #9
  br label %1269

1182:                                             ; preds = %1114
  %1183 = landingpad { ptr, i32 }
          cleanup
  br label %1186

1184:                                             ; preds = %1122, %1120, %1117
  %1185 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %154) #9
  br label %1186

1186:                                             ; preds = %1184, %1182
  %.pn1431 = phi { ptr, i32 } [ %1185, %1184 ], [ %1183, %1182 ]
  invoke void @__cxa_end_catch()
          to label %2669 unwind label %2676

1187:                                             ; preds = %1126
  %1188 = landingpad { ptr, i32 }
          cleanup
  br label %1215

1189:                                             ; preds = %1129
  %1190 = landingpad { ptr, i32 }
          cleanup
  br label %1214

1191:                                             ; preds = %1131
  %1192 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1969

1193:                                             ; preds = %1132
  %1194 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1969.loopexit

1195:                                             ; preds = %1133
  %1196 = landingpad { ptr, i32 }
          cleanup
  br label %1213

1197:                                             ; preds = %1134
  %1198 = landingpad { ptr, i32 }
          cleanup
  br label %1212

1199:                                             ; preds = %1136
  %1200 = landingpad { ptr, i32 }
          cleanup
  br label %1211

1201:                                             ; preds = %1138
  %1202 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1970

1203:                                             ; preds = %1139
  %1204 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1970.loopexit

1205:                                             ; preds = %1140
  %1206 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1971

1207:                                             ; preds = %1141
  %1208 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1971.loopexit

1209:                                             ; preds = %1142
  %1210 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %163) #9
  br label %.loopexit1971.loopexit

.loopexit1971.loopexit:                           ; preds = %1209, %1207
  %.pn1433 = phi { ptr, i32 } [ %1210, %1209 ], [ %1208, %1207 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %172) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %172) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %164) #9
  br label %.loopexit1971

.loopexit1971:                                    ; preds = %.loopexit1971.loopexit, %1205
  %.pn1433.pn = phi { ptr, i32 } [ %1206, %1205 ], [ %.pn1433, %.loopexit1971.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %167) #9
  br label %.loopexit1970.loopexit

.loopexit1970.loopexit:                           ; preds = %.loopexit1971, %1203
  %.pn1433.pn.pn = phi { ptr, i32 } [ %.pn1433.pn, %.loopexit1971 ], [ %1204, %1203 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %171) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %171) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %168) #9
  br label %.loopexit1970

.loopexit1970:                                    ; preds = %.loopexit1970.loopexit, %1201
  %.pn1433.pn.pn.pn = phi { ptr, i32 } [ %1202, %1201 ], [ %.pn1433.pn.pn, %.loopexit1970.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #9
  br label %1211

1211:                                             ; preds = %.loopexit1970, %1199
  %.pn1433.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1433.pn.pn.pn, %.loopexit1970 ], [ %1200, %1199 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %170) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %170) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %169) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %168) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %165) #9
  br label %1212

1212:                                             ; preds = %1211, %1197
  %.pn1433.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1433.pn.pn.pn.pn, %1211 ], [ %1198, %1197 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %166) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %166) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %165) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %164) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %155) #9
  br label %1213

1213:                                             ; preds = %1212, %1195
  %.pn1433.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1433.pn.pn.pn.pn.pn, %1212 ], [ %1196, %1195 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %158) #9
  br label %.loopexit1969.loopexit

.loopexit1969.loopexit:                           ; preds = %1213, %1193
  %.pn1433.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1433.pn.pn.pn.pn.pn.pn, %1213 ], [ %1194, %1193 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %162) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %162) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %159) #9
  br label %.loopexit1969

.loopexit1969:                                    ; preds = %.loopexit1969.loopexit, %1191
  %.pn1433.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1192, %1191 ], [ %.pn1433.pn.pn.pn.pn.pn.pn.pn, %.loopexit1969.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %160) #9
  br label %1214

1214:                                             ; preds = %.loopexit1969, %1189
  %.pn1433.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1433.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit1969 ], [ %1190, %1189 ]
  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 16, ptr nonnull %159) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %156) #9
  br label %1215

1215:                                             ; preds = %1214, %1187
  %.pn1433.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1433.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1214 ], [ %1188, %1187 ]
  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
  br label %2669

1216:                                             ; preds = %1143
  %1217 = landingpad { ptr, i32 }
          cleanup
  br label %1230

1218:                                             ; preds = %1146
  %1219 = landingpad { ptr, i32 }
          cleanup
  br label %1229

1220:                                             ; preds = %1148
  %1221 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1968

1222:                                             ; preds = %1149
  %1223 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1968.loopexit

1224:                                             ; preds = %1150
  %1225 = landingpad { ptr, i32 }
          cleanup
  br label %1228

1226:                                             ; preds = %1151
  %1227 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %181) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %173) #9
  br label %1228

1228:                                             ; preds = %1226, %1224
  %.pn1445 = phi { ptr, i32 } [ %1227, %1226 ], [ %1225, %1224 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %176) #9
  br label %.loopexit1968.loopexit

.loopexit1968.loopexit:                           ; preds = %1228, %1222
  %.pn1445.pn = phi { ptr, i32 } [ %.pn1445, %1228 ], [ %1223, %1222 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %180) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %180) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %177) #9
  br label %.loopexit1968

.loopexit1968:                                    ; preds = %.loopexit1968.loopexit, %1220
  %.pn1445.pn.pn = phi { ptr, i32 } [ %1221, %1220 ], [ %.pn1445.pn, %.loopexit1968.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %178) #9
  br label %1229

1229:                                             ; preds = %.loopexit1968, %1218
  %.pn1445.pn.pn.pn = phi { ptr, i32 } [ %.pn1445.pn.pn, %.loopexit1968 ], [ %1219, %1218 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %179) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %179) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %178) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %177) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #9
  br label %1230

1230:                                             ; preds = %1229, %1216
  %.pn1445.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1445.pn.pn.pn, %1229 ], [ %1217, %1216 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %175) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %175) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %174) #9
  br label %2669

1231:                                             ; preds = %1152
  %1232 = landingpad { ptr, i32 }
          cleanup
  br label %1242

1233:                                             ; preds = %1157
  %1234 = landingpad { ptr, i32 }
          cleanup
  br label %1241

1235:                                             ; preds = %1158
  %1236 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1967

1237:                                             ; preds = %1159
  %1238 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1967.loopexit

1239:                                             ; preds = %1160
  %1240 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %183) #9
  br label %.loopexit1967.loopexit

.loopexit1967.loopexit:                           ; preds = %1239, %1237
  %.pn1451 = phi { ptr, i32 } [ %1240, %1239 ], [ %1238, %1237 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %190) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %190) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %184) #9
  br label %.loopexit1967

.loopexit1967:                                    ; preds = %.loopexit1967.loopexit, %1235
  %.pn1451.pn = phi { ptr, i32 } [ %1236, %1235 ], [ %.pn1451, %.loopexit1967.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %187) #9
  br label %1241

1241:                                             ; preds = %.loopexit1967, %1233
  %.pn1451.pn.pn = phi { ptr, i32 } [ %.pn1451.pn, %.loopexit1967 ], [ %1234, %1233 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %189) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %189) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %188) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %188) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %185) #9
  br label %1242

1242:                                             ; preds = %1241, %1231
  %.pn1451.pn.pn.pn = phi { ptr, i32 } [ %.pn1451.pn.pn, %1241 ], [ %1232, %1231 ]
  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 @llvm.lifetime.end.p0(i64 24, ptr nonnull %183) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %182) #9
  br label %2669

1243:                                             ; preds = %1173, %1161
  %1244 = landingpad { ptr, i32 }
          catch ptr null
  br label %1259

1245:                                             ; preds = %1164
  %1246 = landingpad { ptr, i32 }
          catch ptr null
  br label %1256

1247:                                             ; preds = %1166
  %1248 = landingpad { ptr, i32 }
          catch ptr null
  br label %1255

1249:                                             ; preds = %1167
  %1250 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit1966

1251:                                             ; preds = %1168
  %1252 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit1966.loopexit

1253:                                             ; preds = %1169
  %1254 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %192) #9
  br label %.loopexit1966.loopexit

.loopexit1966.loopexit:                           ; preds = %1253, %1251
  %.pn1456 = phi { ptr, i32 } [ %1254, %1253 ], [ %1252, %1251 ]
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %199) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %199) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %193) #9
  br label %.loopexit1966

.loopexit1966:                                    ; preds = %.loopexit1966.loopexit, %1249
  %.pn1456.pn = phi { ptr, i32 } [ %1250, %1249 ], [ %.pn1456, %.loopexit1966.loopexit ]
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %198) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %198) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %194) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %195) #9
  br label %1255

1255:                                             ; preds = %.loopexit1966, %1247
  %.pn1456.pn.pn = phi { ptr, i32 } [ %.pn1456.pn, %.loopexit1966 ], [ %1248, %1247 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #9
  br label %1256

1256:                                             ; preds = %1255, %1245
  %.pn1456.pn.pn.pn = phi { ptr, i32 } [ %.pn1456.pn.pn, %1255 ], [ %1246, %1245 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %197) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %197) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %196) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %195) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %194) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %193) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %191) #9
  br label %1259

1257:                                             ; preds = %1180, %1178, %1175
  %1258 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %200) #9
  br label %1259

1259:                                             ; preds = %1257, %1256, %1243
  %.pn1457 = phi { ptr, i32 } [ %1258, %1257 ], [ %1244, %1243 ], [ %.pn1456.pn.pn.pn, %1256 ]
  %.104 = extractvalue { ptr, i32 } %.pn1457, 0
  %1260 = call ptr @__cxa_begin_catch(ptr %.104) #9
  %1261 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1262 unwind label %1348

1262:                                             ; preds = %1259
  %1263 = load ptr, ptr %1261, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %201) #9
  %1264 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1265 unwind label %1350

1265:                                             ; preds = %1262
  %1266 = load ptr, ptr %1264, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %201, ptr noundef nonnull align 8 dereferenceable(30) %1266, i32 noundef 2394)
          to label %1267 unwind label %1350

1267:                                             ; preds = %1265
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1263, ptr noundef nonnull align 8 dereferenceable(30) %201, ptr noundef nonnull @.str.519)
          to label %1268 unwind label %1350

1268:                                             ; preds = %1267
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %201) #9
  invoke void @__cxa_end_catch()
          to label %1269 unwind label %745

1269:                                             ; preds = %1171, %1181, %1268
  %1270 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %1270)
          to label %1271 unwind label %745

1271:                                             ; preds = %1269
  %1272 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %1273 = 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 %203) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %204) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %204) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %203, ptr noundef nonnull @.str.520, ptr noundef nonnull align 1 dereferenceable(1) %204)
          to label %1274 unwind label %1353

1274:                                             ; preds = %1271
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %206) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %206, ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  %1275 = getelementptr inbounds i8, ptr %206, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1275, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %207) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %207) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %205, ptr nonnull %206, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %207)
          to label %1276 unwind label %1355

1276:                                             ; preds = %1274
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %202, ptr noundef nonnull align 8 dereferenceable(33088) %1273, ptr noundef nonnull align 8 dereferenceable(32) %203, ptr noundef nonnull %205)
          to label %1277 unwind label %1357

1277:                                             ; preds = %1276
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %209) #9
  %1278 = 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 %210) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %211) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %211) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %210, ptr noundef nonnull @.str.521, ptr noundef nonnull align 1 dereferenceable(1) %211)
          to label %1279 unwind label %1359

1279:                                             ; preds = %1277
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %213) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %213, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %214) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %214) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %212, ptr nonnull %213, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %214)
          to label %1280 unwind label %1361

1280:                                             ; preds = %1279
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %209, ptr noundef nonnull align 8 dereferenceable(33088) %1278, ptr noundef nonnull align 8 dereferenceable(32) %210, ptr noundef nonnull %212)
          to label %1281 unwind label %1363

1281:                                             ; preds = %1280
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %215) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %215) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %208, ptr nonnull %209, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %215)
          to label %1282 unwind label %1365

1282:                                             ; preds = %1281
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %1272, ptr noundef nonnull %202, ptr noundef nonnull %208)
          to label %1283 unwind label %1367

1283:                                             ; preds = %1282
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %208) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %215) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %215) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %209) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %212) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %214) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %214) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %213) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %213) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %210) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %211) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %211) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %210) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %209) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %202) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %205) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %207) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %207) #9
  %1284 = getelementptr inbounds i8, ptr %206, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1284) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %206) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %206) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %203) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %204) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %204) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %203) #9
  %1285 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %1286 = 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 %217) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %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 nonnull @.str.520, ptr noundef nonnull align 1 dereferenceable(1) %218)
          to label %1287 unwind label %1375

1287:                                             ; preds = %1283
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %220) #9
  %1288 = 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 %221) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %222) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %222) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %221, ptr noundef nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %222)
          to label %1289 unwind label %.thread1725

1289:                                             ; preds = %1287
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %220, ptr noundef nonnull align 8 dereferenceable(33088) %1288, ptr noundef nonnull align 8 dereferenceable(32) %221)
          to label %1290 unwind label %1378

1290:                                             ; preds = %1289
  %1291 = getelementptr inbounds i8, ptr %220, i64 16
  %1292 = 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 %223) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %224) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %224) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %223, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %224)
          to label %1293 unwind label %1380

1293:                                             ; preds = %1290
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1291, ptr noundef nonnull align 8 dereferenceable(33088) %1292, ptr noundef nonnull align 8 dereferenceable(32) %223)
          to label %1294 unwind label %1382

1294:                                             ; preds = %1293
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %225) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %225) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %219, ptr nonnull %220, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %225)
          to label %1295 unwind label %1384

1295:                                             ; preds = %1294
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %216, ptr noundef nonnull align 8 dereferenceable(33088) %1286, ptr noundef nonnull align 8 dereferenceable(32) %217, ptr noundef nonnull %219)
          to label %1296 unwind label %1386

1296:                                             ; preds = %1295
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %226, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %226) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %1285, ptr noundef nonnull %216, ptr noundef nonnull %226)
          to label %1297 unwind label %1388

1297:                                             ; preds = %1296
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %226) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %216) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %219) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %225) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %225) #9
  %1298 = getelementptr inbounds i8, ptr %220, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1298) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %220) #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 nonnull %224) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %223) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %222) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %222) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %221) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %220) #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 nonnull %218) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %217) #9
  %1299 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %1300 = 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 %228) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %229) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %229) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %228, ptr noundef nonnull @.str.521, ptr noundef nonnull align 1 dereferenceable(1) %229)
          to label %1301 unwind label %1400

1301:                                             ; preds = %1297
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %231) #9
  %1302 = 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 %232) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %233) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %233) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %232, ptr noundef nonnull @.str.522, ptr noundef nonnull align 1 dereferenceable(1) %233)
          to label %1303 unwind label %1402

1303:                                             ; preds = %1301
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %231, ptr noundef nonnull align 8 dereferenceable(33088) %1302, ptr noundef nonnull align 8 dereferenceable(32) %232)
          to label %1304 unwind label %1404

1304:                                             ; preds = %1303
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %234) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %234) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %230, ptr nonnull %231, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %234)
          to label %1305 unwind label %1406

1305:                                             ; preds = %1304
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %227, ptr noundef nonnull align 8 dereferenceable(33088) %1300, ptr noundef nonnull align 8 dereferenceable(32) %228, ptr noundef nonnull %230)
          to label %1306 unwind label %1408

1306:                                             ; preds = %1305
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %235, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %235) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %1299, ptr noundef nonnull %227, ptr noundef nonnull %235)
          to label %1307 unwind label %1410

1307:                                             ; preds = %1306
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %235) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %227) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %230) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %234) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %234) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %231) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %233) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %233) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %232) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %231) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %229) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %229) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %228) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %236) #9
  %1308 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  %1309 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %1310 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %237) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %238) #9
  %1311 = 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 %239) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %240) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %240) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %239, ptr noundef nonnull @.str.520, ptr noundef nonnull align 1 dereferenceable(1) %240)
          to label %1312 unwind label %1415

1312:                                             ; preds = %1307
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %242) #9
  %1313 = 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 %243) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %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 nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %244)
          to label %1314 unwind label %.thread1731

1314:                                             ; preds = %1312
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %242, ptr noundef nonnull align 8 dereferenceable(33088) %1313, ptr noundef nonnull align 8 dereferenceable(32) %243)
          to label %1315 unwind label %1418

1315:                                             ; preds = %1314
  %1316 = getelementptr inbounds i8, ptr %242, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1316, ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %245) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %245) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %241, ptr nonnull %242, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %245)
          to label %1317 unwind label %1420

1317:                                             ; preds = %1315
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %238, ptr noundef nonnull align 8 dereferenceable(33088) %1311, ptr noundef nonnull align 8 dereferenceable(32) %239, ptr noundef nonnull %241)
          to label %1318 unwind label %1422

1318:                                             ; preds = %1317
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %246) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %246) #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) %246)
          to label %1319 unwind label %1424

1319:                                             ; preds = %1318
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %236, ptr noundef nonnull align 8 dereferenceable(64) %1308, ptr noundef %1309, ptr noundef %1310, ptr noundef nonnull align 8 dereferenceable(24) %237, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %1320 unwind label %1426

1320:                                             ; preds = %1319
  %1321 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %236) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__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) %237) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %246) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %246) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %238) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %241) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %245) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %245) #9
  %1322 = getelementptr inbounds i8, ptr %242, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1322) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %242) #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 nonnull %244) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %243) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %242) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %239) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %240) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %240) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %239) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %238) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %237) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %236) #9
  %1323 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ERKS8_(ptr noundef nonnull align 8 dereferenceable(24) %247, ptr noundef nonnull align 8 dereferenceable(24) %1323)
          to label %1324 unwind label %1431

1324:                                             ; preds = %1320
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %249) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %250) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %251) #9
  %1325 = 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 %252) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %253) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %253) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %252, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %253)
          to label %1326 unwind label %.thread1737

1326:                                             ; preds = %1324
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %251, ptr noundef nonnull align 8 dereferenceable(33088) %1325, ptr noundef nonnull align 8 dereferenceable(32) %252)
          to label %1327 unwind label %1434

1327:                                             ; preds = %1326
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %250, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %251)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %254) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %254) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %249, ptr nonnull %250, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %254)
          to label %1328 unwind label %1436

1328:                                             ; preds = %1327
  %1329 = getelementptr inbounds i8, ptr %249, i64 24
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %255) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %256) #9
  %1330 = 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 %257) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %258) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %258) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %257, ptr noundef nonnull @.str.522, ptr noundef nonnull align 1 dereferenceable(1) %258)
          to label %1331 unwind label %1438

1331:                                             ; preds = %1328
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %256, ptr noundef nonnull align 8 dereferenceable(33088) %1330, ptr noundef nonnull align 8 dereferenceable(32) %257)
          to label %1332 unwind label %1440

1332:                                             ; preds = %1331
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %255, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %256)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %259) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %259) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %1329, ptr nonnull %255, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %259)
          to label %1333 unwind label %1442

1333:                                             ; preds = %1332
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %260) #9
  call void @_ZNSaISt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %260) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ESt16initializer_listIS6_ERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %248, ptr nonnull %249, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %260)
          to label %1334 unwind label %1444

1334:                                             ; preds = %1333
  %1335 = invoke noundef zeroext i1 @_Z14CheckSolutionsSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EES8_(ptr noundef nonnull %247, ptr noundef nonnull %248)
          to label %1336 unwind label %1446

1336:                                             ; preds = %1334
  %1337 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1335)
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %248) #9
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %260) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %260) #9
  %1338 = getelementptr inbounds i8, ptr %249, i64 24
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1338) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %249) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %259) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %259) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %255) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %256) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %257) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %258) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %258) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %257) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %256) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %255) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %254) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %254) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %250) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %251) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %252) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %253) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %253) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %252) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %251) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %250) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %249) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %247) #9
  br i1 %1337, label %1469, label %1339

1339:                                             ; preds = %1336
  %1340 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1341 unwind label %1431

1341:                                             ; preds = %1339
  %1342 = load ptr, ptr %1340, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %261) #9
  %1343 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1344 unwind label %1457

1344:                                             ; preds = %1341
  %1345 = load ptr, ptr %1343, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %261, ptr noundef nonnull align 8 dereferenceable(30) %1345, i32 noundef 2410)
          to label %1346 unwind label %1457

1346:                                             ; preds = %1344
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1342, ptr noundef nonnull align 8 dereferenceable(30) %261, ptr noundef nonnull @.str.523)
          to label %1347 unwind label %1457

1347:                                             ; preds = %1346
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %261) #9
  br label %1469

1348:                                             ; preds = %1259
  %1349 = landingpad { ptr, i32 }
          cleanup
  br label %1352

1350:                                             ; preds = %1267, %1265, %1262
  %1351 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %201) #9
  br label %1352

1352:                                             ; preds = %1350, %1348
  %.pn1458 = phi { ptr, i32 } [ %1351, %1350 ], [ %1349, %1348 ]
  invoke void @__cxa_end_catch()
          to label %2669 unwind label %2676

1353:                                             ; preds = %1271
  %1354 = landingpad { ptr, i32 }
          cleanup
  br label %1374

1355:                                             ; preds = %1274
  %1356 = landingpad { ptr, i32 }
          cleanup
  br label %1372

1357:                                             ; preds = %1276
  %1358 = landingpad { ptr, i32 }
          cleanup
  br label %1371

1359:                                             ; preds = %1277
  %1360 = landingpad { ptr, i32 }
          cleanup
  br label %1370

1361:                                             ; preds = %1279
  %1362 = landingpad { ptr, i32 }
          cleanup
  br label %1369

1363:                                             ; preds = %1280
  %1364 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1965

1365:                                             ; preds = %1281
  %1366 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1965.loopexit

1367:                                             ; preds = %1282
  %1368 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %208) #9
  br label %.loopexit1965.loopexit

.loopexit1965.loopexit:                           ; preds = %1367, %1365
  %.pn1460 = phi { ptr, i32 } [ %1368, %1367 ], [ %1366, %1365 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %215) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %215) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %209) #9
  br label %.loopexit1965

.loopexit1965:                                    ; preds = %.loopexit1965.loopexit, %1363
  %.pn1460.pn = phi { ptr, i32 } [ %1364, %1363 ], [ %.pn1460, %.loopexit1965.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %212) #9
  br label %1369

1369:                                             ; preds = %.loopexit1965, %1361
  %.pn1460.pn.pn = phi { ptr, i32 } [ %.pn1460.pn, %.loopexit1965 ], [ %1362, %1361 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %214) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %214) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %213) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %213) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %210) #9
  br label %1370

1370:                                             ; preds = %1369, %1359
  %.pn1460.pn.pn.pn = phi { ptr, i32 } [ %.pn1460.pn.pn, %1369 ], [ %1360, %1359 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %211) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %211) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %210) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %209) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %202) #9
  br label %1371

1371:                                             ; preds = %1370, %1357
  %.pn1460.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1460.pn.pn.pn, %1370 ], [ %1358, %1357 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %205) #9
  br label %1372

1372:                                             ; preds = %1371, %1355
  %.pn1460.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1460.pn.pn.pn.pn, %1371 ], [ %1356, %1355 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %207) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %207) #9
  %1373 = getelementptr inbounds i8, ptr %206, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1373) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %206) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %206) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %203) #9
  br label %1374

1374:                                             ; preds = %1372, %1353
  %.pn1460.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1460.pn.pn.pn.pn.pn, %1372 ], [ %1354, %1353 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %204) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %204) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %203) #9
  br label %2669

1375:                                             ; preds = %1283
  %1376 = landingpad { ptr, i32 }
          cleanup
  br label %1399

.thread1725:                                      ; preds = %1287
  %1377 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %222) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %222) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %221) #9
  br label %.loopexit1963

1378:                                             ; preds = %1289
  %1379 = landingpad { ptr, i32 }
          cleanup
  br label %1394

1380:                                             ; preds = %1290
  %1381 = landingpad { ptr, i32 }
          cleanup
  br label %1393

1382:                                             ; preds = %1293
  %1383 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1964

1384:                                             ; preds = %1294
  %1385 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1964.loopexit

1386:                                             ; preds = %1295
  %1387 = landingpad { ptr, i32 }
          cleanup
  br label %1390

1388:                                             ; preds = %1296
  %1389 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %226) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %216) #9
  br label %1390

1390:                                             ; preds = %1388, %1386
  %.pn1468 = phi { ptr, i32 } [ %1389, %1388 ], [ %1387, %1386 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %219) #9
  br label %.loopexit1964.loopexit

.loopexit1964.loopexit:                           ; preds = %1390, %1384
  %.pn1468.pn = phi { ptr, i32 } [ %.pn1468, %1390 ], [ %1385, %1384 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %225) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %225) #9
  %1391 = getelementptr inbounds i8, ptr %220, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1391) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %220) #9
  br label %.loopexit1964

.loopexit1964:                                    ; preds = %.loopexit1964.loopexit, %1382
  %1392 = phi i1 [ false, %1382 ], [ true, %.loopexit1964.loopexit ]
  %.pn1468.pn.pn = phi { ptr, i32 } [ %1383, %1382 ], [ %.pn1468.pn, %.loopexit1964.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %223) #9
  br label %1393

1393:                                             ; preds = %.loopexit1964, %1380
  %.11070 = phi i1 [ %1392, %.loopexit1964 ], [ false, %1380 ]
  %.pn1468.pn.pn.pn = phi { ptr, i32 } [ %.pn1468.pn.pn, %.loopexit1964 ], [ %1381, %1380 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %224) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %224) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %223) #9
  br label %1394

1394:                                             ; preds = %1378, %1393
  %.21071 = phi i1 [ %.11070, %1393 ], [ false, %1378 ]
  %.01067 = phi ptr [ %1291, %1393 ], [ %220, %1378 ]
  %.pn1468.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1468.pn.pn.pn, %1393 ], [ %1379, %1378 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %222) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %222) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %221) #9
  %1395 = icmp eq ptr %220, %.01067
  %or.cond82 = select i1 %.21071, i1 true, i1 %1395
  br i1 %or.cond82, label %.loopexit1963, label %.preheader1962

.preheader1962:                                   ; preds = %1394, %.preheader1962
  %1396 = phi ptr [ %1397, %.preheader1962 ], [ %.01067, %1394 ]
  %1397 = getelementptr inbounds i8, ptr %1396, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1397) #9
  %1398 = icmp eq ptr %1397, %220
  br i1 %1398, label %.loopexit1963, label %.preheader1962

.loopexit1963:                                    ; preds = %.preheader1962, %.thread1725, %1394
  %.pn1468.pn.pn.pn.pn.pn1730 = phi { ptr, i32 } [ %1377, %.thread1725 ], [ %.pn1468.pn.pn.pn.pn, %1394 ], [ %.pn1468.pn.pn.pn.pn, %.preheader1962 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %220) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %217) #9
  br label %1399

1399:                                             ; preds = %.loopexit1963, %1375
  %.pn1468.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1468.pn.pn.pn.pn.pn1730, %.loopexit1963 ], [ %1376, %1375 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %218) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %218) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %217) #9
  br label %2669

1400:                                             ; preds = %1297
  %1401 = landingpad { ptr, i32 }
          cleanup
  br label %1414

1402:                                             ; preds = %1301
  %1403 = landingpad { ptr, i32 }
          cleanup
  br label %1413

1404:                                             ; preds = %1303
  %1405 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1961

1406:                                             ; preds = %1304
  %1407 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1961.loopexit

1408:                                             ; preds = %1305
  %1409 = landingpad { ptr, i32 }
          cleanup
  br label %1412

1410:                                             ; preds = %1306
  %1411 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %235) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %227) #9
  br label %1412

1412:                                             ; preds = %1410, %1408
  %.pn1476 = phi { ptr, i32 } [ %1411, %1410 ], [ %1409, %1408 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %230) #9
  br label %.loopexit1961.loopexit

.loopexit1961.loopexit:                           ; preds = %1412, %1406
  %.pn1476.pn = phi { ptr, i32 } [ %.pn1476, %1412 ], [ %1407, %1406 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %234) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %234) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %231) #9
  br label %.loopexit1961

.loopexit1961:                                    ; preds = %.loopexit1961.loopexit, %1404
  %.pn1476.pn.pn = phi { ptr, i32 } [ %1405, %1404 ], [ %.pn1476.pn, %.loopexit1961.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #9
  br label %1413

1413:                                             ; preds = %.loopexit1961, %1402
  %.pn1476.pn.pn.pn = phi { ptr, i32 } [ %.pn1476.pn.pn, %.loopexit1961 ], [ %1403, %1402 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %233) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %233) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %232) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %231) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #9
  br label %1414

1414:                                             ; preds = %1413, %1400
  %.pn1476.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1476.pn.pn.pn, %1413 ], [ %1401, %1400 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %229) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %229) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %228) #9
  br label %2669

1415:                                             ; preds = %1307
  %1416 = landingpad { ptr, i32 }
          cleanup
  br label %1430

.thread1731:                                      ; preds = %1312
  %1417 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %244) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %244) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %243) #9
  br label %1429

1418:                                             ; preds = %1314
  %1419 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1959

1420:                                             ; preds = %1315
  %1421 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1959.loopexit

1422:                                             ; preds = %1317
  %1423 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1960

1424:                                             ; preds = %1318
  %1425 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1960.loopexit

1426:                                             ; preds = %1319
  %1427 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %237) #9
  br label %.loopexit1960.loopexit

.loopexit1960.loopexit:                           ; preds = %1426, %1424
  %.pn1482 = phi { ptr, i32 } [ %1427, %1426 ], [ %1425, %1424 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %246) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %246) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %238) #9
  br label %.loopexit1960

.loopexit1960:                                    ; preds = %.loopexit1960.loopexit, %1422
  %.pn1482.pn = phi { ptr, i32 } [ %1423, %1422 ], [ %.pn1482, %.loopexit1960.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %241) #9
  br label %.loopexit1959.loopexit

.loopexit1959.loopexit:                           ; preds = %.loopexit1960, %1420
  %.pn1482.pn.pn = phi { ptr, i32 } [ %.pn1482.pn, %.loopexit1960 ], [ %1421, %1420 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %245) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %245) #9
  %1428 = getelementptr inbounds i8, ptr %242, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1428) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %242) #9
  br label %.loopexit1959

.loopexit1959:                                    ; preds = %.loopexit1959.loopexit, %1418
  %.pn1482.pn.pn.pn = phi { ptr, i32 } [ %1419, %1418 ], [ %.pn1482.pn.pn, %.loopexit1959.loopexit ]
  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 nonnull %244) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %243) #9
  br label %1429

1429:                                             ; preds = %.loopexit1959, %.thread1731
  %.pn1482.pn.pn.pn.pn1736 = phi { ptr, i32 } [ %1417, %.thread1731 ], [ %.pn1482.pn.pn.pn, %.loopexit1959 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %242) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %239) #9
  br label %1430

1430:                                             ; preds = %1429, %1415
  %.pn1482.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1482.pn.pn.pn.pn1736, %1429 ], [ %1416, %1415 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %240) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %240) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %239) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %238) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %237) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %236) #9
  br label %2669

1431:                                             ; preds = %1339, %1320
  %1432 = landingpad { ptr, i32 }
          catch ptr null
  br label %1459

.thread1737:                                      ; preds = %1324
  %1433 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %253) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %253) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %252) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %251) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %250) #9
  br label %.loopexit1957

1434:                                             ; preds = %1326
  %1435 = landingpad { ptr, i32 }
          catch ptr null
  br label %1452

1436:                                             ; preds = %1327
  %1437 = landingpad { ptr, i32 }
          catch ptr null
  br label %1451

1438:                                             ; preds = %1328
  %1439 = landingpad { ptr, i32 }
          catch ptr null
  br label %1450

1440:                                             ; preds = %1331
  %1441 = landingpad { ptr, i32 }
          catch ptr null
  br label %1449

1442:                                             ; preds = %1332
  %1443 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit1958

1444:                                             ; preds = %1333
  %1445 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit1958.loopexit

1446:                                             ; preds = %1334
  %1447 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %248) #9
  br label %.loopexit1958.loopexit

.loopexit1958.loopexit:                           ; preds = %1446, %1444
  %.pn1489 = phi { ptr, i32 } [ %1447, %1446 ], [ %1445, %1444 ]
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %260) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %260) #9
  %1448 = getelementptr inbounds i8, ptr %249, i64 24
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1448) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %249) #9
  br label %.loopexit1958

.loopexit1958:                                    ; preds = %.loopexit1958.loopexit, %1442
  %.01094 = phi i1 [ true, %1442 ], [ false, %.loopexit1958.loopexit ]
  %.pn1489.pn = phi { ptr, i32 } [ %1443, %1442 ], [ %.pn1489, %.loopexit1958.loopexit ]
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %259) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %259) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %255) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %256) #9
  br label %1449

1449:                                             ; preds = %.loopexit1958, %1440
  %.11095 = phi i1 [ %.01094, %.loopexit1958 ], [ true, %1440 ]
  %.pn1489.pn.pn = phi { ptr, i32 } [ %.pn1489.pn, %.loopexit1958 ], [ %1441, %1440 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %257) #9
  br label %1450

1450:                                             ; preds = %1449, %1438
  %.21096 = phi i1 [ %.11095, %1449 ], [ true, %1438 ]
  %.pn1489.pn.pn.pn = phi { ptr, i32 } [ %.pn1489.pn.pn, %1449 ], [ %1439, %1438 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %258) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %258) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %257) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %256) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %255) #9
  br label %1451

1451:                                             ; preds = %1450, %1436
  %.31097 = phi i1 [ %.21096, %1450 ], [ true, %1436 ]
  %.01087 = phi ptr [ %1329, %1450 ], [ %249, %1436 ]
  %.pn1489.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1489.pn.pn.pn, %1450 ], [ %1437, %1436 ]
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %254) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %254) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %250) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %251) #9
  br label %1452

1452:                                             ; preds = %1434, %1451
  %.41098 = phi i1 [ %.31097, %1451 ], [ true, %1434 ]
  %.11088 = phi ptr [ %.01087, %1451 ], [ %249, %1434 ]
  %.pn1489.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1489.pn.pn.pn.pn, %1451 ], [ %1435, %1434 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %252) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %253) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %253) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %252) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %251) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %250) #9
  %1453 = icmp ne ptr %249, %.11088
  %or.cond100.not = select i1 %.41098, i1 %1453, i1 false
  br i1 %or.cond100.not, label %.preheader1956, label %.loopexit1957

.preheader1956:                                   ; preds = %1452, %.preheader1956
  %1454 = phi ptr [ %1455, %.preheader1956 ], [ %.11088, %1452 ]
  %1455 = getelementptr inbounds i8, ptr %1454, i64 -24
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1455) #9
  %1456 = icmp eq ptr %1455, %249
  br i1 %1456, label %.loopexit1957, label %.preheader1956

.loopexit1957:                                    ; preds = %.preheader1956, %.thread1737, %1452
  %.pn1489.pn.pn.pn.pn.pn.pn1742 = phi { ptr, i32 } [ %1433, %.thread1737 ], [ %.pn1489.pn.pn.pn.pn.pn, %1452 ], [ %.pn1489.pn.pn.pn.pn.pn, %.preheader1956 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %249) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %247) #9
  br label %1459

1457:                                             ; preds = %1346, %1344, %1341
  %1458 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %261) #9
  br label %1459

1459:                                             ; preds = %1457, %.loopexit1957, %1431
  %.pn1490 = phi { ptr, i32 } [ %1458, %1457 ], [ %1432, %1431 ], [ %.pn1489.pn.pn.pn.pn.pn.pn1742, %.loopexit1957 ]
  %.138 = extractvalue { ptr, i32 } %.pn1490, 0
  %1460 = call ptr @__cxa_begin_catch(ptr %.138) #9
  %1461 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1462 unwind label %1557

1462:                                             ; preds = %1459
  %1463 = load ptr, ptr %1461, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %262) #9
  %1464 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1465 unwind label %1559

1465:                                             ; preds = %1462
  %1466 = load ptr, ptr %1464, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %262, ptr noundef nonnull align 8 dereferenceable(30) %1466, i32 noundef 2410)
          to label %1467 unwind label %1559

1467:                                             ; preds = %1465
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1463, ptr noundef nonnull align 8 dereferenceable(30) %262, ptr noundef nonnull @.str.524)
          to label %1468 unwind label %1559

1468:                                             ; preds = %1467
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %262) #9
  invoke void @__cxa_end_catch()
          to label %1469 unwind label %745

1469:                                             ; preds = %1336, %1347, %1468
  %1470 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %1470)
          to label %1471 unwind label %745

1471:                                             ; preds = %1469
  %1472 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %1473 = 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 %264) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %265) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %265) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %264, ptr noundef nonnull @.str.525, ptr noundef nonnull align 1 dereferenceable(1) %265)
          to label %1474 unwind label %1562

1474:                                             ; preds = %1471
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %267) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %267, ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  %1475 = getelementptr inbounds i8, ptr %267, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1475, ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  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) %266, ptr nonnull %267, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %268)
          to label %1476 unwind label %1564

1476:                                             ; preds = %1474
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %263, ptr noundef nonnull align 8 dereferenceable(33088) %1473, ptr noundef nonnull align 8 dereferenceable(32) %264, ptr noundef nonnull %266)
          to label %1477 unwind label %1566

1477:                                             ; preds = %1476
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %270) #9
  %1478 = 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 %271) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %272) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %272) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %271, ptr noundef nonnull @.str.526, ptr noundef nonnull align 1 dereferenceable(1) %272)
          to label %1479 unwind label %.thread1743

1479:                                             ; preds = %1477
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %274) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %274, ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  %1480 = getelementptr inbounds i8, ptr %274, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1480, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %275) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %275) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %273, ptr nonnull %274, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %275)
          to label %1481 unwind label %1569

1481:                                             ; preds = %1479
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %270, ptr noundef nonnull align 8 dereferenceable(33088) %1478, ptr noundef nonnull align 8 dereferenceable(32) %271, ptr noundef nonnull %273)
          to label %1482 unwind label %1571

1482:                                             ; preds = %1481
  %1483 = getelementptr inbounds i8, ptr %270, i64 16
  %1484 = 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.526, ptr noundef nonnull align 1 dereferenceable(1) %277)
          to label %1485 unwind label %1573

1485:                                             ; preds = %1482
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %279) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %279, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  %1486 = getelementptr inbounds i8, ptr %279, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1486, ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %280) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %280) #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) %280)
          to label %1487 unwind label %1575

1487:                                             ; preds = %1485
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1483, ptr noundef nonnull align 8 dereferenceable(33088) %1484, ptr noundef nonnull align 8 dereferenceable(32) %276, ptr noundef nonnull %278)
          to label %1488 unwind label %1577

1488:                                             ; preds = %1487
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %281) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %281) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %269, ptr nonnull %270, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %281)
          to label %1489 unwind label %1579

1489:                                             ; preds = %1488
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %1472, ptr noundef nonnull %263, ptr noundef nonnull %269)
          to label %1490 unwind label %1581

1490:                                             ; preds = %1489
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %269) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %281) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %281) #9
  %1491 = getelementptr inbounds i8, ptr %270, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1491) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %270) #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) %280) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %280) #9
  %1492 = getelementptr inbounds i8, ptr %279, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1492) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %279) #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 @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %273) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %275) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %275) #9
  %1493 = getelementptr inbounds i8, ptr %274, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1493) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %274) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %274) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %271) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %272) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %272) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %271) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %270) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %263) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %266) #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
  %1494 = getelementptr inbounds i8, ptr %267, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1494) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %267) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %267) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %264) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %265) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %265) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %264) #9
  %1495 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %1496 = 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 %283) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %284) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %284) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %283, ptr noundef nonnull @.str.526, ptr noundef nonnull align 1 dereferenceable(1) %284)
          to label %1497 unwind label %1599

1497:                                             ; preds = %1490
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %286) #9
  %1498 = 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 %287) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %288) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %288) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %287, ptr noundef nonnull @.str.527, ptr noundef nonnull align 1 dereferenceable(1) %288)
          to label %1499 unwind label %.thread1749

1499:                                             ; preds = %1497
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %286, ptr noundef nonnull align 8 dereferenceable(33088) %1498, ptr noundef nonnull align 8 dereferenceable(32) %287)
          to label %1500 unwind label %1602

1500:                                             ; preds = %1499
  %1501 = getelementptr inbounds i8, ptr %286, i64 16
  %1502 = 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 %289) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %290) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %290) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %289, ptr noundef nonnull @.str.528, ptr noundef nonnull align 1 dereferenceable(1) %290)
          to label %1503 unwind label %1604

1503:                                             ; preds = %1500
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1501, ptr noundef nonnull align 8 dereferenceable(33088) %1502, ptr noundef nonnull align 8 dereferenceable(32) %289)
          to label %1504 unwind label %1606

1504:                                             ; preds = %1503
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %291) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %291) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %285, ptr nonnull %286, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %291)
          to label %1505 unwind label %1608

1505:                                             ; preds = %1504
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %282, ptr noundef nonnull align 8 dereferenceable(33088) %1496, ptr noundef nonnull align 8 dereferenceable(32) %283, ptr noundef nonnull %285)
          to label %1506 unwind label %1610

1506:                                             ; preds = %1505
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %292, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %292) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %1495, ptr noundef nonnull %282, ptr noundef nonnull %292)
          to label %1507 unwind label %1612

1507:                                             ; preds = %1506
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %292) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %282) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %285) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %291) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %291) #9
  %1508 = getelementptr inbounds i8, ptr %286, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1508) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %286) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %289) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %290) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %290) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %289) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %287) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %288) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %288) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %287) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %286) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %283) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %284) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %284) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %283) #9
  %1509 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %1510 = 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.526, ptr noundef nonnull align 1 dereferenceable(1) %295)
          to label %1511 unwind label %1624

1511:                                             ; preds = %1507
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %297) #9
  %1512 = 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 %298) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %299) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %299) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %298, ptr noundef nonnull @.str.528, ptr noundef nonnull align 1 dereferenceable(1) %299)
          to label %1513 unwind label %.thread1755

1513:                                             ; preds = %1511
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %297, ptr noundef nonnull align 8 dereferenceable(33088) %1512, ptr noundef nonnull align 8 dereferenceable(32) %298)
          to label %1514 unwind label %1627

1514:                                             ; preds = %1513
  %1515 = getelementptr inbounds i8, ptr %297, i64 16
  %1516 = 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 %300) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %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 nonnull @.str.529, ptr noundef nonnull align 1 dereferenceable(1) %301)
          to label %1517 unwind label %1629

1517:                                             ; preds = %1514
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1515, ptr noundef nonnull align 8 dereferenceable(33088) %1516, ptr noundef nonnull align 8 dereferenceable(32) %300)
          to label %1518 unwind label %1631

1518:                                             ; preds = %1517
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %302) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %302) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %296, ptr nonnull %297, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %302)
          to label %1519 unwind label %1633

1519:                                             ; preds = %1518
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %293, ptr noundef nonnull align 8 dereferenceable(33088) %1510, ptr noundef nonnull align 8 dereferenceable(32) %294, ptr noundef nonnull %296)
          to label %1520 unwind label %1635

1520:                                             ; preds = %1519
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %303, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %303) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %1509, ptr noundef nonnull %293, ptr noundef nonnull %303)
          to label %1521 unwind label %1637

1521:                                             ; preds = %1520
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %303) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %293) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %296) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %302) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %302) #9
  %1522 = getelementptr inbounds i8, ptr %297, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1522) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %297) #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 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) %298) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %299) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %299) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %298) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %297) #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.start.p0(i64 16, ptr nonnull %304) #9
  %1523 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  %1524 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %1525 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %305) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %306) #9
  %1526 = 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.525, ptr noundef nonnull align 1 dereferenceable(1) %308)
          to label %1527 unwind label %1649

1527:                                             ; preds = %1521
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %310) #9
  %1528 = 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 %311) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %312) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %312) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %311, ptr noundef nonnull @.str.527, ptr noundef nonnull align 1 dereferenceable(1) %312)
          to label %1529 unwind label %.thread1761

1529:                                             ; preds = %1527
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %310, ptr noundef nonnull align 8 dereferenceable(33088) %1528, ptr noundef nonnull align 8 dereferenceable(32) %311)
          to label %1530 unwind label %1652

1530:                                             ; preds = %1529
  %1531 = getelementptr inbounds i8, ptr %310, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1531, ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %313) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %313) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %309, ptr nonnull %310, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %313)
          to label %1532 unwind label %1654

1532:                                             ; preds = %1530
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %306, ptr noundef nonnull align 8 dereferenceable(33088) %1526, ptr noundef nonnull align 8 dereferenceable(32) %307, ptr noundef nonnull %309)
          to label %1533 unwind label %1656

1533:                                             ; preds = %1532
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %314) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %314) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %305, ptr nonnull %306, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %314)
          to label %1534 unwind label %1658

1534:                                             ; preds = %1533
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %304, ptr noundef nonnull align 8 dereferenceable(64) %1523, ptr noundef %1524, ptr noundef %1525, ptr noundef nonnull align 8 dereferenceable(24) %305, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %1535 unwind label %1660

1535:                                             ; preds = %1534
  %1536 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %304) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %304) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %305) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %314) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %314) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %306) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %309) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %313) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %313) #9
  %1537 = getelementptr inbounds i8, ptr %310, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1537) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %310) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %311) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %312) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %312) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %311) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %310) #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 @llvm.lifetime.end.p0(i64 24, ptr nonnull %305) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %304) #9
  %1538 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ERKS8_(ptr noundef nonnull align 8 dereferenceable(24) %315, ptr noundef nonnull align 8 dereferenceable(24) %1538)
          to label %1539 unwind label %1665

1539:                                             ; preds = %1535
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %317) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %318) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %319) #9
  %1540 = 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 %320) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %321) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %321) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %320, ptr noundef nonnull @.str.529, ptr noundef nonnull align 1 dereferenceable(1) %321)
          to label %1541 unwind label %1667

1541:                                             ; preds = %1539
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %319, ptr noundef nonnull align 8 dereferenceable(33088) %1540, ptr noundef nonnull align 8 dereferenceable(32) %320)
          to label %1542 unwind label %1669

1542:                                             ; preds = %1541
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %318, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %319)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %322) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %322) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %317, ptr nonnull %318, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %322)
          to label %1543 unwind label %1671

1543:                                             ; preds = %1542
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %323) #9
  call void @_ZNSaISt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %323) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ESt16initializer_listIS6_ERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %316, ptr nonnull %317, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %323)
          to label %1544 unwind label %1673

1544:                                             ; preds = %1543
  %1545 = invoke noundef zeroext i1 @_Z14CheckSolutionsSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EES8_(ptr noundef nonnull %315, ptr noundef nonnull %316)
          to label %1546 unwind label %1675

1546:                                             ; preds = %1544
  %1547 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1545)
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %316) #9
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %323) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %323) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %317) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %322) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %322) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %318) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %319) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %320) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %321) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %321) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %320) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %319) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %318) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %317) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %315) #9
  br i1 %1547, label %1691, label %1548

1548:                                             ; preds = %1546
  %1549 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1550 unwind label %1665

1550:                                             ; preds = %1548
  %1551 = load ptr, ptr %1549, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %324) #9
  %1552 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1553 unwind label %1679

1553:                                             ; preds = %1550
  %1554 = load ptr, ptr %1552, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %324, ptr noundef nonnull align 8 dereferenceable(30) %1554, i32 noundef 2427)
          to label %1555 unwind label %1679

1555:                                             ; preds = %1553
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1551, ptr noundef nonnull align 8 dereferenceable(30) %324, ptr noundef nonnull @.str.530)
          to label %1556 unwind label %1679

1556:                                             ; preds = %1555
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %324) #9
  br label %1691

1557:                                             ; preds = %1459
  %1558 = landingpad { ptr, i32 }
          cleanup
  br label %1561

1559:                                             ; preds = %1467, %1465, %1462
  %1560 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %262) #9
  br label %1561

1561:                                             ; preds = %1559, %1557
  %.pn1491 = phi { ptr, i32 } [ %1560, %1559 ], [ %1558, %1557 ]
  invoke void @__cxa_end_catch()
          to label %2669 unwind label %2676

1562:                                             ; preds = %1471
  %1563 = landingpad { ptr, i32 }
          cleanup
  br label %1598

1564:                                             ; preds = %1474
  %1565 = landingpad { ptr, i32 }
          cleanup
  br label %1596

1566:                                             ; preds = %1476
  %1567 = landingpad { ptr, i32 }
          cleanup
  br label %1595

.thread1743:                                      ; preds = %1477
  %1568 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %272) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %272) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %271) #9
  br label %.loopexit1954

1569:                                             ; preds = %1479
  %1570 = landingpad { ptr, i32 }
          cleanup
  br label %1589

1571:                                             ; preds = %1481
  %1572 = landingpad { ptr, i32 }
          cleanup
  br label %1588

1573:                                             ; preds = %1482
  %1574 = landingpad { ptr, i32 }
          cleanup
  br label %1587

1575:                                             ; preds = %1485
  %1576 = landingpad { ptr, i32 }
          cleanup
  br label %1585

1577:                                             ; preds = %1487
  %1578 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1955

1579:                                             ; preds = %1488
  %1580 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1955.loopexit

1581:                                             ; preds = %1489
  %1582 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %269) #9
  br label %.loopexit1955.loopexit

.loopexit1955.loopexit:                           ; preds = %1581, %1579
  %.pn1493 = phi { ptr, i32 } [ %1582, %1581 ], [ %1580, %1579 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %281) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %281) #9
  %1583 = getelementptr inbounds i8, ptr %270, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1583) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %270) #9
  br label %.loopexit1955

.loopexit1955:                                    ; preds = %.loopexit1955.loopexit, %1577
  %1584 = phi i1 [ false, %1577 ], [ true, %.loopexit1955.loopexit ]
  %.pn1493.pn = phi { ptr, i32 } [ %1578, %1577 ], [ %.pn1493, %.loopexit1955.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %278) #9
  br label %1585

1585:                                             ; preds = %.loopexit1955, %1575
  %.11104 = phi i1 [ %1584, %.loopexit1955 ], [ false, %1575 ]
  %.pn1493.pn.pn = phi { ptr, i32 } [ %.pn1493.pn, %.loopexit1955 ], [ %1576, %1575 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %280) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %280) #9
  %1586 = getelementptr inbounds i8, ptr %279, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1586) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %279) #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
  br label %1587

1587:                                             ; preds = %1585, %1573
  %.21105 = phi i1 [ %.11104, %1585 ], [ false, %1573 ]
  %.pn1493.pn.pn.pn = phi { ptr, i32 } [ %.pn1493.pn.pn, %1585 ], [ %1574, %1573 ]
  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 %1588

1588:                                             ; preds = %1587, %1571
  %.31106 = phi i1 [ %.21105, %1587 ], [ false, %1571 ]
  %.01100 = phi ptr [ %1483, %1587 ], [ %270, %1571 ]
  %.pn1493.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1493.pn.pn.pn, %1587 ], [ %1572, %1571 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %273) #9
  br label %1589

1589:                                             ; preds = %1588, %1569
  %.41107 = phi i1 [ %.31106, %1588 ], [ false, %1569 ]
  %.11101 = phi ptr [ %.01100, %1588 ], [ %270, %1569 ]
  %.pn1493.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1493.pn.pn.pn.pn, %1588 ], [ %1570, %1569 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %275) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %275) #9
  %1590 = getelementptr inbounds i8, ptr %274, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1590) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %274) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %274) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %271) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %272) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %272) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %271) #9
  %1591 = icmp eq ptr %270, %.11101
  %or.cond103 = select i1 %.41107, i1 true, i1 %1591
  br i1 %or.cond103, label %.loopexit1954, label %.preheader1953

.preheader1953:                                   ; preds = %1589, %.preheader1953
  %1592 = phi ptr [ %1593, %.preheader1953 ], [ %.11101, %1589 ]
  %1593 = getelementptr inbounds i8, ptr %1592, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1593) #9
  %1594 = icmp eq ptr %1593, %270
  br i1 %1594, label %.loopexit1954, label %.preheader1953

.loopexit1954:                                    ; preds = %.preheader1953, %.thread1743, %1589
  %.pn1493.pn.pn.pn.pn.pn.pn1748 = phi { ptr, i32 } [ %1568, %.thread1743 ], [ %.pn1493.pn.pn.pn.pn.pn, %1589 ], [ %.pn1493.pn.pn.pn.pn.pn, %.preheader1953 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %270) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %263) #9
  br label %1595

1595:                                             ; preds = %.loopexit1954, %1566
  %.pn1493.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1493.pn.pn.pn.pn.pn.pn1748, %.loopexit1954 ], [ %1567, %1566 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %266) #9
  br label %1596

1596:                                             ; preds = %1595, %1564
  %.pn1493.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1493.pn.pn.pn.pn.pn.pn.pn, %1595 ], [ %1565, %1564 ]
  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
  %1597 = getelementptr inbounds i8, ptr %267, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1597) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %267) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %267) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %264) #9
  br label %1598

1598:                                             ; preds = %1596, %1562
  %.pn1493.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1493.pn.pn.pn.pn.pn.pn.pn.pn, %1596 ], [ %1563, %1562 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %265) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %265) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %264) #9
  br label %2669

1599:                                             ; preds = %1490
  %1600 = landingpad { ptr, i32 }
          cleanup
  br label %1623

.thread1749:                                      ; preds = %1497
  %1601 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %288) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %288) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %287) #9
  br label %.loopexit1951

1602:                                             ; preds = %1499
  %1603 = landingpad { ptr, i32 }
          cleanup
  br label %1618

1604:                                             ; preds = %1500
  %1605 = landingpad { ptr, i32 }
          cleanup
  br label %1617

1606:                                             ; preds = %1503
  %1607 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1952

1608:                                             ; preds = %1504
  %1609 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1952.loopexit

1610:                                             ; preds = %1505
  %1611 = landingpad { ptr, i32 }
          cleanup
  br label %1614

1612:                                             ; preds = %1506
  %1613 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %292) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %282) #9
  br label %1614

1614:                                             ; preds = %1612, %1610
  %.pn1504 = phi { ptr, i32 } [ %1613, %1612 ], [ %1611, %1610 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %285) #9
  br label %.loopexit1952.loopexit

.loopexit1952.loopexit:                           ; preds = %1614, %1608
  %.pn1504.pn = phi { ptr, i32 } [ %.pn1504, %1614 ], [ %1609, %1608 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %291) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %291) #9
  %1615 = getelementptr inbounds i8, ptr %286, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1615) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %286) #9
  br label %.loopexit1952

.loopexit1952:                                    ; preds = %.loopexit1952.loopexit, %1606
  %1616 = phi i1 [ false, %1606 ], [ true, %.loopexit1952.loopexit ]
  %.pn1504.pn.pn = phi { ptr, i32 } [ %1607, %1606 ], [ %.pn1504.pn, %.loopexit1952.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %289) #9
  br label %1617

1617:                                             ; preds = %.loopexit1952, %1604
  %.11112 = phi i1 [ %1616, %.loopexit1952 ], [ false, %1604 ]
  %.pn1504.pn.pn.pn = phi { ptr, i32 } [ %.pn1504.pn.pn, %.loopexit1952 ], [ %1605, %1604 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %290) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %290) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %289) #9
  br label %1618

1618:                                             ; preds = %1602, %1617
  %.21113 = phi i1 [ %.11112, %1617 ], [ false, %1602 ]
  %.01109 = phi ptr [ %1501, %1617 ], [ %286, %1602 ]
  %.pn1504.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1504.pn.pn.pn, %1617 ], [ %1603, %1602 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %287) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %288) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %288) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %287) #9
  %1619 = icmp eq ptr %286, %.01109
  %or.cond106 = select i1 %.21113, i1 true, i1 %1619
  br i1 %or.cond106, label %.loopexit1951, label %.preheader1950

.preheader1950:                                   ; preds = %1618, %.preheader1950
  %1620 = phi ptr [ %1621, %.preheader1950 ], [ %.01109, %1618 ]
  %1621 = getelementptr inbounds i8, ptr %1620, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1621) #9
  %1622 = icmp eq ptr %1621, %286
  br i1 %1622, label %.loopexit1951, label %.preheader1950

.loopexit1951:                                    ; preds = %.preheader1950, %.thread1749, %1618
  %.pn1504.pn.pn.pn.pn.pn1754 = phi { ptr, i32 } [ %1601, %.thread1749 ], [ %.pn1504.pn.pn.pn.pn, %1618 ], [ %.pn1504.pn.pn.pn.pn, %.preheader1950 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %286) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %283) #9
  br label %1623

1623:                                             ; preds = %.loopexit1951, %1599
  %.pn1504.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1504.pn.pn.pn.pn.pn1754, %.loopexit1951 ], [ %1600, %1599 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %284) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %284) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %283) #9
  br label %2669

1624:                                             ; preds = %1507
  %1625 = landingpad { ptr, i32 }
          cleanup
  br label %1648

.thread1755:                                      ; preds = %1511
  %1626 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %299) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %299) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %298) #9
  br label %.loopexit1948

1627:                                             ; preds = %1513
  %1628 = landingpad { ptr, i32 }
          cleanup
  br label %1643

1629:                                             ; preds = %1514
  %1630 = landingpad { ptr, i32 }
          cleanup
  br label %1642

1631:                                             ; preds = %1517
  %1632 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1949

1633:                                             ; preds = %1518
  %1634 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1949.loopexit

1635:                                             ; preds = %1519
  %1636 = landingpad { ptr, i32 }
          cleanup
  br label %1639

1637:                                             ; preds = %1520
  %1638 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %303) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %293) #9
  br label %1639

1639:                                             ; preds = %1637, %1635
  %.pn1512 = phi { ptr, i32 } [ %1638, %1637 ], [ %1636, %1635 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %296) #9
  br label %.loopexit1949.loopexit

.loopexit1949.loopexit:                           ; preds = %1639, %1633
  %.pn1512.pn = phi { ptr, i32 } [ %.pn1512, %1639 ], [ %1634, %1633 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %302) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %302) #9
  %1640 = getelementptr inbounds i8, ptr %297, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1640) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %297) #9
  br label %.loopexit1949

.loopexit1949:                                    ; preds = %.loopexit1949.loopexit, %1631
  %1641 = phi i1 [ false, %1631 ], [ true, %.loopexit1949.loopexit ]
  %.pn1512.pn.pn = phi { ptr, i32 } [ %1632, %1631 ], [ %.pn1512.pn, %.loopexit1949.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %300) #9
  br label %1642

1642:                                             ; preds = %.loopexit1949, %1629
  %.11118 = phi i1 [ %1641, %.loopexit1949 ], [ false, %1629 ]
  %.pn1512.pn.pn.pn = phi { ptr, i32 } [ %.pn1512.pn.pn, %.loopexit1949 ], [ %1630, %1629 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %301) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %301) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %300) #9
  br label %1643

1643:                                             ; preds = %1627, %1642
  %.21119 = phi i1 [ %.11118, %1642 ], [ false, %1627 ]
  %.01115 = phi ptr [ %1515, %1642 ], [ %297, %1627 ]
  %.pn1512.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1512.pn.pn.pn, %1642 ], [ %1628, %1627 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %298) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %299) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %299) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %298) #9
  %1644 = icmp eq ptr %297, %.01115
  %or.cond109 = select i1 %.21119, i1 true, i1 %1644
  br i1 %or.cond109, label %.loopexit1948, label %.preheader1947

.preheader1947:                                   ; preds = %1643, %.preheader1947
  %1645 = phi ptr [ %1646, %.preheader1947 ], [ %.01115, %1643 ]
  %1646 = getelementptr inbounds i8, ptr %1645, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1646) #9
  %1647 = icmp eq ptr %1646, %297
  br i1 %1647, label %.loopexit1948, label %.preheader1947

.loopexit1948:                                    ; preds = %.preheader1947, %.thread1755, %1643
  %.pn1512.pn.pn.pn.pn.pn1760 = phi { ptr, i32 } [ %1626, %.thread1755 ], [ %.pn1512.pn.pn.pn.pn, %1643 ], [ %.pn1512.pn.pn.pn.pn, %.preheader1947 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %297) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %294) #9
  br label %1648

1648:                                             ; preds = %.loopexit1948, %1624
  %.pn1512.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1512.pn.pn.pn.pn.pn1760, %.loopexit1948 ], [ %1625, %1624 ]
  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
  br label %2669

1649:                                             ; preds = %1521
  %1650 = landingpad { ptr, i32 }
          cleanup
  br label %1664

.thread1761:                                      ; preds = %1527
  %1651 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %312) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %312) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %311) #9
  br label %1663

1652:                                             ; preds = %1529
  %1653 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1945

1654:                                             ; preds = %1530
  %1655 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1945.loopexit

1656:                                             ; preds = %1532
  %1657 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1946

1658:                                             ; preds = %1533
  %1659 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1946.loopexit

1660:                                             ; preds = %1534
  %1661 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %305) #9
  br label %.loopexit1946.loopexit

.loopexit1946.loopexit:                           ; preds = %1660, %1658
  %.pn1520 = phi { ptr, i32 } [ %1661, %1660 ], [ %1659, %1658 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %314) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %314) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %306) #9
  br label %.loopexit1946

.loopexit1946:                                    ; preds = %.loopexit1946.loopexit, %1656
  %.pn1520.pn = phi { ptr, i32 } [ %1657, %1656 ], [ %.pn1520, %.loopexit1946.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %309) #9
  br label %.loopexit1945.loopexit

.loopexit1945.loopexit:                           ; preds = %.loopexit1946, %1654
  %.pn1520.pn.pn = phi { ptr, i32 } [ %.pn1520.pn, %.loopexit1946 ], [ %1655, %1654 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %313) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %313) #9
  %1662 = getelementptr inbounds i8, ptr %310, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1662) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %310) #9
  br label %.loopexit1945

.loopexit1945:                                    ; preds = %.loopexit1945.loopexit, %1652
  %.pn1520.pn.pn.pn = phi { ptr, i32 } [ %1653, %1652 ], [ %.pn1520.pn.pn, %.loopexit1945.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %311) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %312) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %312) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %311) #9
  br label %1663

1663:                                             ; preds = %.loopexit1945, %.thread1761
  %.pn1520.pn.pn.pn.pn1766 = phi { ptr, i32 } [ %1651, %.thread1761 ], [ %.pn1520.pn.pn.pn, %.loopexit1945 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %310) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %307) #9
  br label %1664

1664:                                             ; preds = %1663, %1649
  %.pn1520.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1520.pn.pn.pn.pn1766, %1663 ], [ %1650, %1649 ]
  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 @llvm.lifetime.end.p0(i64 24, ptr nonnull %305) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %304) #9
  br label %2669

1665:                                             ; preds = %1548, %1535
  %1666 = landingpad { ptr, i32 }
          catch ptr null
  br label %1681

1667:                                             ; preds = %1539
  %1668 = landingpad { ptr, i32 }
          catch ptr null
  br label %1678

1669:                                             ; preds = %1541
  %1670 = landingpad { ptr, i32 }
          catch ptr null
  br label %1677

1671:                                             ; preds = %1542
  %1672 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit1944

1673:                                             ; preds = %1543
  %1674 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit1944.loopexit

1675:                                             ; preds = %1544
  %1676 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %316) #9
  br label %.loopexit1944.loopexit

.loopexit1944.loopexit:                           ; preds = %1675, %1673
  %.pn1527 = phi { ptr, i32 } [ %1676, %1675 ], [ %1674, %1673 ]
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %323) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %323) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %317) #9
  br label %.loopexit1944

.loopexit1944:                                    ; preds = %.loopexit1944.loopexit, %1671
  %.pn1527.pn = phi { ptr, i32 } [ %1672, %1671 ], [ %.pn1527, %.loopexit1944.loopexit ]
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %322) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %322) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %318) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %319) #9
  br label %1677

1677:                                             ; preds = %.loopexit1944, %1669
  %.pn1527.pn.pn = phi { ptr, i32 } [ %.pn1527.pn, %.loopexit1944 ], [ %1670, %1669 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %320) #9
  br label %1678

1678:                                             ; preds = %1677, %1667
  %.pn1527.pn.pn.pn = phi { ptr, i32 } [ %.pn1527.pn.pn, %1677 ], [ %1668, %1667 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %321) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %321) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %320) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %319) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %318) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %317) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %315) #9
  br label %1681

1679:                                             ; preds = %1555, %1553, %1550
  %1680 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %324) #9
  br label %1681

1681:                                             ; preds = %1679, %1678, %1665
  %.pn1528 = phi { ptr, i32 } [ %1680, %1679 ], [ %1666, %1665 ], [ %.pn1527.pn.pn.pn, %1678 ]
  %.174 = extractvalue { ptr, i32 } %.pn1528, 0
  %1682 = call ptr @__cxa_begin_catch(ptr %.174) #9
  %1683 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1684 unwind label %1723

1684:                                             ; preds = %1681
  %1685 = load ptr, ptr %1683, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %325) #9
  %1686 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1687 unwind label %1725

1687:                                             ; preds = %1684
  %1688 = load ptr, ptr %1686, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %325, ptr noundef nonnull align 8 dereferenceable(30) %1688, i32 noundef 2427)
          to label %1689 unwind label %1725

1689:                                             ; preds = %1687
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1685, ptr noundef nonnull align 8 dereferenceable(30) %325, ptr noundef nonnull @.str.531)
          to label %1690 unwind label %1725

1690:                                             ; preds = %1689
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %325) #9
  invoke void @__cxa_end_catch()
          to label %1691 unwind label %745

1691:                                             ; preds = %1546, %1556, %1690
  %1692 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %1692)
          to label %1693 unwind label %745

1693:                                             ; preds = %1691
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %326) #9
  %1694 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  %1695 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %1696 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %327) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %328) #9
  %1697 = 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 %329) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %330) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %330) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %329, ptr noundef nonnull @.str.532, ptr noundef nonnull align 1 dereferenceable(1) %330)
          to label %1698 unwind label %1728

1698:                                             ; preds = %1693
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %332) #9
  %1699 = 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 %333) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %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 nonnull @.str.137, ptr noundef nonnull align 1 dereferenceable(1) %334)
          to label %1700 unwind label %.thread1767

1700:                                             ; preds = %1698
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %332, ptr noundef nonnull align 8 dereferenceable(33088) %1699, ptr noundef nonnull align 8 dereferenceable(32) %333)
          to label %1701 unwind label %1731

1701:                                             ; preds = %1700
  %1702 = getelementptr inbounds i8, ptr %332, i64 16
  %1703 = 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 %335) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %336) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %336) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %335, ptr noundef nonnull @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %336)
          to label %1704 unwind label %1733

1704:                                             ; preds = %1701
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1702, ptr noundef nonnull align 8 dereferenceable(33088) %1703, ptr noundef nonnull align 8 dereferenceable(32) %335)
          to label %1705 unwind label %1735

1705:                                             ; preds = %1704
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %337) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %337) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %331, ptr nonnull %332, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %337)
          to label %1706 unwind label %1737

1706:                                             ; preds = %1705
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %328, ptr noundef nonnull align 8 dereferenceable(33088) %1697, ptr noundef nonnull align 8 dereferenceable(32) %329, ptr noundef nonnull %331)
          to label %1707 unwind label %1739

1707:                                             ; preds = %1706
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %338) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %338) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %327, ptr nonnull %328, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %338)
          to label %1708 unwind label %1741

1708:                                             ; preds = %1707
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %326, ptr noundef nonnull align 8 dereferenceable(64) %1694, ptr noundef %1695, ptr noundef %1696, ptr noundef nonnull align 8 dereferenceable(24) %327, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %1709 unwind label %1743

1709:                                             ; preds = %1708
  %1710 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %326) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__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) %327) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %338) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %338) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %328) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %331) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %337) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %337) #9
  %1711 = getelementptr inbounds i8, ptr %332, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1711) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %332) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %335) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %336) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %336) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %335) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %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 nonnull %334) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %333) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %332) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %329) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %330) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %330) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %329) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %328) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %327) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %326) #9
  call void @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %339, ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  %1712 = call noundef zeroext i1 @_ZN25SuiteHtnGoalResolverTests6IsTrueESt10shared_ptrISt6vectorIS1_ISt4pairIS0_I7HtnTermES4_ESaIS5_EESaIS7_EEE(ptr noundef nonnull %339)
  %1713 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1712)
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %339) #9
  br i1 %1713, label %1768, label %1714

1714:                                             ; preds = %1709
  %1715 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1716 unwind label %1754

1716:                                             ; preds = %1714
  %1717 = load ptr, ptr %1715, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %340) #9
  %1718 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1719 unwind label %1756

1719:                                             ; preds = %1716
  %1720 = load ptr, ptr %1718, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %340, ptr noundef nonnull align 8 dereferenceable(30) %1720, i32 noundef 2432)
          to label %1721 unwind label %1756

1721:                                             ; preds = %1719
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1717, ptr noundef nonnull align 8 dereferenceable(30) %340, ptr noundef nonnull @.str.507)
          to label %1722 unwind label %1756

1722:                                             ; preds = %1721
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %340) #9
  br label %1768

1723:                                             ; preds = %1681
  %1724 = landingpad { ptr, i32 }
          cleanup
  br label %1727

1725:                                             ; preds = %1689, %1687, %1684
  %1726 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %325) #9
  br label %1727

1727:                                             ; preds = %1725, %1723
  %.pn1529 = phi { ptr, i32 } [ %1726, %1725 ], [ %1724, %1723 ]
  invoke void @__cxa_end_catch()
          to label %2669 unwind label %2676

1728:                                             ; preds = %1693
  %1729 = landingpad { ptr, i32 }
          cleanup
  br label %1753

.thread1767:                                      ; preds = %1698
  %1730 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %334) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %334) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %333) #9
  br label %.loopexit1941

1731:                                             ; preds = %1700
  %1732 = landingpad { ptr, i32 }
          cleanup
  br label %1748

1733:                                             ; preds = %1701
  %1734 = landingpad { ptr, i32 }
          cleanup
  br label %1747

1735:                                             ; preds = %1704
  %1736 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1942

1737:                                             ; preds = %1705
  %1738 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1942.loopexit

1739:                                             ; preds = %1706
  %1740 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1943

1741:                                             ; preds = %1707
  %1742 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1943.loopexit

1743:                                             ; preds = %1708
  %1744 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %327) #9
  br label %.loopexit1943.loopexit

.loopexit1943.loopexit:                           ; preds = %1743, %1741
  %.pn1531 = phi { ptr, i32 } [ %1744, %1743 ], [ %1742, %1741 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %338) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %338) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %328) #9
  br label %.loopexit1943

.loopexit1943:                                    ; preds = %.loopexit1943.loopexit, %1739
  %.pn1531.pn = phi { ptr, i32 } [ %1740, %1739 ], [ %.pn1531, %.loopexit1943.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %331) #9
  br label %.loopexit1942.loopexit

.loopexit1942.loopexit:                           ; preds = %.loopexit1943, %1737
  %.pn1531.pn.pn = phi { ptr, i32 } [ %.pn1531.pn, %.loopexit1943 ], [ %1738, %1737 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %337) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %337) #9
  %1745 = getelementptr inbounds i8, ptr %332, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1745) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %332) #9
  br label %.loopexit1942

.loopexit1942:                                    ; preds = %.loopexit1942.loopexit, %1735
  %1746 = phi i1 [ false, %1735 ], [ true, %.loopexit1942.loopexit ]
  %.pn1531.pn.pn.pn = phi { ptr, i32 } [ %1736, %1735 ], [ %.pn1531.pn.pn, %.loopexit1942.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %335) #9
  br label %1747

1747:                                             ; preds = %.loopexit1942, %1733
  %.11156 = phi i1 [ %1746, %.loopexit1942 ], [ false, %1733 ]
  %.pn1531.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1531.pn.pn.pn, %.loopexit1942 ], [ %1734, %1733 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %336) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %336) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %335) #9
  br label %1748

1748:                                             ; preds = %1731, %1747
  %.21157 = phi i1 [ %.11156, %1747 ], [ false, %1731 ]
  %.01140 = phi ptr [ %1702, %1747 ], [ %332, %1731 ]
  %.pn1531.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1531.pn.pn.pn.pn, %1747 ], [ %1732, %1731 ]
  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 nonnull %334) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %333) #9
  %1749 = icmp eq ptr %332, %.01140
  %or.cond124 = select i1 %.21157, i1 true, i1 %1749
  br i1 %or.cond124, label %.loopexit1941, label %.preheader1940

.preheader1940:                                   ; preds = %1748, %.preheader1940
  %1750 = phi ptr [ %1751, %.preheader1940 ], [ %.01140, %1748 ]
  %1751 = getelementptr inbounds i8, ptr %1750, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1751) #9
  %1752 = icmp eq ptr %1751, %332
  br i1 %1752, label %.loopexit1941, label %.preheader1940

.loopexit1941:                                    ; preds = %.preheader1940, %.thread1767, %1748
  %.pn1531.pn.pn.pn.pn.pn.pn1772 = phi { ptr, i32 } [ %1730, %.thread1767 ], [ %.pn1531.pn.pn.pn.pn.pn, %1748 ], [ %.pn1531.pn.pn.pn.pn.pn, %.preheader1940 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %332) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %329) #9
  br label %1753

1753:                                             ; preds = %.loopexit1941, %1728
  %.pn1531.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1531.pn.pn.pn.pn.pn.pn1772, %.loopexit1941 ], [ %1729, %1728 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %330) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %330) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %329) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %328) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %327) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %326) #9
  br label %2669

1754:                                             ; preds = %1714
  %1755 = landingpad { ptr, i32 }
          catch ptr null
  br label %1758

1756:                                             ; preds = %1721, %1719, %1716
  %1757 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %340) #9
  br label %1758

1758:                                             ; preds = %1756, %1754
  %.pn1540 = phi { ptr, i32 } [ %1757, %1756 ], [ %1755, %1754 ]
  %.184 = extractvalue { ptr, i32 } %.pn1540, 0
  %1759 = call ptr @__cxa_begin_catch(ptr %.184) #9
  %1760 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1761 unwind label %1815

1761:                                             ; preds = %1758
  %1762 = load ptr, ptr %1760, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %341) #9
  %1763 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1764 unwind label %1817

1764:                                             ; preds = %1761
  %1765 = load ptr, ptr %1763, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %341, ptr noundef nonnull align 8 dereferenceable(30) %1765, i32 noundef 2432)
          to label %1766 unwind label %1817

1766:                                             ; preds = %1764
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1762, ptr noundef nonnull align 8 dereferenceable(30) %341, ptr noundef nonnull @.str.508)
          to label %1767 unwind label %1817

1767:                                             ; preds = %1766
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %341) #9
  invoke void @__cxa_end_catch()
          to label %1768 unwind label %745

1768:                                             ; preds = %1709, %1722, %1767
  %1769 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %1769)
          to label %1770 unwind label %745

1770:                                             ; preds = %1768
  %1771 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %1772 = 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 %343) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %344) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %344) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %343, ptr noundef nonnull @.str.533, ptr noundef nonnull align 1 dereferenceable(1) %344)
          to label %1773 unwind label %1820

1773:                                             ; preds = %1770
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %346) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %346, ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  %1774 = getelementptr inbounds i8, ptr %346, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1774, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %347) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %347) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %345, ptr nonnull %346, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %347)
          to label %1775 unwind label %1822

1775:                                             ; preds = %1773
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %342, ptr noundef nonnull align 8 dereferenceable(33088) %1772, ptr noundef nonnull align 8 dereferenceable(32) %343, ptr noundef nonnull %345)
          to label %1776 unwind label %1824

1776:                                             ; preds = %1775
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %349) #9
  %1777 = 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 %350) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %351) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %351) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %350, ptr noundef nonnull @.str.136, ptr noundef nonnull align 1 dereferenceable(1) %351)
          to label %1778 unwind label %1826

1778:                                             ; preds = %1776
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %353) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %353, ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  %1779 = getelementptr inbounds i8, ptr %353, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1779, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %354) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %354) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %352, ptr nonnull %353, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %354)
          to label %1780 unwind label %1828

1780:                                             ; preds = %1778
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %349, ptr noundef nonnull align 8 dereferenceable(33088) %1777, ptr noundef nonnull align 8 dereferenceable(32) %350, ptr noundef nonnull %352)
          to label %1781 unwind label %1830

1781:                                             ; preds = %1780
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %355) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %355) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %348, ptr nonnull %349, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %355)
          to label %1782 unwind label %1832

1782:                                             ; preds = %1781
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %1771, ptr noundef nonnull %342, ptr noundef nonnull %348)
          to label %1783 unwind label %1834

1783:                                             ; preds = %1782
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %348) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %355) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %355) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %349) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %352) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %354) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %354) #9
  %1784 = getelementptr inbounds i8, ptr %353, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1784) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %353) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %353) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %350) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %351) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %351) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %350) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %349) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %342) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %345) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %347) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %347) #9
  %1785 = getelementptr inbounds i8, ptr %346, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1785) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %346) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %346) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %343) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %344) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %344) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %343) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %356) #9
  %1786 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  %1787 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %1788 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %357) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %358) #9
  %1789 = 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 %359) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %360) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %360) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %359, ptr noundef nonnull @.str.533, ptr noundef nonnull align 1 dereferenceable(1) %360)
          to label %1790 unwind label %1843

1790:                                             ; preds = %1783
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %362) #9
  %1791 = 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 %363) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %364) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %364) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %363, ptr noundef nonnull @.str.137, ptr noundef nonnull align 1 dereferenceable(1) %364)
          to label %1792 unwind label %.thread1773

1792:                                             ; preds = %1790
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %362, ptr noundef nonnull align 8 dereferenceable(33088) %1791, ptr noundef nonnull align 8 dereferenceable(32) %363)
          to label %1793 unwind label %1846

1793:                                             ; preds = %1792
  %1794 = getelementptr inbounds i8, ptr %362, i64 16
  %1795 = 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 %365) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %366) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %366) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %365, ptr noundef nonnull @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %366)
          to label %1796 unwind label %1848

1796:                                             ; preds = %1793
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1794, ptr noundef nonnull align 8 dereferenceable(33088) %1795, ptr noundef nonnull align 8 dereferenceable(32) %365)
          to label %1797 unwind label %1850

1797:                                             ; preds = %1796
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %367) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %367) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %361, ptr nonnull %362, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %367)
          to label %1798 unwind label %1852

1798:                                             ; preds = %1797
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %358, ptr noundef nonnull align 8 dereferenceable(33088) %1789, ptr noundef nonnull align 8 dereferenceable(32) %359, ptr noundef nonnull %361)
          to label %1799 unwind label %1854

1799:                                             ; preds = %1798
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %368) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %368) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %357, ptr nonnull %358, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %368)
          to label %1800 unwind label %1856

1800:                                             ; preds = %1799
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %356, ptr noundef nonnull align 8 dereferenceable(64) %1786, ptr noundef %1787, ptr noundef %1788, ptr noundef nonnull align 8 dereferenceable(24) %357, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %1801 unwind label %1858

1801:                                             ; preds = %1800
  %1802 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %356) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %356) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %357) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %368) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %368) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %358) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %361) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %367) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %367) #9
  %1803 = getelementptr inbounds i8, ptr %362, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1803) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %362) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %365) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %366) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %366) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %365) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %363) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %364) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %364) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %363) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %362) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %359) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %360) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %360) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %359) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %358) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %357) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %356) #9
  call void @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %369, ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  %1804 = call noundef zeroext i1 @_ZN25SuiteHtnGoalResolverTests6IsTrueESt10shared_ptrISt6vectorIS1_ISt4pairIS0_I7HtnTermES4_ESaIS5_EESaIS7_EEE(ptr noundef nonnull %369)
  %1805 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %1804)
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %369) #9
  br i1 %1805, label %1883, label %1806

1806:                                             ; preds = %1801
  %1807 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1808 unwind label %1869

1808:                                             ; preds = %1806
  %1809 = load ptr, ptr %1807, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %370) #9
  %1810 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1811 unwind label %1871

1811:                                             ; preds = %1808
  %1812 = load ptr, ptr %1810, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %370, ptr noundef nonnull align 8 dereferenceable(30) %1812, i32 noundef 2440)
          to label %1813 unwind label %1871

1813:                                             ; preds = %1811
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1809, ptr noundef nonnull align 8 dereferenceable(30) %370, ptr noundef nonnull @.str.507)
          to label %1814 unwind label %1871

1814:                                             ; preds = %1813
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %370) #9
  br label %1883

1815:                                             ; preds = %1758
  %1816 = landingpad { ptr, i32 }
          cleanup
  br label %1819

1817:                                             ; preds = %1766, %1764, %1761
  %1818 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %341) #9
  br label %1819

1819:                                             ; preds = %1817, %1815
  %.pn1541 = phi { ptr, i32 } [ %1818, %1817 ], [ %1816, %1815 ]
  invoke void @__cxa_end_catch()
          to label %2669 unwind label %2676

1820:                                             ; preds = %1770
  %1821 = landingpad { ptr, i32 }
          cleanup
  br label %1842

1822:                                             ; preds = %1773
  %1823 = landingpad { ptr, i32 }
          cleanup
  br label %1840

1824:                                             ; preds = %1775
  %1825 = landingpad { ptr, i32 }
          cleanup
  br label %1839

1826:                                             ; preds = %1776
  %1827 = landingpad { ptr, i32 }
          cleanup
  br label %1838

1828:                                             ; preds = %1778
  %1829 = landingpad { ptr, i32 }
          cleanup
  br label %1836

1830:                                             ; preds = %1780
  %1831 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1939

1832:                                             ; preds = %1781
  %1833 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1939.loopexit

1834:                                             ; preds = %1782
  %1835 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %348) #9
  br label %.loopexit1939.loopexit

.loopexit1939.loopexit:                           ; preds = %1834, %1832
  %.pn1543 = phi { ptr, i32 } [ %1835, %1834 ], [ %1833, %1832 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %355) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %355) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %349) #9
  br label %.loopexit1939

.loopexit1939:                                    ; preds = %.loopexit1939.loopexit, %1830
  %.pn1543.pn = phi { ptr, i32 } [ %1831, %1830 ], [ %.pn1543, %.loopexit1939.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %352) #9
  br label %1836

1836:                                             ; preds = %.loopexit1939, %1828
  %.pn1543.pn.pn = phi { ptr, i32 } [ %.pn1543.pn, %.loopexit1939 ], [ %1829, %1828 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %354) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %354) #9
  %1837 = getelementptr inbounds i8, ptr %353, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1837) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %353) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %353) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %350) #9
  br label %1838

1838:                                             ; preds = %1836, %1826
  %.pn1543.pn.pn.pn = phi { ptr, i32 } [ %.pn1543.pn.pn, %1836 ], [ %1827, %1826 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %351) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %351) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %350) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %349) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %342) #9
  br label %1839

1839:                                             ; preds = %1838, %1824
  %.pn1543.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1543.pn.pn.pn, %1838 ], [ %1825, %1824 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %345) #9
  br label %1840

1840:                                             ; preds = %1839, %1822
  %.pn1543.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1543.pn.pn.pn.pn, %1839 ], [ %1823, %1822 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %347) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %347) #9
  %1841 = getelementptr inbounds i8, ptr %346, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1841) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %346) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %346) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %343) #9
  br label %1842

1842:                                             ; preds = %1840, %1820
  %.pn1543.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1543.pn.pn.pn.pn.pn, %1840 ], [ %1821, %1820 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %344) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %344) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %343) #9
  br label %2669

1843:                                             ; preds = %1783
  %1844 = landingpad { ptr, i32 }
          cleanup
  br label %1868

.thread1773:                                      ; preds = %1790
  %1845 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %364) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %364) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %363) #9
  br label %.loopexit1936

1846:                                             ; preds = %1792
  %1847 = landingpad { ptr, i32 }
          cleanup
  br label %1863

1848:                                             ; preds = %1793
  %1849 = landingpad { ptr, i32 }
          cleanup
  br label %1862

1850:                                             ; preds = %1796
  %1851 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1937

1852:                                             ; preds = %1797
  %1853 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1937.loopexit

1854:                                             ; preds = %1798
  %1855 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1938

1856:                                             ; preds = %1799
  %1857 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1938.loopexit

1858:                                             ; preds = %1800
  %1859 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %357) #9
  br label %.loopexit1938.loopexit

.loopexit1938.loopexit:                           ; preds = %1858, %1856
  %.pn1551 = phi { ptr, i32 } [ %1859, %1858 ], [ %1857, %1856 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %368) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %368) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %358) #9
  br label %.loopexit1938

.loopexit1938:                                    ; preds = %.loopexit1938.loopexit, %1854
  %.pn1551.pn = phi { ptr, i32 } [ %1855, %1854 ], [ %.pn1551, %.loopexit1938.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %361) #9
  br label %.loopexit1937.loopexit

.loopexit1937.loopexit:                           ; preds = %.loopexit1938, %1852
  %.pn1551.pn.pn = phi { ptr, i32 } [ %.pn1551.pn, %.loopexit1938 ], [ %1853, %1852 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %367) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %367) #9
  %1860 = getelementptr inbounds i8, ptr %362, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1860) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %362) #9
  br label %.loopexit1937

.loopexit1937:                                    ; preds = %.loopexit1937.loopexit, %1850
  %1861 = phi i1 [ false, %1850 ], [ true, %.loopexit1937.loopexit ]
  %.pn1551.pn.pn.pn = phi { ptr, i32 } [ %1851, %1850 ], [ %.pn1551.pn.pn, %.loopexit1937.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %365) #9
  br label %1862

1862:                                             ; preds = %.loopexit1937, %1848
  %.11172 = phi i1 [ %1861, %.loopexit1937 ], [ false, %1848 ]
  %.pn1551.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1551.pn.pn.pn, %.loopexit1937 ], [ %1849, %1848 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %366) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %366) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %365) #9
  br label %1863

1863:                                             ; preds = %1846, %1862
  %.21173 = phi i1 [ %.11172, %1862 ], [ false, %1846 ]
  %.01169 = phi ptr [ %1794, %1862 ], [ %362, %1846 ]
  %.pn1551.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1551.pn.pn.pn.pn, %1862 ], [ %1847, %1846 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %363) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %364) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %364) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %363) #9
  %1864 = icmp eq ptr %362, %.01169
  %or.cond133 = select i1 %.21173, i1 true, i1 %1864
  br i1 %or.cond133, label %.loopexit1936, label %.preheader1935

.preheader1935:                                   ; preds = %1863, %.preheader1935
  %1865 = phi ptr [ %1866, %.preheader1935 ], [ %.01169, %1863 ]
  %1866 = getelementptr inbounds i8, ptr %1865, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1866) #9
  %1867 = icmp eq ptr %1866, %362
  br i1 %1867, label %.loopexit1936, label %.preheader1935

.loopexit1936:                                    ; preds = %.preheader1935, %.thread1773, %1863
  %.pn1551.pn.pn.pn.pn.pn.pn1778 = phi { ptr, i32 } [ %1845, %.thread1773 ], [ %.pn1551.pn.pn.pn.pn.pn, %1863 ], [ %.pn1551.pn.pn.pn.pn.pn, %.preheader1935 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %362) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %359) #9
  br label %1868

1868:                                             ; preds = %.loopexit1936, %1843
  %.pn1551.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1551.pn.pn.pn.pn.pn.pn1778, %.loopexit1936 ], [ %1844, %1843 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %360) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %360) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %359) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %358) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %357) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %356) #9
  br label %2669

1869:                                             ; preds = %1806
  %1870 = landingpad { ptr, i32 }
          catch ptr null
  br label %1873

1871:                                             ; preds = %1813, %1811, %1808
  %1872 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %370) #9
  br label %1873

1873:                                             ; preds = %1871, %1869
  %.pn1560 = phi { ptr, i32 } [ %1872, %1871 ], [ %1870, %1869 ]
  %.201 = extractvalue { ptr, i32 } %.pn1560, 0
  %1874 = call ptr @__cxa_begin_catch(ptr %.201) #9
  %1875 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %1876 unwind label %2024

1876:                                             ; preds = %1873
  %1877 = load ptr, ptr %1875, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %371) #9
  %1878 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %1879 unwind label %2026

1879:                                             ; preds = %1876
  %1880 = load ptr, ptr %1878, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %371, ptr noundef nonnull align 8 dereferenceable(30) %1880, i32 noundef 2440)
          to label %1881 unwind label %2026

1881:                                             ; preds = %1879
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %1877, ptr noundef nonnull align 8 dereferenceable(30) %371, ptr noundef nonnull @.str.508)
          to label %1882 unwind label %2026

1882:                                             ; preds = %1881
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %371) #9
  invoke void @__cxa_end_catch()
          to label %1883 unwind label %745

1883:                                             ; preds = %1801, %1814, %1882
  %1884 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %1884)
          to label %1885 unwind label %745

1885:                                             ; preds = %1883
  %1886 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %1887 = 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 %373) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %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 nonnull @.str.534, ptr noundef nonnull align 1 dereferenceable(1) %374)
          to label %1888 unwind label %2029

1888:                                             ; preds = %1885
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %376) #9
  %1889 = 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 %377) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %378) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %378) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %377, ptr noundef nonnull @.str.144, ptr noundef nonnull align 1 dereferenceable(1) %378)
          to label %1890 unwind label %.thread1779

1890:                                             ; preds = %1888
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %376, ptr noundef nonnull align 8 dereferenceable(33088) %1889, ptr noundef nonnull align 8 dereferenceable(32) %377)
          to label %1891 unwind label %2032

1891:                                             ; preds = %1890
  %1892 = getelementptr inbounds i8, ptr %376, i64 16
  %1893 = 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 %379) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %380) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %380) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %379, ptr noundef nonnull @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %380)
          to label %1894 unwind label %2034

1894:                                             ; preds = %1891
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1892, ptr noundef nonnull align 8 dereferenceable(33088) %1893, ptr noundef nonnull align 8 dereferenceable(32) %379)
          to label %1895 unwind label %2036

1895:                                             ; preds = %1894
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %381) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %381) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %375, ptr nonnull %376, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %381)
          to label %1896 unwind label %2038

1896:                                             ; preds = %1895
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %372, ptr noundef nonnull align 8 dereferenceable(33088) %1887, ptr noundef nonnull align 8 dereferenceable(32) %373, ptr noundef nonnull %375)
          to label %1897 unwind label %2040

1897:                                             ; preds = %1896
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %382, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %382) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %1886, ptr noundef nonnull %372, ptr noundef nonnull %382)
          to label %1898 unwind label %2042

1898:                                             ; preds = %1897
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %382) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %372) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %375) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %381) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %381) #9
  %1899 = getelementptr inbounds i8, ptr %376, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1899) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %376) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %379) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %380) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %380) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %379) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %377) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %378) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %378) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %377) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %376) #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 nonnull %374) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %373) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %383) #9
  %1900 = 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 %384) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %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 nonnull @.str.136, ptr noundef nonnull align 1 dereferenceable(1) %385)
          to label %1901 unwind label %2054

1901:                                             ; preds = %1898
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %387) #9
  %1902 = 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 %388) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %389) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %389) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %388, ptr noundef nonnull @.str.535, ptr noundef nonnull align 1 dereferenceable(1) %389)
          to label %1903 unwind label %.thread1785

1903:                                             ; preds = %1901
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %387, ptr noundef nonnull align 8 dereferenceable(33088) %1902, ptr noundef nonnull align 8 dereferenceable(32) %388)
          to label %1904 unwind label %2057

1904:                                             ; preds = %1903
  %1905 = getelementptr inbounds i8, ptr %387, i64 16
  %1906 = 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 %390) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %391) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %391) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %390, ptr noundef nonnull @.str.144, ptr noundef nonnull align 1 dereferenceable(1) %391)
          to label %1907 unwind label %2059

1907:                                             ; preds = %1904
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1905, ptr noundef nonnull align 8 dereferenceable(33088) %1906, ptr noundef nonnull align 8 dereferenceable(32) %390)
          to label %1908 unwind label %2061

1908:                                             ; preds = %1907
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %392) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %392) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %386, ptr nonnull %387, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %392)
          to label %1909 unwind label %2063

1909:                                             ; preds = %1908
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %383, ptr noundef nonnull align 8 dereferenceable(33088) %1900, ptr noundef nonnull align 8 dereferenceable(32) %384, ptr noundef nonnull %386)
          to label %1910 unwind label %2065

1910:                                             ; preds = %1909
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %386) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %392) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %392) #9
  %1911 = getelementptr inbounds i8, ptr %387, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1911) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %387) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %390) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %391) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %391) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %390) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %388) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %389) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %389) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %388) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %387) #9
  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 nonnull %385) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %384) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %393) #9
  %1912 = 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 %394) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %395) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %395) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %394, ptr noundef nonnull @.str.536, ptr noundef nonnull align 1 dereferenceable(1) %395)
          to label %1913 unwind label %2076

1913:                                             ; preds = %1910
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %397) #9
  %1914 = 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 %398) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %399) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %399) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %398, ptr noundef nonnull @.str.537, ptr noundef nonnull align 1 dereferenceable(1) %399)
          to label %1915 unwind label %.thread1799

1915:                                             ; preds = %1913
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %397, ptr noundef nonnull align 8 dereferenceable(33088) %1914, ptr noundef nonnull align 8 dereferenceable(32) %398)
          to label %1916 unwind label %2079

1916:                                             ; preds = %1915
  %1917 = getelementptr inbounds i8, ptr %397, i64 16
  %1918 = 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 %400) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %401) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %401) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %400, ptr noundef nonnull @.str.160, ptr noundef nonnull align 1 dereferenceable(1) %401)
          to label %1919 unwind label %2081

1919:                                             ; preds = %1916
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %403) #9
  %1920 = 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 %404) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %405) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %405) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %404, ptr noundef nonnull @.str.535, ptr noundef nonnull align 1 dereferenceable(1) %405)
          to label %1921 unwind label %.thread1791

1921:                                             ; preds = %1919
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %403, ptr noundef nonnull align 8 dereferenceable(33088) %1920, ptr noundef nonnull align 8 dereferenceable(32) %404)
          to label %1922 unwind label %2084

1922:                                             ; preds = %1921
  %1923 = getelementptr inbounds i8, ptr %403, i64 16
  %1924 = 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 %406) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %407) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %407) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %406, ptr noundef nonnull @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %407)
          to label %1925 unwind label %2086

1925:                                             ; preds = %1922
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1923, ptr noundef nonnull align 8 dereferenceable(33088) %1924, ptr noundef nonnull align 8 dereferenceable(32) %406)
          to label %1926 unwind label %2088

1926:                                             ; preds = %1925
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %408) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %408) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %402, ptr nonnull %403, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %408)
          to label %1927 unwind label %2090

1927:                                             ; preds = %1926
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1917, ptr noundef nonnull align 8 dereferenceable(33088) %1918, ptr noundef nonnull align 8 dereferenceable(32) %400, ptr noundef nonnull %402)
          to label %1928 unwind label %2092

1928:                                             ; preds = %1927
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %409) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %409) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %396, ptr nonnull %397, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %409)
          to label %1929 unwind label %2094

1929:                                             ; preds = %1928
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %393, ptr noundef nonnull align 8 dereferenceable(33088) %1912, ptr noundef nonnull align 8 dereferenceable(32) %394, ptr noundef nonnull %396)
          to label %1930 unwind label %2096

1930:                                             ; preds = %1929
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %396) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %409) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %409) #9
  %1931 = getelementptr inbounds i8, ptr %397, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1931) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %397) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %402) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %408) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %408) #9
  %1932 = getelementptr inbounds i8, ptr %403, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1932) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %403) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %406) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %407) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %407) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %406) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %404) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %405) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %405) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %404) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %403) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %400) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %401) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %401) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %400) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %398) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %399) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %399) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %398) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %397) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %394) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %395) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %395) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %394) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %410) #9
  %1933 = 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 %411) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %412) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %412) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %411, ptr noundef nonnull @.str.534, ptr noundef nonnull align 1 dereferenceable(1) %412)
          to label %1934 unwind label %2115

1934:                                             ; preds = %1930
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %414) #9
  %1935 = 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 %415) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %416) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %416) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %415, ptr noundef nonnull @.str.537, ptr noundef nonnull align 1 dereferenceable(1) %416)
          to label %1936 unwind label %.thread1805

1936:                                             ; preds = %1934
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %414, ptr noundef nonnull align 8 dereferenceable(33088) %1935, ptr noundef nonnull align 8 dereferenceable(32) %415)
          to label %1937 unwind label %2118

1937:                                             ; preds = %1936
  %1938 = getelementptr inbounds i8, ptr %414, i64 16
  %1939 = 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 %417) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %418) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %418) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %417, ptr noundef nonnull @.str.538, ptr noundef nonnull align 1 dereferenceable(1) %418)
          to label %1940 unwind label %2120

1940:                                             ; preds = %1937
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1938, ptr noundef nonnull align 8 dereferenceable(33088) %1939, ptr noundef nonnull align 8 dereferenceable(32) %417)
          to label %1941 unwind label %2122

1941:                                             ; preds = %1940
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %419) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %419) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %413, ptr nonnull %414, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %419)
          to label %1942 unwind label %2124

1942:                                             ; preds = %1941
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %410, ptr noundef nonnull align 8 dereferenceable(33088) %1933, ptr noundef nonnull align 8 dereferenceable(32) %411, ptr noundef nonnull %413)
          to label %1943 unwind label %2126

1943:                                             ; preds = %1942
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %413) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %419) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %419) #9
  %1944 = getelementptr inbounds i8, ptr %414, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1944) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %414) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %417) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %418) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %418) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %417) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %415) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %416) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %416) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %415) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %414) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %411) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %412) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %412) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %411) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %420) #9
  %1945 = 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 %421) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %422) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %422) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %421, ptr noundef nonnull @.str.536, ptr noundef nonnull align 1 dereferenceable(1) %422)
          to label %1946 unwind label %2137

1946:                                             ; preds = %1943
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %424) #9
  %1947 = 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 %425) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %426) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %426) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %425, ptr noundef nonnull @.str.539, ptr noundef nonnull align 1 dereferenceable(1) %426)
          to label %1948 unwind label %.thread1819

1948:                                             ; preds = %1946
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %424, ptr noundef nonnull align 8 dereferenceable(33088) %1947, ptr noundef nonnull align 8 dereferenceable(32) %425)
          to label %1949 unwind label %2140

1949:                                             ; preds = %1948
  %1950 = getelementptr inbounds i8, ptr %424, i64 16
  %1951 = 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 %427) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %428) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %428) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %427, ptr noundef nonnull @.str.160, ptr noundef nonnull align 1 dereferenceable(1) %428)
          to label %1952 unwind label %2142

1952:                                             ; preds = %1949
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %430) #9
  %1953 = 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 %431) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %432) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %432) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %431, ptr noundef nonnull @.str.535, ptr noundef nonnull align 1 dereferenceable(1) %432)
          to label %1954 unwind label %.thread1811

1954:                                             ; preds = %1952
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %430, ptr noundef nonnull align 8 dereferenceable(33088) %1953, ptr noundef nonnull align 8 dereferenceable(32) %431)
          to label %1955 unwind label %2145

1955:                                             ; preds = %1954
  %1956 = getelementptr inbounds i8, ptr %430, i64 16
  %1957 = 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 %433) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %434) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %434) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %433, ptr noundef nonnull @.str.538, ptr noundef nonnull align 1 dereferenceable(1) %434)
          to label %1958 unwind label %2147

1958:                                             ; preds = %1955
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1956, ptr noundef nonnull align 8 dereferenceable(33088) %1957, ptr noundef nonnull align 8 dereferenceable(32) %433)
          to label %1959 unwind label %2149

1959:                                             ; preds = %1958
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %435) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %435) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %429, ptr nonnull %430, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %435)
          to label %1960 unwind label %2151

1960:                                             ; preds = %1959
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1950, ptr noundef nonnull align 8 dereferenceable(33088) %1951, ptr noundef nonnull align 8 dereferenceable(32) %427, ptr noundef nonnull %429)
          to label %1961 unwind label %2153

1961:                                             ; preds = %1960
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %436) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %436) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %423, ptr nonnull %424, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %436)
          to label %1962 unwind label %2155

1962:                                             ; preds = %1961
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %420, ptr noundef nonnull align 8 dereferenceable(33088) %1945, ptr noundef nonnull align 8 dereferenceable(32) %421, ptr noundef nonnull %423)
          to label %1963 unwind label %2157

1963:                                             ; preds = %1962
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %423) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %436) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %436) #9
  %1964 = getelementptr inbounds i8, ptr %424, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1964) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %424) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %429) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %435) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %435) #9
  %1965 = getelementptr inbounds i8, ptr %430, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1965) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %430) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %433) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %434) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %434) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %433) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %431) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %432) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %432) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %431) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %430) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %427) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %428) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %428) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %427) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %425) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %426) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %426) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %425) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %424) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %421) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %422) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %422) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %421) #9
  %1966 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %1967 = 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 %438) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %439) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %439) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %438, ptr noundef nonnull @.str.534, ptr noundef nonnull align 1 dereferenceable(1) %439)
          to label %1968 unwind label %2176

1968:                                             ; preds = %1963
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %441) #9
  %1969 = 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 %442) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %443) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %443) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %442, ptr noundef nonnull @.str.535, ptr noundef nonnull align 1 dereferenceable(1) %443)
          to label %1970 unwind label %.thread1825

1970:                                             ; preds = %1968
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %441, ptr noundef nonnull align 8 dereferenceable(33088) %1969, ptr noundef nonnull align 8 dereferenceable(32) %442)
          to label %1971 unwind label %2179

1971:                                             ; preds = %1970
  %1972 = getelementptr inbounds i8, ptr %441, i64 16
  %1973 = 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 %444) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %445) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %445) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %444, ptr noundef nonnull @.str.539, ptr noundef nonnull align 1 dereferenceable(1) %445)
          to label %1974 unwind label %2181

1974:                                             ; preds = %1971
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1972, ptr noundef nonnull align 8 dereferenceable(33088) %1973, ptr noundef nonnull align 8 dereferenceable(32) %444)
          to label %1975 unwind label %2183

1975:                                             ; preds = %1974
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %446) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %446) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %440, ptr nonnull %441, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %446)
          to label %1976 unwind label %2185

1976:                                             ; preds = %1975
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %437, ptr noundef nonnull align 8 dereferenceable(33088) %1967, ptr noundef nonnull align 8 dereferenceable(32) %438, ptr noundef nonnull %440)
          to label %1977 unwind label %2187

1977:                                             ; preds = %1976
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %448) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %448, ptr noundef nonnull align 8 dereferenceable(16) %383) #9
  %1978 = getelementptr inbounds i8, ptr %448, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1978, ptr noundef nonnull align 8 dereferenceable(16) %393) #9
  %1979 = getelementptr inbounds i8, ptr %448, i64 32
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1979, ptr noundef nonnull align 8 dereferenceable(16) %410) #9
  %1980 = getelementptr inbounds i8, ptr %448, i64 48
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1980, ptr noundef nonnull align 8 dereferenceable(16) %420) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %449) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %449) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %447, ptr nonnull %448, i64 4, ptr noundef nonnull align 1 dereferenceable(1) %449)
          to label %1981 unwind label %2189

1981:                                             ; preds = %1977
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %1966, ptr noundef nonnull %437, ptr noundef nonnull %447)
          to label %1982 unwind label %2191

1982:                                             ; preds = %1981
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %447) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %449) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %449) #9
  %1983 = getelementptr inbounds i8, ptr %448, i64 48
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1983) #9
  %1984 = getelementptr inbounds i8, ptr %448, i64 32
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1984) #9
  %1985 = getelementptr inbounds i8, ptr %448, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1985) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %448) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %448) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %437) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %440) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %446) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %446) #9
  %1986 = getelementptr inbounds i8, ptr %441, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1986) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %441) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %444) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %445) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %445) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %444) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %442) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %443) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %443) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %442) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %441) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %438) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %439) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %439) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %438) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %450) #9
  %1987 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  %1988 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %1989 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %451) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %452) #9
  %1990 = 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 %453) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %454) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %454) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %453, ptr noundef nonnull @.str.534, ptr noundef nonnull align 1 dereferenceable(1) %454)
          to label %1991 unwind label %2207

1991:                                             ; preds = %1982
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %456) #9
  %1992 = 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 %457) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %458) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %458) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %457, ptr noundef nonnull @.str.137, ptr noundef nonnull align 1 dereferenceable(1) %458)
          to label %1993 unwind label %.thread1831

1993:                                             ; preds = %1991
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %456, ptr noundef nonnull align 8 dereferenceable(33088) %1992, ptr noundef nonnull align 8 dereferenceable(32) %457)
          to label %1994 unwind label %2210

1994:                                             ; preds = %1993
  %1995 = getelementptr inbounds i8, ptr %456, i64 16
  %1996 = 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 %459) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %460) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %460) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %459, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %460)
          to label %1997 unwind label %2212

1997:                                             ; preds = %1994
  invoke void @_ZN14HtnTermFactory14CreateVariableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %1995, ptr noundef nonnull align 8 dereferenceable(33088) %1996, ptr noundef nonnull align 8 dereferenceable(32) %459)
          to label %1998 unwind label %2214

1998:                                             ; preds = %1997
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %461) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %461) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %455, ptr nonnull %456, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %461)
          to label %1999 unwind label %2216

1999:                                             ; preds = %1998
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %452, ptr noundef nonnull align 8 dereferenceable(33088) %1990, ptr noundef nonnull align 8 dereferenceable(32) %453, ptr noundef nonnull %455)
          to label %2000 unwind label %2218

2000:                                             ; preds = %1999
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %462) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %462) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %451, ptr nonnull %452, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %462)
          to label %2001 unwind label %2220

2001:                                             ; preds = %2000
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %450, ptr noundef nonnull align 8 dereferenceable(64) %1987, ptr noundef %1988, ptr noundef %1989, ptr noundef nonnull align 8 dereferenceable(24) %451, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %2002 unwind label %2222

2002:                                             ; preds = %2001
  %2003 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %450) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %450) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %451) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %462) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %462) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %452) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %455) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %461) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %461) #9
  %2004 = getelementptr inbounds i8, ptr %456, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2004) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %456) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %459) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %460) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %460) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %459) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %457) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %458) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %458) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %457) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %456) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %453) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %454) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %454) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %453) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %452) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %451) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %450) #9
  %2005 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ERKS8_(ptr noundef nonnull align 8 dereferenceable(24) %463, ptr noundef nonnull align 8 dereferenceable(24) %2005)
          to label %2006 unwind label %2233

2006:                                             ; preds = %2002
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %465) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %466) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %467) #9
  %2007 = 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 %468) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %469) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %469) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %468, ptr noundef nonnull @.str.137, ptr noundef nonnull align 1 dereferenceable(1) %469)
          to label %2008 unwind label %2235

2008:                                             ; preds = %2006
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %467, ptr noundef nonnull align 8 dereferenceable(33088) %2007, ptr noundef nonnull align 8 dereferenceable(32) %468)
          to label %2009 unwind label %2237

2009:                                             ; preds = %2008
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %466, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %467)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %470) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %470) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %465, ptr nonnull %466, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %470)
          to label %2010 unwind label %2239

2010:                                             ; preds = %2009
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %471) #9
  call void @_ZNSaISt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %471) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ESt16initializer_listIS6_ERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %464, ptr nonnull %465, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %471)
          to label %2011 unwind label %2241

2011:                                             ; preds = %2010
  %2012 = invoke noundef zeroext i1 @_Z14CheckSolutionsSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EES8_(ptr noundef nonnull %463, ptr noundef nonnull %464)
          to label %2013 unwind label %2243

2013:                                             ; preds = %2011
  %2014 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %2012)
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %464) #9
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %471) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %471) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %465) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %470) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %470) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %466) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %467) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %468) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %469) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %469) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %468) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %467) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %466) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %465) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %463) #9
  br i1 %2014, label %2259, label %2015

2015:                                             ; preds = %2013
  %2016 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2017 unwind label %2233

2017:                                             ; preds = %2015
  %2018 = load ptr, ptr %2016, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %472) #9
  %2019 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2020 unwind label %2247

2020:                                             ; preds = %2017
  %2021 = load ptr, ptr %2019, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %472, ptr noundef nonnull align 8 dereferenceable(30) %2021, i32 noundef 2462)
          to label %2022 unwind label %2247

2022:                                             ; preds = %2020
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2018, ptr noundef nonnull align 8 dereferenceable(30) %472, ptr noundef nonnull @.str.540)
          to label %2023 unwind label %2247

2023:                                             ; preds = %2022
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %472) #9
  br label %2259

2024:                                             ; preds = %1873
  %2025 = landingpad { ptr, i32 }
          cleanup
  br label %2028

2026:                                             ; preds = %1881, %1879, %1876
  %2027 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %371) #9
  br label %2028

2028:                                             ; preds = %2026, %2024
  %.pn1561 = phi { ptr, i32 } [ %2027, %2026 ], [ %2025, %2024 ]
  invoke void @__cxa_end_catch()
          to label %2669 unwind label %2676

2029:                                             ; preds = %1885
  %2030 = landingpad { ptr, i32 }
          cleanup
  br label %2053

.thread1779:                                      ; preds = %1888
  %2031 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %378) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %378) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %377) #9
  br label %.loopexit1933

2032:                                             ; preds = %1890
  %2033 = landingpad { ptr, i32 }
          cleanup
  br label %2048

2034:                                             ; preds = %1891
  %2035 = landingpad { ptr, i32 }
          cleanup
  br label %2047

2036:                                             ; preds = %1894
  %2037 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1934

2038:                                             ; preds = %1895
  %2039 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1934.loopexit

2040:                                             ; preds = %1896
  %2041 = landingpad { ptr, i32 }
          cleanup
  br label %2044

2042:                                             ; preds = %1897
  %2043 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %382) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %372) #9
  br label %2044

2044:                                             ; preds = %2042, %2040
  %.pn1563 = phi { ptr, i32 } [ %2043, %2042 ], [ %2041, %2040 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %375) #9
  br label %.loopexit1934.loopexit

.loopexit1934.loopexit:                           ; preds = %2044, %2038
  %.pn1563.pn = phi { ptr, i32 } [ %.pn1563, %2044 ], [ %2039, %2038 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %381) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %381) #9
  %2045 = getelementptr inbounds i8, ptr %376, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2045) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %376) #9
  br label %.loopexit1934

.loopexit1934:                                    ; preds = %.loopexit1934.loopexit, %2036
  %2046 = phi i1 [ false, %2036 ], [ true, %.loopexit1934.loopexit ]
  %.pn1563.pn.pn = phi { ptr, i32 } [ %2037, %2036 ], [ %.pn1563.pn, %.loopexit1934.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %379) #9
  br label %2047

2047:                                             ; preds = %.loopexit1934, %2034
  %.11191 = phi i1 [ %2046, %.loopexit1934 ], [ false, %2034 ]
  %.pn1563.pn.pn.pn = phi { ptr, i32 } [ %.pn1563.pn.pn, %.loopexit1934 ], [ %2035, %2034 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %380) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %380) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %379) #9
  br label %2048

2048:                                             ; preds = %2032, %2047
  %.21192 = phi i1 [ %.11191, %2047 ], [ false, %2032 ]
  %.01182 = phi ptr [ %1892, %2047 ], [ %376, %2032 ]
  %.pn1563.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1563.pn.pn.pn, %2047 ], [ %2033, %2032 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %377) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %378) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %378) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %377) #9
  %2049 = icmp eq ptr %376, %.01182
  %or.cond139 = select i1 %.21192, i1 true, i1 %2049
  br i1 %or.cond139, label %.loopexit1933, label %.preheader1932

.preheader1932:                                   ; preds = %2048, %.preheader1932
  %2050 = phi ptr [ %2051, %.preheader1932 ], [ %.01182, %2048 ]
  %2051 = getelementptr inbounds i8, ptr %2050, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2051) #9
  %2052 = icmp eq ptr %2051, %376
  br i1 %2052, label %.loopexit1933, label %.preheader1932

.loopexit1933:                                    ; preds = %.preheader1932, %.thread1779, %2048
  %.pn1563.pn.pn.pn.pn.pn1784 = phi { ptr, i32 } [ %2031, %.thread1779 ], [ %.pn1563.pn.pn.pn.pn, %2048 ], [ %.pn1563.pn.pn.pn.pn, %.preheader1932 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %376) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %373) #9
  br label %2053

2053:                                             ; preds = %.loopexit1933, %2029
  %.pn1563.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1563.pn.pn.pn.pn.pn1784, %.loopexit1933 ], [ %2030, %2029 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %374) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %374) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %373) #9
  br label %2669

2054:                                             ; preds = %1898
  %2055 = landingpad { ptr, i32 }
          cleanup
  br label %2075

.thread1785:                                      ; preds = %1901
  %2056 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %389) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %389) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %388) #9
  br label %.loopexit1930

2057:                                             ; preds = %1903
  %2058 = landingpad { ptr, i32 }
          cleanup
  br label %2070

2059:                                             ; preds = %1904
  %2060 = landingpad { ptr, i32 }
          cleanup
  br label %2069

2061:                                             ; preds = %1907
  %2062 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1931

2063:                                             ; preds = %1908
  %2064 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1931.loopexit

2065:                                             ; preds = %1909
  %2066 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %386) #9
  br label %.loopexit1931.loopexit

.loopexit1931.loopexit:                           ; preds = %2065, %2063
  %.pn1571 = phi { ptr, i32 } [ %2066, %2065 ], [ %2064, %2063 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %392) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %392) #9
  %2067 = getelementptr inbounds i8, ptr %387, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2067) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %387) #9
  br label %.loopexit1931

.loopexit1931:                                    ; preds = %.loopexit1931.loopexit, %2061
  %2068 = phi i1 [ false, %2061 ], [ true, %.loopexit1931.loopexit ]
  %.pn1571.pn = phi { ptr, i32 } [ %2062, %2061 ], [ %.pn1571, %.loopexit1931.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %390) #9
  br label %2069

2069:                                             ; preds = %.loopexit1931, %2059
  %.11212 = phi i1 [ %2068, %.loopexit1931 ], [ false, %2059 ]
  %.pn1571.pn.pn = phi { ptr, i32 } [ %.pn1571.pn, %.loopexit1931 ], [ %2060, %2059 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %391) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %391) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %390) #9
  br label %2070

2070:                                             ; preds = %2057, %2069
  %.21213 = phi i1 [ %.11212, %2069 ], [ false, %2057 ]
  %.01194 = phi ptr [ %1905, %2069 ], [ %387, %2057 ]
  %.pn1571.pn.pn.pn = phi { ptr, i32 } [ %.pn1571.pn.pn, %2069 ], [ %2058, %2057 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %388) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %389) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %389) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %388) #9
  %2071 = icmp eq ptr %387, %.01194
  %or.cond142 = select i1 %.21213, i1 true, i1 %2071
  br i1 %or.cond142, label %.loopexit1930, label %.preheader1929

.preheader1929:                                   ; preds = %2070, %.preheader1929
  %2072 = phi ptr [ %2073, %.preheader1929 ], [ %.01194, %2070 ]
  %2073 = getelementptr inbounds i8, ptr %2072, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2073) #9
  %2074 = icmp eq ptr %2073, %387
  br i1 %2074, label %.loopexit1930, label %.preheader1929

.loopexit1930:                                    ; preds = %.preheader1929, %.thread1785, %2070
  %.pn1571.pn.pn.pn.pn1790 = phi { ptr, i32 } [ %2056, %.thread1785 ], [ %.pn1571.pn.pn.pn, %2070 ], [ %.pn1571.pn.pn.pn, %.preheader1929 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %387) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %384) #9
  br label %2075

2075:                                             ; preds = %.loopexit1930, %2054
  %.pn1571.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1571.pn.pn.pn.pn1790, %.loopexit1930 ], [ %2055, %2054 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %385) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %385) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %384) #9
  br label %2668

2076:                                             ; preds = %1910
  %2077 = landingpad { ptr, i32 }
          cleanup
  br label %2114

.thread1799:                                      ; preds = %1913
  %2078 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %399) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %399) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %398) #9
  br label %.loopexit1924

2079:                                             ; preds = %1915
  %2080 = landingpad { ptr, i32 }
          cleanup
  br label %2109

2081:                                             ; preds = %1916
  %2082 = landingpad { ptr, i32 }
          cleanup
  br label %2108

.thread1791:                                      ; preds = %1919
  %2083 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %405) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %405) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %404) #9
  br label %.loopexit1926

2084:                                             ; preds = %1921
  %2085 = landingpad { ptr, i32 }
          cleanup
  br label %2103

2086:                                             ; preds = %1922
  %2087 = landingpad { ptr, i32 }
          cleanup
  br label %2102

2088:                                             ; preds = %1925
  %2089 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1927

2090:                                             ; preds = %1926
  %2091 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1927.loopexit

2092:                                             ; preds = %1927
  %2093 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1928

2094:                                             ; preds = %1928
  %2095 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1928.loopexit

2096:                                             ; preds = %1929
  %2097 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %396) #9
  br label %.loopexit1928.loopexit

.loopexit1928.loopexit:                           ; preds = %2096, %2094
  %.pn1578 = phi { ptr, i32 } [ %2097, %2096 ], [ %2095, %2094 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %409) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %409) #9
  %2098 = getelementptr inbounds i8, ptr %397, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2098) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %397) #9
  br label %.loopexit1928

.loopexit1928:                                    ; preds = %.loopexit1928.loopexit, %2092
  %2099 = phi i1 [ false, %2092 ], [ true, %.loopexit1928.loopexit ]
  %.pn1578.pn = phi { ptr, i32 } [ %2093, %2092 ], [ %.pn1578, %.loopexit1928.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %402) #9
  br label %.loopexit1927.loopexit

.loopexit1927.loopexit:                           ; preds = %.loopexit1928, %2090
  %.11232 = phi i1 [ %2099, %.loopexit1928 ], [ false, %2090 ]
  %.pn1578.pn.pn = phi { ptr, i32 } [ %.pn1578.pn, %.loopexit1928 ], [ %2091, %2090 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %408) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %408) #9
  %2100 = getelementptr inbounds i8, ptr %403, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2100) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %403) #9
  br label %.loopexit1927

.loopexit1927:                                    ; preds = %.loopexit1927.loopexit, %2088
  %.21233 = phi i1 [ false, %2088 ], [ %.11232, %.loopexit1927.loopexit ]
  %2101 = phi i1 [ false, %2088 ], [ true, %.loopexit1927.loopexit ]
  %.pn1578.pn.pn.pn = phi { ptr, i32 } [ %2089, %2088 ], [ %.pn1578.pn.pn, %.loopexit1927.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %406) #9
  br label %2102

2102:                                             ; preds = %.loopexit1927, %2086
  %.31234 = phi i1 [ %.21233, %.loopexit1927 ], [ false, %2086 ]
  %.11222 = phi i1 [ %2101, %.loopexit1927 ], [ false, %2086 ]
  %.pn1578.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1578.pn.pn.pn, %.loopexit1927 ], [ %2087, %2086 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %407) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %407) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %406) #9
  br label %2103

2103:                                             ; preds = %2084, %2102
  %.41235 = phi i1 [ %.31234, %2102 ], [ false, %2084 ]
  %.21223 = phi i1 [ %.11222, %2102 ], [ false, %2084 ]
  %.01219 = phi ptr [ %1923, %2102 ], [ %403, %2084 ]
  %.pn1578.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1578.pn.pn.pn.pn, %2102 ], [ %2085, %2084 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %404) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %405) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %405) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %404) #9
  %2104 = icmp eq ptr %403, %.01219
  %or.cond145 = select i1 %.21223, i1 true, i1 %2104
  br i1 %or.cond145, label %.loopexit1926, label %.preheader1925

.preheader1925:                                   ; preds = %2103, %.preheader1925
  %2105 = phi ptr [ %2106, %.preheader1925 ], [ %.01219, %2103 ]
  %2106 = getelementptr inbounds i8, ptr %2105, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2106) #9
  %2107 = icmp eq ptr %2106, %403
  br i1 %2107, label %.loopexit1926, label %.preheader1925

.loopexit1926:                                    ; preds = %.preheader1925, %.thread1791, %2103
  %.pn1578.pn.pn.pn.pn.pn.pn1798 = phi { ptr, i32 } [ %2083, %.thread1791 ], [ %.pn1578.pn.pn.pn.pn.pn, %2103 ], [ %.pn1578.pn.pn.pn.pn.pn, %.preheader1925 ]
  %.512361797 = phi i1 [ false, %.thread1791 ], [ %.41235, %2103 ], [ %.41235, %.preheader1925 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %403) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %400) #9
  br label %2108

2108:                                             ; preds = %.loopexit1926, %2081
  %.61237 = phi i1 [ %.512361797, %.loopexit1926 ], [ false, %2081 ]
  %.pn1578.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1578.pn.pn.pn.pn.pn.pn1798, %.loopexit1926 ], [ %2082, %2081 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %401) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %401) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %400) #9
  br label %2109

2109:                                             ; preds = %2079, %2108
  %.71238 = phi i1 [ %.61237, %2108 ], [ false, %2079 ]
  %.01215 = phi ptr [ %1917, %2108 ], [ %397, %2079 ]
  %.pn1578.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1578.pn.pn.pn.pn.pn.pn.pn, %2108 ], [ %2080, %2079 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %398) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %399) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %399) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %398) #9
  %2110 = icmp eq ptr %397, %.01215
  %or.cond148 = select i1 %.71238, i1 true, i1 %2110
  br i1 %or.cond148, label %.loopexit1924, label %.preheader1923

.preheader1923:                                   ; preds = %2109, %.preheader1923
  %2111 = phi ptr [ %2112, %.preheader1923 ], [ %.01215, %2109 ]
  %2112 = getelementptr inbounds i8, ptr %2111, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2112) #9
  %2113 = icmp eq ptr %2112, %397
  br i1 %2113, label %.loopexit1924, label %.preheader1923

.loopexit1924:                                    ; preds = %.preheader1923, %.thread1799, %2109
  %.pn1578.pn.pn.pn.pn.pn.pn.pn.pn.pn1804 = phi { ptr, i32 } [ %2078, %.thread1799 ], [ %.pn1578.pn.pn.pn.pn.pn.pn.pn.pn, %2109 ], [ %.pn1578.pn.pn.pn.pn.pn.pn.pn.pn, %.preheader1923 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %397) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %394) #9
  br label %2114

2114:                                             ; preds = %.loopexit1924, %2076
  %.pn1578.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1578.pn.pn.pn.pn.pn.pn.pn.pn.pn1804, %.loopexit1924 ], [ %2077, %2076 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %395) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %395) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %394) #9
  br label %2667

2115:                                             ; preds = %1930
  %2116 = landingpad { ptr, i32 }
          cleanup
  br label %2136

.thread1805:                                      ; preds = %1934
  %2117 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %416) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %416) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %415) #9
  br label %.loopexit1921

2118:                                             ; preds = %1936
  %2119 = landingpad { ptr, i32 }
          cleanup
  br label %2131

2120:                                             ; preds = %1937
  %2121 = landingpad { ptr, i32 }
          cleanup
  br label %2130

2122:                                             ; preds = %1940
  %2123 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1922

2124:                                             ; preds = %1941
  %2125 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1922.loopexit

2126:                                             ; preds = %1942
  %2127 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %413) #9
  br label %.loopexit1922.loopexit

.loopexit1922.loopexit:                           ; preds = %2126, %2124
  %.pn1590 = phi { ptr, i32 } [ %2127, %2126 ], [ %2125, %2124 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %419) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %419) #9
  %2128 = getelementptr inbounds i8, ptr %414, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2128) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %414) #9
  br label %.loopexit1922

.loopexit1922:                                    ; preds = %.loopexit1922.loopexit, %2122
  %2129 = phi i1 [ false, %2122 ], [ true, %.loopexit1922.loopexit ]
  %.pn1590.pn = phi { ptr, i32 } [ %2123, %2122 ], [ %.pn1590, %.loopexit1922.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %417) #9
  br label %2130

2130:                                             ; preds = %.loopexit1922, %2120
  %.11226 = phi i1 [ %2129, %.loopexit1922 ], [ false, %2120 ]
  %.pn1590.pn.pn = phi { ptr, i32 } [ %.pn1590.pn, %.loopexit1922 ], [ %2121, %2120 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %418) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %418) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %417) #9
  br label %2131

2131:                                             ; preds = %2118, %2130
  %.01229 = phi ptr [ %1938, %2130 ], [ %414, %2118 ]
  %.21227 = phi i1 [ %.11226, %2130 ], [ false, %2118 ]
  %.pn1590.pn.pn.pn = phi { ptr, i32 } [ %.pn1590.pn.pn, %2130 ], [ %2119, %2118 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %415) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %416) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %416) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %415) #9
  %2132 = icmp eq ptr %414, %.01229
  %or.cond151 = select i1 %.21227, i1 true, i1 %2132
  br i1 %or.cond151, label %.loopexit1921, label %.preheader1920

.preheader1920:                                   ; preds = %2131, %.preheader1920
  %2133 = phi ptr [ %2134, %.preheader1920 ], [ %.01229, %2131 ]
  %2134 = getelementptr inbounds i8, ptr %2133, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2134) #9
  %2135 = icmp eq ptr %2134, %414
  br i1 %2135, label %.loopexit1921, label %.preheader1920

.loopexit1921:                                    ; preds = %.preheader1920, %.thread1805, %2131
  %.pn1590.pn.pn.pn.pn1810 = phi { ptr, i32 } [ %2117, %.thread1805 ], [ %.pn1590.pn.pn.pn, %2131 ], [ %.pn1590.pn.pn.pn, %.preheader1920 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %414) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %411) #9
  br label %2136

2136:                                             ; preds = %.loopexit1921, %2115
  %.pn1590.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1590.pn.pn.pn.pn1810, %.loopexit1921 ], [ %2116, %2115 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %412) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %412) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %411) #9
  br label %2666

2137:                                             ; preds = %1943
  %2138 = landingpad { ptr, i32 }
          cleanup
  br label %2175

.thread1819:                                      ; preds = %1946
  %2139 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %426) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %426) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %425) #9
  br label %.loopexit1915

2140:                                             ; preds = %1948
  %2141 = landingpad { ptr, i32 }
          cleanup
  br label %2170

2142:                                             ; preds = %1949
  %2143 = landingpad { ptr, i32 }
          cleanup
  br label %2169

.thread1811:                                      ; preds = %1952
  %2144 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %432) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %432) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %431) #9
  br label %.loopexit1917

2145:                                             ; preds = %1954
  %2146 = landingpad { ptr, i32 }
          cleanup
  br label %2164

2147:                                             ; preds = %1955
  %2148 = landingpad { ptr, i32 }
          cleanup
  br label %2163

2149:                                             ; preds = %1958
  %2150 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1918

2151:                                             ; preds = %1959
  %2152 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1918.loopexit

2153:                                             ; preds = %1960
  %2154 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1919

2155:                                             ; preds = %1961
  %2156 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1919.loopexit

2157:                                             ; preds = %1962
  %2158 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %423) #9
  br label %.loopexit1919.loopexit

.loopexit1919.loopexit:                           ; preds = %2157, %2155
  %.pn1597 = phi { ptr, i32 } [ %2158, %2157 ], [ %2156, %2155 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %436) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %436) #9
  %2159 = getelementptr inbounds i8, ptr %424, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2159) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %424) #9
  br label %.loopexit1919

.loopexit1919:                                    ; preds = %.loopexit1919.loopexit, %2153
  %2160 = phi i1 [ false, %2153 ], [ true, %.loopexit1919.loopexit ]
  %.pn1597.pn = phi { ptr, i32 } [ %2154, %2153 ], [ %.pn1597, %.loopexit1919.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %429) #9
  br label %.loopexit1918.loopexit

.loopexit1918.loopexit:                           ; preds = %.loopexit1919, %2151
  %.11197 = phi i1 [ %2160, %.loopexit1919 ], [ false, %2151 ]
  %.pn1597.pn.pn = phi { ptr, i32 } [ %.pn1597.pn, %.loopexit1919 ], [ %2152, %2151 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %435) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %435) #9
  %2161 = getelementptr inbounds i8, ptr %430, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2161) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %430) #9
  br label %.loopexit1918

.loopexit1918:                                    ; preds = %.loopexit1918.loopexit, %2149
  %2162 = phi i1 [ false, %2149 ], [ true, %.loopexit1918.loopexit ]
  %.21198 = phi i1 [ false, %2149 ], [ %.11197, %.loopexit1918.loopexit ]
  %.pn1597.pn.pn.pn = phi { ptr, i32 } [ %2150, %2149 ], [ %.pn1597.pn.pn, %.loopexit1918.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %433) #9
  br label %2163

2163:                                             ; preds = %.loopexit1918, %2147
  %.11206 = phi i1 [ %2162, %.loopexit1918 ], [ false, %2147 ]
  %.31199 = phi i1 [ %.21198, %.loopexit1918 ], [ false, %2147 ]
  %.pn1597.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1597.pn.pn.pn, %.loopexit1918 ], [ %2148, %2147 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %434) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %434) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %433) #9
  br label %2164

2164:                                             ; preds = %2145, %2163
  %.01209 = phi ptr [ %1956, %2163 ], [ %430, %2145 ]
  %.21207 = phi i1 [ %.11206, %2163 ], [ false, %2145 ]
  %.41200 = phi i1 [ %.31199, %2163 ], [ false, %2145 ]
  %.pn1597.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1597.pn.pn.pn.pn, %2163 ], [ %2146, %2145 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %431) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %432) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %432) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %431) #9
  %2165 = icmp eq ptr %430, %.01209
  %or.cond154 = select i1 %.21207, i1 true, i1 %2165
  br i1 %or.cond154, label %.loopexit1917, label %.preheader1916

.preheader1916:                                   ; preds = %2164, %.preheader1916
  %2166 = phi ptr [ %2167, %.preheader1916 ], [ %.01209, %2164 ]
  %2167 = getelementptr inbounds i8, ptr %2166, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2167) #9
  %2168 = icmp eq ptr %2167, %430
  br i1 %2168, label %.loopexit1917, label %.preheader1916

.loopexit1917:                                    ; preds = %.preheader1916, %.thread1811, %2164
  %.pn1597.pn.pn.pn.pn.pn.pn1818 = phi { ptr, i32 } [ %2144, %.thread1811 ], [ %.pn1597.pn.pn.pn.pn.pn, %2164 ], [ %.pn1597.pn.pn.pn.pn.pn, %.preheader1916 ]
  %.512011817 = phi i1 [ false, %.thread1811 ], [ %.41200, %2164 ], [ %.41200, %.preheader1916 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %430) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %427) #9
  br label %2169

2169:                                             ; preds = %.loopexit1917, %2142
  %.61202 = phi i1 [ %.512011817, %.loopexit1917 ], [ false, %2142 ]
  %.pn1597.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1597.pn.pn.pn.pn.pn.pn1818, %.loopexit1917 ], [ %2143, %2142 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %428) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %428) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %427) #9
  br label %2170

2170:                                             ; preds = %2140, %2169
  %.01217 = phi ptr [ %1950, %2169 ], [ %424, %2140 ]
  %.71203 = phi i1 [ %.61202, %2169 ], [ false, %2140 ]
  %.pn1597.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1597.pn.pn.pn.pn.pn.pn.pn, %2169 ], [ %2141, %2140 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %425) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %426) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %426) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %425) #9
  %2171 = icmp eq ptr %424, %.01217
  %or.cond157 = select i1 %.71203, i1 true, i1 %2171
  br i1 %or.cond157, label %.loopexit1915, label %.preheader1914

.preheader1914:                                   ; preds = %2170, %.preheader1914
  %2172 = phi ptr [ %2173, %.preheader1914 ], [ %.01217, %2170 ]
  %2173 = getelementptr inbounds i8, ptr %2172, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2173) #9
  %2174 = icmp eq ptr %2173, %424
  br i1 %2174, label %.loopexit1915, label %.preheader1914

.loopexit1915:                                    ; preds = %.preheader1914, %.thread1819, %2170
  %.pn1597.pn.pn.pn.pn.pn.pn.pn.pn.pn1824 = phi { ptr, i32 } [ %2139, %.thread1819 ], [ %.pn1597.pn.pn.pn.pn.pn.pn.pn.pn, %2170 ], [ %.pn1597.pn.pn.pn.pn.pn.pn.pn.pn, %.preheader1914 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %424) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %421) #9
  br label %2175

2175:                                             ; preds = %.loopexit1915, %2137
  %.pn1597.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1597.pn.pn.pn.pn.pn.pn.pn.pn.pn1824, %.loopexit1915 ], [ %2138, %2137 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %422) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %422) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %421) #9
  br label %2665

2176:                                             ; preds = %1963
  %2177 = landingpad { ptr, i32 }
          cleanup
  br label %2206

.thread1825:                                      ; preds = %1968
  %2178 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %443) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %443) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %442) #9
  br label %.loopexit1912

2179:                                             ; preds = %1970
  %2180 = landingpad { ptr, i32 }
          cleanup
  br label %2201

2181:                                             ; preds = %1971
  %2182 = landingpad { ptr, i32 }
          cleanup
  br label %2200

2183:                                             ; preds = %1974
  %2184 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1913

2185:                                             ; preds = %1975
  %2186 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1913.loopexit

2187:                                             ; preds = %1976
  %2188 = landingpad { ptr, i32 }
          cleanup
  br label %2197

2189:                                             ; preds = %1977
  %2190 = landingpad { ptr, i32 }
          cleanup
  br label %2193

2191:                                             ; preds = %1981
  %2192 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %447) #9
  br label %2193

2193:                                             ; preds = %2191, %2189
  %.pn1609 = phi { ptr, i32 } [ %2192, %2191 ], [ %2190, %2189 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %449) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %449) #9
  %2194 = getelementptr inbounds i8, ptr %448, i64 48
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2194) #9
  %2195 = getelementptr inbounds i8, ptr %448, i64 32
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2195) #9
  %2196 = getelementptr inbounds i8, ptr %448, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2196) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %448) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %448) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %437) #9
  br label %2197

2197:                                             ; preds = %2193, %2187
  %.pn1609.pn = phi { ptr, i32 } [ %.pn1609, %2193 ], [ %2188, %2187 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %440) #9
  br label %.loopexit1913.loopexit

.loopexit1913.loopexit:                           ; preds = %2197, %2185
  %.pn1609.pn.pn = phi { ptr, i32 } [ %.pn1609.pn, %2197 ], [ %2186, %2185 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %446) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %446) #9
  %2198 = getelementptr inbounds i8, ptr %441, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2198) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %441) #9
  br label %.loopexit1913

.loopexit1913:                                    ; preds = %.loopexit1913.loopexit, %2183
  %2199 = phi i1 [ false, %2183 ], [ true, %.loopexit1913.loopexit ]
  %.pn1609.pn.pn.pn = phi { ptr, i32 } [ %2184, %2183 ], [ %.pn1609.pn.pn, %.loopexit1913.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %444) #9
  br label %2200

2200:                                             ; preds = %.loopexit1913, %2181
  %.11185 = phi i1 [ %2199, %.loopexit1913 ], [ false, %2181 ]
  %.pn1609.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1609.pn.pn.pn, %.loopexit1913 ], [ %2182, %2181 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %445) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %445) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %444) #9
  br label %2201

2201:                                             ; preds = %2179, %2200
  %.01188 = phi ptr [ %1972, %2200 ], [ %441, %2179 ]
  %.21186 = phi i1 [ %.11185, %2200 ], [ false, %2179 ]
  %.pn1609.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1609.pn.pn.pn.pn, %2200 ], [ %2180, %2179 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %442) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %443) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %443) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %442) #9
  %2202 = icmp eq ptr %441, %.01188
  %or.cond160 = select i1 %.21186, i1 true, i1 %2202
  br i1 %or.cond160, label %.loopexit1912, label %.preheader1911

.preheader1911:                                   ; preds = %2201, %.preheader1911
  %2203 = phi ptr [ %2204, %.preheader1911 ], [ %.01188, %2201 ]
  %2204 = getelementptr inbounds i8, ptr %2203, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2204) #9
  %2205 = icmp eq ptr %2204, %441
  br i1 %2205, label %.loopexit1912, label %.preheader1911

.loopexit1912:                                    ; preds = %.preheader1911, %.thread1825, %2201
  %.pn1609.pn.pn.pn.pn.pn.pn1830 = phi { ptr, i32 } [ %2178, %.thread1825 ], [ %.pn1609.pn.pn.pn.pn.pn, %2201 ], [ %.pn1609.pn.pn.pn.pn.pn, %.preheader1911 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %441) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %438) #9
  br label %2206

2206:                                             ; preds = %.loopexit1912, %2176
  %.pn1609.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1609.pn.pn.pn.pn.pn.pn1830, %.loopexit1912 ], [ %2177, %2176 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %439) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %439) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %438) #9
  br label %2664

2207:                                             ; preds = %1982
  %2208 = landingpad { ptr, i32 }
          cleanup
  br label %2232

.thread1831:                                      ; preds = %1991
  %2209 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %458) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %458) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %457) #9
  br label %.loopexit1908

2210:                                             ; preds = %1993
  %2211 = landingpad { ptr, i32 }
          cleanup
  br label %2227

2212:                                             ; preds = %1994
  %2213 = landingpad { ptr, i32 }
          cleanup
  br label %2226

2214:                                             ; preds = %1997
  %2215 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1909

2216:                                             ; preds = %1998
  %2217 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1909.loopexit

2218:                                             ; preds = %1999
  %2219 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1910

2220:                                             ; preds = %2000
  %2221 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1910.loopexit

2222:                                             ; preds = %2001
  %2223 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %451) #9
  br label %.loopexit1910.loopexit

.loopexit1910.loopexit:                           ; preds = %2222, %2220
  %.pn1618 = phi { ptr, i32 } [ %2223, %2222 ], [ %2221, %2220 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %462) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %462) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %452) #9
  br label %.loopexit1910

.loopexit1910:                                    ; preds = %.loopexit1910.loopexit, %2218
  %.pn1618.pn = phi { ptr, i32 } [ %2219, %2218 ], [ %.pn1618, %.loopexit1910.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %455) #9
  br label %.loopexit1909.loopexit

.loopexit1909.loopexit:                           ; preds = %.loopexit1910, %2216
  %.pn1618.pn.pn = phi { ptr, i32 } [ %.pn1618.pn, %.loopexit1910 ], [ %2217, %2216 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %461) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %461) #9
  %2224 = getelementptr inbounds i8, ptr %456, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2224) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %456) #9
  br label %.loopexit1909

.loopexit1909:                                    ; preds = %.loopexit1909.loopexit, %2214
  %2225 = phi i1 [ false, %2214 ], [ true, %.loopexit1909.loopexit ]
  %.pn1618.pn.pn.pn = phi { ptr, i32 } [ %2215, %2214 ], [ %.pn1618.pn.pn, %.loopexit1909.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %459) #9
  br label %2226

2226:                                             ; preds = %.loopexit1909, %2212
  %.11150 = phi i1 [ %2225, %.loopexit1909 ], [ false, %2212 ]
  %.pn1618.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1618.pn.pn.pn, %.loopexit1909 ], [ %2213, %2212 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %460) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %460) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %459) #9
  br label %2227

2227:                                             ; preds = %2210, %2226
  %.01153 = phi ptr [ %1995, %2226 ], [ %456, %2210 ]
  %.21151 = phi i1 [ %.11150, %2226 ], [ false, %2210 ]
  %.pn1618.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1618.pn.pn.pn.pn, %2226 ], [ %2211, %2210 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %457) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %458) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %458) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %457) #9
  %2228 = icmp eq ptr %456, %.01153
  %or.cond163 = select i1 %.21151, i1 true, i1 %2228
  br i1 %or.cond163, label %.loopexit1908, label %.preheader1907

.preheader1907:                                   ; preds = %2227, %.preheader1907
  %2229 = phi ptr [ %2230, %.preheader1907 ], [ %.01153, %2227 ]
  %2230 = getelementptr inbounds i8, ptr %2229, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2230) #9
  %2231 = icmp eq ptr %2230, %456
  br i1 %2231, label %.loopexit1908, label %.preheader1907

.loopexit1908:                                    ; preds = %.preheader1907, %.thread1831, %2227
  %.pn1618.pn.pn.pn.pn.pn.pn1836 = phi { ptr, i32 } [ %2209, %.thread1831 ], [ %.pn1618.pn.pn.pn.pn.pn, %2227 ], [ %.pn1618.pn.pn.pn.pn.pn, %.preheader1907 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %456) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %453) #9
  br label %2232

2232:                                             ; preds = %.loopexit1908, %2207
  %.pn1618.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1618.pn.pn.pn.pn.pn.pn1836, %.loopexit1908 ], [ %2208, %2207 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %454) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %454) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %453) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %452) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %451) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %450) #9
  br label %2664

2233:                                             ; preds = %2015, %2002
  %2234 = landingpad { ptr, i32 }
          catch ptr null
  br label %2249

2235:                                             ; preds = %2006
  %2236 = landingpad { ptr, i32 }
          catch ptr null
  br label %2246

2237:                                             ; preds = %2008
  %2238 = landingpad { ptr, i32 }
          catch ptr null
  br label %2245

2239:                                             ; preds = %2009
  %2240 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit1906

2241:                                             ; preds = %2010
  %2242 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit1906.loopexit

2243:                                             ; preds = %2011
  %2244 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %464) #9
  br label %.loopexit1906.loopexit

.loopexit1906.loopexit:                           ; preds = %2243, %2241
  %.pn1627 = phi { ptr, i32 } [ %2244, %2243 ], [ %2242, %2241 ]
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %471) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %471) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %465) #9
  br label %.loopexit1906

.loopexit1906:                                    ; preds = %.loopexit1906.loopexit, %2239
  %.pn1627.pn = phi { ptr, i32 } [ %2240, %2239 ], [ %.pn1627, %.loopexit1906.loopexit ]
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %470) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %470) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %466) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %467) #9
  br label %2245

2245:                                             ; preds = %.loopexit1906, %2237
  %.pn1627.pn.pn = phi { ptr, i32 } [ %.pn1627.pn, %.loopexit1906 ], [ %2238, %2237 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %468) #9
  br label %2246

2246:                                             ; preds = %2245, %2235
  %.pn1627.pn.pn.pn = phi { ptr, i32 } [ %.pn1627.pn.pn, %2245 ], [ %2236, %2235 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %469) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %469) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %468) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %467) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %466) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %465) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %463) #9
  br label %2249

2247:                                             ; preds = %2022, %2020, %2017
  %2248 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %472) #9
  br label %2249

2249:                                             ; preds = %2247, %2246, %2233
  %.pn1628 = phi { ptr, i32 } [ %2248, %2247 ], [ %2234, %2233 ], [ %.pn1627.pn.pn.pn, %2246 ]
  %.264 = extractvalue { ptr, i32 } %.pn1628, 0
  %2250 = call ptr @__cxa_begin_catch(ptr %.264) #9
  %2251 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2252 unwind label %2355

2252:                                             ; preds = %2249
  %2253 = load ptr, ptr %2251, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %473) #9
  %2254 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2255 unwind label %2357

2255:                                             ; preds = %2252
  %2256 = load ptr, ptr %2254, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %473, ptr noundef nonnull align 8 dereferenceable(30) %2256, i32 noundef 2462)
          to label %2257 unwind label %2357

2257:                                             ; preds = %2255
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2253, ptr noundef nonnull align 8 dereferenceable(30) %473, ptr noundef nonnull @.str.541)
          to label %2258 unwind label %2357

2258:                                             ; preds = %2257
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %473) #9
  invoke void @__cxa_end_catch()
          to label %2259 unwind label %2359

2259:                                             ; preds = %2013, %2023, %2258
  %2260 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  invoke void @_ZN10HtnRuleSet8ClearAllEv(ptr noundef nonnull align 8 dereferenceable(144) %2260)
          to label %2261 unwind label %2359

2261:                                             ; preds = %2259
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %474) #9
  %2262 = 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 %475) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %476) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %476) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %475, ptr noundef nonnull @.str.542, ptr noundef nonnull align 1 dereferenceable(1) %476)
          to label %2263 unwind label %2362

2263:                                             ; preds = %2261
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %478) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %478, ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  %2264 = getelementptr inbounds i8, ptr %478, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %2264, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %479) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %479) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %477, ptr nonnull %478, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %479)
          to label %2265 unwind label %2364

2265:                                             ; preds = %2263
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %474, ptr noundef nonnull align 8 dereferenceable(33088) %2262, ptr noundef nonnull align 8 dereferenceable(32) %475, ptr noundef nonnull %477)
          to label %2266 unwind label %2366

2266:                                             ; preds = %2265
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %477) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %479) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %479) #9
  %2267 = getelementptr inbounds i8, ptr %478, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2267) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %478) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %478) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %475) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %476) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %476) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %475) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %480) #9
  %2268 = 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 %481) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %482) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %482) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %481, ptr noundef nonnull @.str.542, ptr noundef nonnull align 1 dereferenceable(1) %482)
          to label %2269 unwind label %2371

2269:                                             ; preds = %2266
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %484) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %484, ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  %2270 = getelementptr inbounds i8, ptr %484, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %2270, ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %485) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %485) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %483, ptr nonnull %484, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %485)
          to label %2271 unwind label %2373

2271:                                             ; preds = %2269
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %480, ptr noundef nonnull align 8 dereferenceable(33088) %2268, ptr noundef nonnull align 8 dereferenceable(32) %481, ptr noundef nonnull %483)
          to label %2272 unwind label %2375

2272:                                             ; preds = %2271
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %483) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %485) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %485) #9
  %2273 = getelementptr inbounds i8, ptr %484, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2273) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %484) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %484) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %481) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %482) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %482) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %481) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %486) #9
  %2274 = 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 %487) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %488) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %488) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %487, ptr noundef nonnull @.str.542, ptr noundef nonnull align 1 dereferenceable(1) %488)
          to label %2275 unwind label %2380

2275:                                             ; preds = %2272
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %490) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %490, ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  %2276 = getelementptr inbounds i8, ptr %490, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %2276, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %491) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %491) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %489, ptr nonnull %490, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %491)
          to label %2277 unwind label %2382

2277:                                             ; preds = %2275
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %486, ptr noundef nonnull align 8 dereferenceable(33088) %2274, ptr noundef nonnull align 8 dereferenceable(32) %487, ptr noundef nonnull %489)
          to label %2278 unwind label %2384

2278:                                             ; preds = %2277
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %489) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %491) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %491) #9
  %2279 = getelementptr inbounds i8, ptr %490, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2279) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %490) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %490) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %487) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %488) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %488) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %487) #9
  %2280 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %2281 = 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 %493) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %494) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %494) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %493, ptr noundef nonnull @.str.543, ptr noundef nonnull align 1 dereferenceable(1) %494)
          to label %2282 unwind label %2389

2282:                                             ; preds = %2278
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %496) #9
  %2283 = 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 %497) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %498) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %498) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %497, ptr noundef nonnull @.str.544, ptr noundef nonnull align 1 dereferenceable(1) %498)
          to label %2284 unwind label %2391

2284:                                             ; preds = %2282
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %500) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %500, ptr noundef nonnull align 8 dereferenceable(16) %474) #9
  %2285 = getelementptr inbounds i8, ptr %500, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %2285, ptr noundef nonnull align 8 dereferenceable(16) %480) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %501) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %501) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %499, ptr nonnull %500, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %501)
          to label %2286 unwind label %2393

2286:                                             ; preds = %2284
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %496, ptr noundef nonnull align 8 dereferenceable(33088) %2283, ptr noundef nonnull align 8 dereferenceable(32) %497, ptr noundef nonnull %499)
          to label %2287 unwind label %2395

2287:                                             ; preds = %2286
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %502) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %502) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %495, ptr nonnull %496, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %502)
          to label %2288 unwind label %2397

2288:                                             ; preds = %2287
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %492, ptr noundef nonnull align 8 dereferenceable(33088) %2281, ptr noundef nonnull align 8 dereferenceable(32) %493, ptr noundef nonnull %495)
          to label %2289 unwind label %2399

2289:                                             ; preds = %2288
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %503, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %503) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %2280, ptr noundef nonnull %492, ptr noundef nonnull %503)
          to label %2290 unwind label %2401

2290:                                             ; preds = %2289
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %503) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %492) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %495) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %502) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %502) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %496) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %499) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %501) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %501) #9
  %2291 = getelementptr inbounds i8, ptr %500, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2291) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %500) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %500) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %497) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %498) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %498) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %497) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %496) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %493) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %494) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %494) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %493) #9
  %2292 = call noundef ptr @_ZNKSt19__shared_ptr_accessI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %2293 = 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 %505) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %506) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %506) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %505, ptr noundef nonnull @.str.545, ptr noundef nonnull align 1 dereferenceable(1) %506)
          to label %2294 unwind label %2408

2294:                                             ; preds = %2290
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %508) #9
  %2295 = 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 %509) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %510) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %510) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %509, ptr noundef nonnull @.str.544, ptr noundef nonnull align 1 dereferenceable(1) %510)
          to label %2296 unwind label %2410

2296:                                             ; preds = %2294
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %512) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %512, ptr noundef nonnull align 8 dereferenceable(16) %474) #9
  %2297 = getelementptr inbounds i8, ptr %512, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %2297, ptr noundef nonnull align 8 dereferenceable(16) %486) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %513) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %513) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %511, ptr nonnull %512, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %513)
          to label %2298 unwind label %2412

2298:                                             ; preds = %2296
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %508, ptr noundef nonnull align 8 dereferenceable(33088) %2295, ptr noundef nonnull align 8 dereferenceable(32) %509, ptr noundef nonnull %511)
          to label %2299 unwind label %2414

2299:                                             ; preds = %2298
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %514) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %514) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %507, ptr nonnull %508, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %514)
          to label %2300 unwind label %2416

2300:                                             ; preds = %2299
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %504, ptr noundef nonnull align 8 dereferenceable(33088) %2293, ptr noundef nonnull align 8 dereferenceable(32) %505, ptr noundef nonnull %507)
          to label %2301 unwind label %2418

2301:                                             ; preds = %2300
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %515, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %515) #9
  invoke void @_ZN10HtnRuleSet7AddRuleESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(144) %2292, ptr noundef nonnull %504, ptr noundef nonnull %515)
          to label %2302 unwind label %2420

2302:                                             ; preds = %2301
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %515) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %504) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %507) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %514) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %514) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %508) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %511) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %513) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %513) #9
  %2303 = getelementptr inbounds i8, ptr %512, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2303) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %512) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %512) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %509) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %510) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %510) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %509) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %508) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %505) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %506) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %506) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %505) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %516) #9
  %2304 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  %2305 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %2306 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %517) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %518) #9
  %2307 = 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 %519) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %520) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %520) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %519, ptr noundef nonnull @.str.543, ptr noundef nonnull align 1 dereferenceable(1) %520)
          to label %2308 unwind label %2427

2308:                                             ; preds = %2302
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %522) #9
  %2309 = 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 %523) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %524) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %524) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %523, ptr noundef nonnull @.str.544, ptr noundef nonnull align 1 dereferenceable(1) %524)
          to label %2310 unwind label %2429

2310:                                             ; preds = %2308
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %526) #9
  %2311 = 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 %527) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %528) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %528) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %527, ptr noundef nonnull @.str.542, ptr noundef nonnull align 1 dereferenceable(1) %528)
          to label %2312 unwind label %.thread1855

2312:                                             ; preds = %2310
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %530) #9
  %2313 = 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 %531) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %532) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %532) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %531, ptr noundef nonnull @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %532)
          to label %2314 unwind label %.thread1845

2314:                                             ; preds = %2312
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %530, ptr noundef nonnull align 8 dereferenceable(33088) %2313, ptr noundef nonnull align 8 dereferenceable(32) %531)
          to label %2315 unwind label %2433

2315:                                             ; preds = %2314
  %2316 = getelementptr inbounds i8, ptr %530, i64 16
  %2317 = 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 %533) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %534) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %534) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %533, ptr noundef nonnull @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %534)
          to label %2318 unwind label %2435

2318:                                             ; preds = %2315
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %2316, ptr noundef nonnull align 8 dereferenceable(33088) %2317, ptr noundef nonnull align 8 dereferenceable(32) %533)
          to label %2319 unwind label %2437

2319:                                             ; preds = %2318
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %535) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %535) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %529, ptr nonnull %530, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %535)
          to label %2320 unwind label %2439

2320:                                             ; preds = %2319
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %526, ptr noundef nonnull align 8 dereferenceable(33088) %2311, ptr noundef nonnull align 8 dereferenceable(32) %527, ptr noundef nonnull %529)
          to label %2321 unwind label %2441

2321:                                             ; preds = %2320
  %2322 = getelementptr inbounds i8, ptr %526, i64 16
  %2323 = 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 %536) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %537) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %537) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %536, ptr noundef nonnull @.str.542, ptr noundef nonnull align 1 dereferenceable(1) %537)
          to label %2324 unwind label %2443

2324:                                             ; preds = %2321
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %539) #9
  %2325 = 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 %540) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %541) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %541) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %540, ptr noundef nonnull @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %541)
          to label %2326 unwind label %.thread1837

2326:                                             ; preds = %2324
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %539, ptr noundef nonnull align 8 dereferenceable(33088) %2325, ptr noundef nonnull align 8 dereferenceable(32) %540)
          to label %2327 unwind label %2446

2327:                                             ; preds = %2326
  %2328 = getelementptr inbounds i8, ptr %539, i64 16
  %2329 = 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 %542) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %543) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %543) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %542, ptr noundef nonnull @.str.546, ptr noundef nonnull align 1 dereferenceable(1) %543)
          to label %2330 unwind label %2448

2330:                                             ; preds = %2327
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %2328, ptr noundef nonnull align 8 dereferenceable(33088) %2329, ptr noundef nonnull align 8 dereferenceable(32) %542)
          to label %2331 unwind label %2450

2331:                                             ; preds = %2330
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %544) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %544) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %538, ptr nonnull %539, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %544)
          to label %2332 unwind label %2452

2332:                                             ; preds = %2331
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %2322, ptr noundef nonnull align 8 dereferenceable(33088) %2323, ptr noundef nonnull align 8 dereferenceable(32) %536, ptr noundef nonnull %538)
          to label %2333 unwind label %2454

2333:                                             ; preds = %2332
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %545) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %545) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %525, ptr nonnull %526, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %545)
          to label %2334 unwind label %2456

2334:                                             ; preds = %2333
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %522, ptr noundef nonnull align 8 dereferenceable(33088) %2309, ptr noundef nonnull align 8 dereferenceable(32) %523, ptr noundef nonnull %525)
          to label %2335 unwind label %2458

2335:                                             ; preds = %2334
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %546) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %546) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %521, ptr nonnull %522, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %546)
          to label %2336 unwind label %2460

2336:                                             ; preds = %2335
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %518, ptr noundef nonnull align 8 dereferenceable(33088) %2307, ptr noundef nonnull align 8 dereferenceable(32) %519, ptr noundef nonnull %521)
          to label %2337 unwind label %2462

2337:                                             ; preds = %2336
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %547) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %547) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %517, ptr nonnull %518, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %547)
          to label %2338 unwind label %2464

2338:                                             ; preds = %2337
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %516, ptr noundef nonnull align 8 dereferenceable(64) %2304, ptr noundef %2305, ptr noundef %2306, ptr noundef nonnull align 8 dereferenceable(24) %517, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %2339 unwind label %2466

2339:                                             ; preds = %2338
  %2340 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %516) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %516) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %517) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %547) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %547) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %518) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %521) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %546) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %546) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %522) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %525) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %545) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %545) #9
  %2341 = getelementptr inbounds i8, ptr %526, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2341) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %526) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %538) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %544) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %544) #9
  %2342 = getelementptr inbounds i8, ptr %539, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2342) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %539) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %542) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %543) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %543) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %542) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %540) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %541) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %541) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %540) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %539) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %536) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %537) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %537) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %536) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %529) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %535) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %535) #9
  %2343 = getelementptr inbounds i8, ptr %530, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2343) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %530) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %533) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %534) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %534) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %533) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %531) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %532) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %532) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %531) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %530) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %527) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %528) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %528) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %527) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %526) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %523) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %524) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %524) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %523) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %522) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %519) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %520) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %520) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %519) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %518) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %517) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %516) #9
  call void @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %548, ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  %2344 = call noundef zeroext i1 @_ZN25SuiteHtnGoalResolverTests6IsTrueESt10shared_ptrISt6vectorIS1_ISt4pairIS0_I7HtnTermES4_ESaIS5_EESaIS7_EEE(ptr noundef nonnull %548)
  %2345 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %2344)
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %548) #9
  br i1 %2345, label %2507, label %2346

2346:                                             ; preds = %2339
  %2347 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2348 unwind label %2493

2348:                                             ; preds = %2346
  %2349 = load ptr, ptr %2347, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %549) #9
  %2350 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2351 unwind label %2495

2351:                                             ; preds = %2348
  %2352 = load ptr, ptr %2350, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %549, ptr noundef nonnull align 8 dereferenceable(30) %2352, i32 noundef 2484)
          to label %2353 unwind label %2495

2353:                                             ; preds = %2351
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2349, ptr noundef nonnull align 8 dereferenceable(30) %549, ptr noundef nonnull @.str.507)
          to label %2354 unwind label %2495

2354:                                             ; preds = %2353
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %549) #9
  br label %2507

2355:                                             ; preds = %2249
  %2356 = landingpad { ptr, i32 }
          cleanup
  br label %2361

2357:                                             ; preds = %2257, %2255, %2252
  %2358 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %473) #9
  br label %2361

2359:                                             ; preds = %2259, %2258
  %2360 = landingpad { ptr, i32 }
          cleanup
  br label %2664

2361:                                             ; preds = %2357, %2355
  %.pn1629 = phi { ptr, i32 } [ %2358, %2357 ], [ %2356, %2355 ]
  invoke void @__cxa_end_catch()
          to label %2664 unwind label %2676

2362:                                             ; preds = %2261
  %2363 = landingpad { ptr, i32 }
          cleanup
  br label %2370

2364:                                             ; preds = %2263
  %2365 = landingpad { ptr, i32 }
          cleanup
  br label %2368

2366:                                             ; preds = %2265
  %2367 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %477) #9
  br label %2368

2368:                                             ; preds = %2366, %2364
  %.pn1631 = phi { ptr, i32 } [ %2367, %2366 ], [ %2365, %2364 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %479) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %479) #9
  %2369 = getelementptr inbounds i8, ptr %478, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2369) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %478) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %478) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %475) #9
  br label %2370

2370:                                             ; preds = %2368, %2362
  %.pn1631.pn = phi { ptr, i32 } [ %.pn1631, %2368 ], [ %2363, %2362 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %476) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %476) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %475) #9
  br label %2663

2371:                                             ; preds = %2266
  %2372 = landingpad { ptr, i32 }
          cleanup
  br label %2379

2373:                                             ; preds = %2269
  %2374 = landingpad { ptr, i32 }
          cleanup
  br label %2377

2375:                                             ; preds = %2271
  %2376 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %483) #9
  br label %2377

2377:                                             ; preds = %2375, %2373
  %.pn1634 = phi { ptr, i32 } [ %2376, %2375 ], [ %2374, %2373 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %485) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %485) #9
  %2378 = getelementptr inbounds i8, ptr %484, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2378) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %484) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %484) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %481) #9
  br label %2379

2379:                                             ; preds = %2377, %2371
  %.pn1634.pn = phi { ptr, i32 } [ %.pn1634, %2377 ], [ %2372, %2371 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %482) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %482) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %481) #9
  br label %2662

2380:                                             ; preds = %2272
  %2381 = landingpad { ptr, i32 }
          cleanup
  br label %2388

2382:                                             ; preds = %2275
  %2383 = landingpad { ptr, i32 }
          cleanup
  br label %2386

2384:                                             ; preds = %2277
  %2385 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %489) #9
  br label %2386

2386:                                             ; preds = %2384, %2382
  %.pn1637 = phi { ptr, i32 } [ %2385, %2384 ], [ %2383, %2382 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %491) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %491) #9
  %2387 = getelementptr inbounds i8, ptr %490, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2387) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %490) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %490) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %487) #9
  br label %2388

2388:                                             ; preds = %2386, %2380
  %.pn1637.pn = phi { ptr, i32 } [ %.pn1637, %2386 ], [ %2381, %2380 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %488) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %488) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %487) #9
  br label %2661

2389:                                             ; preds = %2278
  %2390 = landingpad { ptr, i32 }
          cleanup
  br label %2407

2391:                                             ; preds = %2282
  %2392 = landingpad { ptr, i32 }
          cleanup
  br label %2406

2393:                                             ; preds = %2284
  %2394 = landingpad { ptr, i32 }
          cleanup
  br label %2404

2395:                                             ; preds = %2286
  %2396 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1905

2397:                                             ; preds = %2287
  %2398 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1905.loopexit

2399:                                             ; preds = %2288
  %2400 = landingpad { ptr, i32 }
          cleanup
  br label %2403

2401:                                             ; preds = %2289
  %2402 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %503) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %492) #9
  br label %2403

2403:                                             ; preds = %2401, %2399
  %.pn1640 = phi { ptr, i32 } [ %2402, %2401 ], [ %2400, %2399 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %495) #9
  br label %.loopexit1905.loopexit

.loopexit1905.loopexit:                           ; preds = %2403, %2397
  %.pn1640.pn = phi { ptr, i32 } [ %.pn1640, %2403 ], [ %2398, %2397 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %502) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %502) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %496) #9
  br label %.loopexit1905

.loopexit1905:                                    ; preds = %.loopexit1905.loopexit, %2395
  %.pn1640.pn.pn = phi { ptr, i32 } [ %2396, %2395 ], [ %.pn1640.pn, %.loopexit1905.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %499) #9
  br label %2404

2404:                                             ; preds = %.loopexit1905, %2393
  %.pn1640.pn.pn.pn = phi { ptr, i32 } [ %.pn1640.pn.pn, %.loopexit1905 ], [ %2394, %2393 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %501) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %501) #9
  %2405 = getelementptr inbounds i8, ptr %500, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2405) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %500) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %500) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %497) #9
  br label %2406

2406:                                             ; preds = %2404, %2391
  %.pn1640.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1640.pn.pn.pn, %2404 ], [ %2392, %2391 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %498) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %498) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %497) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %496) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %493) #9
  br label %2407

2407:                                             ; preds = %2406, %2389
  %.pn1640.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1640.pn.pn.pn.pn, %2406 ], [ %2390, %2389 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %494) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %494) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %493) #9
  br label %2660

2408:                                             ; preds = %2290
  %2409 = landingpad { ptr, i32 }
          cleanup
  br label %2426

2410:                                             ; preds = %2294
  %2411 = landingpad { ptr, i32 }
          cleanup
  br label %2425

2412:                                             ; preds = %2296
  %2413 = landingpad { ptr, i32 }
          cleanup
  br label %2423

2414:                                             ; preds = %2298
  %2415 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1904

2416:                                             ; preds = %2299
  %2417 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1904.loopexit

2418:                                             ; preds = %2300
  %2419 = landingpad { ptr, i32 }
          cleanup
  br label %2422

2420:                                             ; preds = %2301
  %2421 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %515) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %504) #9
  br label %2422

2422:                                             ; preds = %2420, %2418
  %.pn1647 = phi { ptr, i32 } [ %2421, %2420 ], [ %2419, %2418 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %507) #9
  br label %.loopexit1904.loopexit

.loopexit1904.loopexit:                           ; preds = %2422, %2416
  %.pn1647.pn = phi { ptr, i32 } [ %.pn1647, %2422 ], [ %2417, %2416 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %514) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %514) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %508) #9
  br label %.loopexit1904

.loopexit1904:                                    ; preds = %.loopexit1904.loopexit, %2414
  %.pn1647.pn.pn = phi { ptr, i32 } [ %2415, %2414 ], [ %.pn1647.pn, %.loopexit1904.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %511) #9
  br label %2423

2423:                                             ; preds = %.loopexit1904, %2412
  %.pn1647.pn.pn.pn = phi { ptr, i32 } [ %.pn1647.pn.pn, %.loopexit1904 ], [ %2413, %2412 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %513) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %513) #9
  %2424 = getelementptr inbounds i8, ptr %512, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2424) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %512) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %512) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %509) #9
  br label %2425

2425:                                             ; preds = %2423, %2410
  %.pn1647.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1647.pn.pn.pn, %2423 ], [ %2411, %2410 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %510) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %510) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %509) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %508) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %505) #9
  br label %2426

2426:                                             ; preds = %2425, %2408
  %.pn1647.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1647.pn.pn.pn.pn, %2425 ], [ %2409, %2408 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %506) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %506) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %505) #9
  br label %2660

2427:                                             ; preds = %2302
  %2428 = landingpad { ptr, i32 }
          cleanup
  br label %2492

2429:                                             ; preds = %2308
  %2430 = landingpad { ptr, i32 }
          cleanup
  br label %2491

.thread1855:                                      ; preds = %2310
  %2431 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %528) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %528) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %527) #9
  br label %.loopexit1894

.thread1845:                                      ; preds = %2312
  %2432 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %532) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %532) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %531) #9
  br label %.loopexit1896

2433:                                             ; preds = %2314
  %2434 = landingpad { ptr, i32 }
          cleanup
  br label %2482

2435:                                             ; preds = %2315
  %2436 = landingpad { ptr, i32 }
          cleanup
  br label %2481

2437:                                             ; preds = %2318
  %2438 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1897

2439:                                             ; preds = %2319
  %2440 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1897.loopexit

2441:                                             ; preds = %2320
  %2442 = landingpad { ptr, i32 }
          cleanup
  br label %2478

2443:                                             ; preds = %2321
  %2444 = landingpad { ptr, i32 }
          cleanup
  br label %2477

.thread1837:                                      ; preds = %2324
  %2445 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %541) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %541) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %540) #9
  br label %.loopexit1899

2446:                                             ; preds = %2326
  %2447 = landingpad { ptr, i32 }
          cleanup
  br label %2471

2448:                                             ; preds = %2327
  %2449 = landingpad { ptr, i32 }
          cleanup
  br label %2470

2450:                                             ; preds = %2330
  %2451 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1900

2452:                                             ; preds = %2331
  %2453 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1900.loopexit

2454:                                             ; preds = %2332
  %2455 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1901

2456:                                             ; preds = %2333
  %2457 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1901.loopexit

2458:                                             ; preds = %2334
  %2459 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1902

2460:                                             ; preds = %2335
  %2461 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1902.loopexit

2462:                                             ; preds = %2336
  %2463 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1903

2464:                                             ; preds = %2337
  %2465 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1903.loopexit

2466:                                             ; preds = %2338
  %2467 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %517) #9
  br label %.loopexit1903.loopexit

.loopexit1903.loopexit:                           ; preds = %2466, %2464
  %.pn1654 = phi { ptr, i32 } [ %2467, %2466 ], [ %2465, %2464 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %547) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %547) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %518) #9
  br label %.loopexit1903

.loopexit1903:                                    ; preds = %.loopexit1903.loopexit, %2462
  %.pn1654.pn = phi { ptr, i32 } [ %2463, %2462 ], [ %.pn1654, %.loopexit1903.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %521) #9
  br label %.loopexit1902.loopexit

.loopexit1902.loopexit:                           ; preds = %.loopexit1903, %2460
  %.pn1654.pn.pn = phi { ptr, i32 } [ %.pn1654.pn, %.loopexit1903 ], [ %2461, %2460 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %546) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %546) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %522) #9
  br label %.loopexit1902

.loopexit1902:                                    ; preds = %.loopexit1902.loopexit, %2458
  %.pn1654.pn.pn.pn = phi { ptr, i32 } [ %2459, %2458 ], [ %.pn1654.pn.pn, %.loopexit1902.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %525) #9
  br label %.loopexit1901.loopexit

.loopexit1901.loopexit:                           ; preds = %.loopexit1902, %2456
  %.pn1654.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1654.pn.pn.pn, %.loopexit1902 ], [ %2457, %2456 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %545) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %545) #9
  %2468 = getelementptr inbounds i8, ptr %526, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2468) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %526) #9
  br label %.loopexit1901

.loopexit1901:                                    ; preds = %.loopexit1901.loopexit, %2454
  %.0995 = phi i1 [ true, %2454 ], [ false, %.loopexit1901.loopexit ]
  %.pn1654.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2455, %2454 ], [ %.pn1654.pn.pn.pn.pn, %.loopexit1901.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %538) #9
  br label %.loopexit1900.loopexit

.loopexit1900.loopexit:                           ; preds = %.loopexit1901, %2452
  %.1996 = phi i1 [ %.0995, %.loopexit1901 ], [ true, %2452 ]
  %.pn1654.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1654.pn.pn.pn.pn.pn, %.loopexit1901 ], [ %2453, %2452 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %544) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %544) #9
  %2469 = getelementptr inbounds i8, ptr %539, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2469) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %539) #9
  br label %.loopexit1900

.loopexit1900:                                    ; preds = %.loopexit1900.loopexit, %2450
  %.01009 = phi i1 [ true, %2450 ], [ false, %.loopexit1900.loopexit ]
  %.2997 = phi i1 [ true, %2450 ], [ %.1996, %.loopexit1900.loopexit ]
  %.pn1654.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2451, %2450 ], [ %.pn1654.pn.pn.pn.pn.pn.pn, %.loopexit1900.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %542) #9
  br label %2470

2470:                                             ; preds = %.loopexit1900, %2448
  %.11010 = phi i1 [ %.01009, %.loopexit1900 ], [ true, %2448 ]
  %.3998 = phi i1 [ %.2997, %.loopexit1900 ], [ true, %2448 ]
  %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1654.pn.pn.pn.pn.pn.pn.pn, %.loopexit1900 ], [ %2449, %2448 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %543) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %543) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %542) #9
  br label %2471

2471:                                             ; preds = %2446, %2470
  %.01013 = phi ptr [ %2328, %2470 ], [ %539, %2446 ]
  %.21011 = phi i1 [ %.11010, %2470 ], [ true, %2446 ]
  %.4999 = phi i1 [ %.3998, %2470 ], [ true, %2446 ]
  %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn, %2470 ], [ %2447, %2446 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %540) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %541) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %541) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %540) #9
  %2472 = icmp ne ptr %539, %.01013
  %or.cond181.not = select i1 %.21011, i1 %2472, i1 false
  br i1 %or.cond181.not, label %.preheader1898, label %.loopexit1899

.preheader1898:                                   ; preds = %2471, %.preheader1898
  %2473 = phi ptr [ %2474, %.preheader1898 ], [ %.01013, %2471 ]
  %2474 = getelementptr inbounds i8, ptr %2473, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2474) #9
  %2475 = icmp eq ptr %2474, %539
  br i1 %2475, label %.loopexit1899, label %.preheader1898

.loopexit1899:                                    ; preds = %.preheader1898, %.thread1837, %2471
  %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn1844 = phi { ptr, i32 } [ %2445, %.thread1837 ], [ %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2471 ], [ %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.preheader1898 ]
  %.510001843 = phi i1 [ true, %.thread1837 ], [ %.4999, %2471 ], [ %.4999, %.preheader1898 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %539) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %536) #9
  %2476 = xor i1 %.510001843, true
  br label %2477

2477:                                             ; preds = %.loopexit1899, %2443
  %.61001 = phi i1 [ %2476, %.loopexit1899 ], [ false, %2443 ]
  %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn1844, %.loopexit1899 ], [ %2444, %2443 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %537) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %537) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %536) #9
  br label %2478

2478:                                             ; preds = %2477, %2441
  %.01035 = phi ptr [ %2322, %2477 ], [ %526, %2441 ]
  %.71002 = phi i1 [ %.61001, %2477 ], [ false, %2441 ]
  %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2477 ], [ %2442, %2441 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %529) #9
  br label %.loopexit1897.loopexit

.loopexit1897.loopexit:                           ; preds = %2478, %2439
  %.11036 = phi ptr [ %.01035, %2478 ], [ %526, %2439 ]
  %.81003 = phi i1 [ %.71002, %2478 ], [ false, %2439 ]
  %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2478 ], [ %2440, %2439 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %535) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %535) #9
  %2479 = getelementptr inbounds i8, ptr %530, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2479) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %530) #9
  br label %.loopexit1897

.loopexit1897:                                    ; preds = %.loopexit1897.loopexit, %2437
  %.21037 = phi ptr [ %526, %2437 ], [ %.11036, %.loopexit1897.loopexit ]
  %2480 = phi i1 [ false, %2437 ], [ true, %.loopexit1897.loopexit ]
  %.91004 = phi i1 [ false, %2437 ], [ %.81003, %.loopexit1897.loopexit ]
  %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2438, %2437 ], [ %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit1897.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %533) #9
  br label %2481

2481:                                             ; preds = %.loopexit1897, %2435
  %.31038 = phi ptr [ %.21037, %.loopexit1897 ], [ %526, %2435 ]
  %.11023 = phi i1 [ %2480, %.loopexit1897 ], [ false, %2435 ]
  %.101005 = phi i1 [ %.91004, %.loopexit1897 ], [ false, %2435 ]
  %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit1897 ], [ %2436, %2435 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %534) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %534) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %533) #9
  br label %2482

2482:                                             ; preds = %2433, %2481
  %.41039 = phi ptr [ %.31038, %2481 ], [ %526, %2433 ]
  %.01026 = phi ptr [ %2316, %2481 ], [ %530, %2433 ]
  %.21024 = phi i1 [ %.11023, %2481 ], [ false, %2433 ]
  %.111006 = phi i1 [ %.101005, %2481 ], [ false, %2433 ]
  %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2481 ], [ %2434, %2433 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %531) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %532) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %532) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %531) #9
  %2483 = icmp eq ptr %530, %.01026
  %or.cond184 = select i1 %.21024, i1 true, i1 %2483
  br i1 %or.cond184, label %.loopexit1896, label %.preheader1895

.preheader1895:                                   ; preds = %2482, %.preheader1895
  %2484 = phi ptr [ %2485, %.preheader1895 ], [ %.01026, %2482 ]
  %2485 = getelementptr inbounds i8, ptr %2484, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2485) #9
  %2486 = icmp eq ptr %2485, %530
  br i1 %2486, label %.loopexit1896, label %.preheader1895

.loopexit1896:                                    ; preds = %.preheader1895, %2482, %.thread1845
  %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn1854 = phi { ptr, i32 } [ %2432, %.thread1845 ], [ %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2482 ], [ %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.preheader1895 ]
  %.1210071853 = phi i1 [ false, %.thread1845 ], [ %.111006, %2482 ], [ %.111006, %.preheader1895 ]
  %.510401852 = phi ptr [ %526, %.thread1845 ], [ %.41039, %2482 ], [ %.41039, %.preheader1895 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %530) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %527) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %528) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %528) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %527) #9
  %2487 = icmp eq ptr %526, %.510401852
  %or.cond187 = select i1 %.1210071853, i1 true, i1 %2487
  br i1 %or.cond187, label %.loopexit1894, label %.preheader1893

.preheader1893:                                   ; preds = %.loopexit1896, %.preheader1893
  %2488 = phi ptr [ %2489, %.preheader1893 ], [ %.510401852, %.loopexit1896 ]
  %2489 = getelementptr inbounds i8, ptr %2488, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2489) #9
  %2490 = icmp eq ptr %2489, %526
  br i1 %2490, label %.loopexit1894, label %.preheader1893

.loopexit1894:                                    ; preds = %.preheader1893, %.thread1855, %.loopexit1896
  %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn1860 = phi { ptr, i32 } [ %2431, %.thread1855 ], [ %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn1854, %.loopexit1896 ], [ %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn1854, %.preheader1893 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %526) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %523) #9
  br label %2491

2491:                                             ; preds = %.loopexit1894, %2429
  %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn1860, %.loopexit1894 ], [ %2430, %2429 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %524) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %524) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %523) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %522) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %519) #9
  br label %2492

2492:                                             ; preds = %2491, %2427
  %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2491 ], [ %2428, %2427 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %520) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %520) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %519) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %518) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %517) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %516) #9
  br label %2660

2493:                                             ; preds = %2346
  %2494 = landingpad { ptr, i32 }
          catch ptr null
  br label %2497

2495:                                             ; preds = %2353, %2351, %2348
  %2496 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %549) #9
  br label %2497

2497:                                             ; preds = %2495, %2493
  %.pn1676 = phi { ptr, i32 } [ %2496, %2495 ], [ %2494, %2493 ]
  %.305 = extractvalue { ptr, i32 } %.pn1676, 0
  %2498 = call ptr @__cxa_begin_catch(ptr %.305) #9
  %2499 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2500 unwind label %2564

2500:                                             ; preds = %2497
  %2501 = load ptr, ptr %2499, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %550) #9
  %2502 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2503 unwind label %2566

2503:                                             ; preds = %2500
  %2504 = load ptr, ptr %2502, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %550, ptr noundef nonnull align 8 dereferenceable(30) %2504, i32 noundef 2484)
          to label %2505 unwind label %2566

2505:                                             ; preds = %2503
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2501, ptr noundef nonnull align 8 dereferenceable(30) %550, ptr noundef nonnull @.str.508)
          to label %2506 unwind label %2566

2506:                                             ; preds = %2505
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %550) #9
  invoke void @__cxa_end_catch()
          to label %2507 unwind label %2568

2507:                                             ; preds = %2339, %2354, %2506
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %551) #9
  %2508 = call noundef ptr @_ZNKSt19__shared_ptr_accessI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  %2509 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  %2510 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %552) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %553) #9
  %2511 = 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 %554) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %555) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %555) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %554, ptr noundef nonnull @.str.545, ptr noundef nonnull align 1 dereferenceable(1) %555)
          to label %2512 unwind label %2571

2512:                                             ; preds = %2507
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %557) #9
  %2513 = 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 %558) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %559) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %559) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %558, ptr noundef nonnull @.str.544, ptr noundef nonnull align 1 dereferenceable(1) %559)
          to label %2514 unwind label %2573

2514:                                             ; preds = %2512
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %561) #9
  %2515 = 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 %562) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %563) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %563) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %562, ptr noundef nonnull @.str.542, ptr noundef nonnull align 1 dereferenceable(1) %563)
          to label %2516 unwind label %.thread1879

2516:                                             ; preds = %2514
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %565) #9
  %2517 = 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 %566) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %567) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %567) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %566, ptr noundef nonnull @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %567)
          to label %2518 unwind label %.thread1869

2518:                                             ; preds = %2516
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %565, ptr noundef nonnull align 8 dereferenceable(33088) %2517, ptr noundef nonnull align 8 dereferenceable(32) %566)
          to label %2519 unwind label %2577

2519:                                             ; preds = %2518
  %2520 = getelementptr inbounds i8, ptr %565, i64 16
  %2521 = 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 %568) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %569) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %569) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %568, ptr noundef nonnull @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %569)
          to label %2522 unwind label %2579

2522:                                             ; preds = %2519
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %2520, ptr noundef nonnull align 8 dereferenceable(33088) %2521, ptr noundef nonnull align 8 dereferenceable(32) %568)
          to label %2523 unwind label %2581

2523:                                             ; preds = %2522
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %570) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %570) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %564, ptr nonnull %565, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %570)
          to label %2524 unwind label %2583

2524:                                             ; preds = %2523
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %561, ptr noundef nonnull align 8 dereferenceable(33088) %2515, ptr noundef nonnull align 8 dereferenceable(32) %562, ptr noundef nonnull %564)
          to label %2525 unwind label %2585

2525:                                             ; preds = %2524
  %2526 = getelementptr inbounds i8, ptr %561, i64 16
  %2527 = 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 %571) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %572) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %572) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %571, ptr noundef nonnull @.str.542, ptr noundef nonnull align 1 dereferenceable(1) %572)
          to label %2528 unwind label %2587

2528:                                             ; preds = %2525
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %574) #9
  %2529 = 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 %575) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %576) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %576) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %575, ptr noundef nonnull @.str.137, ptr noundef nonnull align 1 dereferenceable(1) %576)
          to label %2530 unwind label %.thread1861

2530:                                             ; preds = %2528
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %574, ptr noundef nonnull align 8 dereferenceable(33088) %2529, ptr noundef nonnull align 8 dereferenceable(32) %575)
          to label %2531 unwind label %2590

2531:                                             ; preds = %2530
  %2532 = getelementptr inbounds i8, ptr %574, i64 16
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %2532, ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %577) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %577) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %573, ptr nonnull %574, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %577)
          to label %2533 unwind label %2592

2533:                                             ; preds = %2531
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %2526, ptr noundef nonnull align 8 dereferenceable(33088) %2527, ptr noundef nonnull align 8 dereferenceable(32) %571, ptr noundef nonnull %573)
          to label %2534 unwind label %2594

2534:                                             ; preds = %2533
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %578) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %578) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %560, ptr nonnull %561, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %578)
          to label %2535 unwind label %2596

2535:                                             ; preds = %2534
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %557, ptr noundef nonnull align 8 dereferenceable(33088) %2513, ptr noundef nonnull align 8 dereferenceable(32) %558, ptr noundef nonnull %560)
          to label %2536 unwind label %2598

2536:                                             ; preds = %2535
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %579) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %579) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %556, ptr nonnull %557, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %579)
          to label %2537 unwind label %2600

2537:                                             ; preds = %2536
  invoke void @_ZN14HtnTermFactory13CreateFunctorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrI7HtnTermESaISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %553, ptr noundef nonnull align 8 dereferenceable(33088) %2511, ptr noundef nonnull align 8 dereferenceable(32) %554, ptr noundef nonnull %556)
          to label %2538 unwind label %2602

2538:                                             ; preds = %2537
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %580) #9
  call void @_ZNSaISt10shared_ptrI7HtnTermEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %580) #9
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %552, ptr nonnull %553, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %580)
          to label %2539 unwind label %2604

2539:                                             ; preds = %2538
  invoke void @_ZN15HtnGoalResolver10ResolveAllEP14HtnTermFactoryP10HtnRuleSetRKSt6vectorISt10shared_ptrI7HtnTermESaIS7_EEiiPlPiPS9_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %551, ptr noundef nonnull align 8 dereferenceable(64) %2508, ptr noundef %2509, ptr noundef %2510, ptr noundef nonnull align 8 dereferenceable(24) %552, i32 noundef 0, i32 noundef 1000000, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %2540 unwind label %2606

2540:                                             ; preds = %2539
  %2541 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %551) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %551) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %552) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %580) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %580) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %553) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %556) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %579) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %579) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %557) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %560) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %578) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %578) #9
  %2542 = getelementptr inbounds i8, ptr %561, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2542) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %561) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %573) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %577) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %577) #9
  %2543 = getelementptr inbounds i8, ptr %574, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2543) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %574) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %575) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %576) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %576) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %575) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %574) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %571) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %572) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %572) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %571) #9
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %564) #9
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %570) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %570) #9
  %2544 = getelementptr inbounds i8, ptr %565, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2544) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %565) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %568) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %569) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %569) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %568) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %566) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %567) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %567) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %566) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %565) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %562) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %563) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %563) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %562) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %561) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %558) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %559) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %559) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %558) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %557) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %554) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %555) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %555) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %554) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %553) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %552) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %551) #9
  %2545 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ERKS8_(ptr noundef nonnull align 8 dereferenceable(24) %581, ptr noundef nonnull align 8 dereferenceable(24) %2545)
          to label %2546 unwind label %2628

2546:                                             ; preds = %2540
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %583) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %584) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %585) #9
  %2547 = 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 %586) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %587) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %587) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %586, ptr noundef nonnull @.str.114, ptr noundef nonnull align 1 dereferenceable(1) %587)
          to label %2548 unwind label %2630

2548:                                             ; preds = %2546
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %585, ptr noundef nonnull align 8 dereferenceable(33088) %2547, ptr noundef nonnull align 8 dereferenceable(32) %586)
          to label %2549 unwind label %2632

2549:                                             ; preds = %2548
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_EC2IRS2_S2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 8 dereferenceable(32) %584, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %585)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %588) #9
  call void @_ZNSaISt4pairISt10shared_ptrI7HtnTermES2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %588) #9
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2ESt16initializer_listIS4_ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %583, ptr nonnull %584, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %588)
          to label %2550 unwind label %2634

2550:                                             ; preds = %2549
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %589) #9
  call void @_ZNSaISt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %589) #9
  invoke void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEC2ESt16initializer_listIS6_ERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %582, ptr nonnull %583, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %589)
          to label %2551 unwind label %2636

2551:                                             ; preds = %2550
  %2552 = invoke noundef zeroext i1 @_Z14CheckSolutionsSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EES8_(ptr noundef nonnull %581, ptr noundef nonnull %582)
          to label %2553 unwind label %2638

2553:                                             ; preds = %2551
  %2554 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %2552)
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %582) #9
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %589) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %589) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %583) #9
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %588) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %588) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %584) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %585) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %586) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %587) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %587) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %586) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %585) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %584) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %583) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %581) #9
  br i1 %2554, label %2654, label %2555

2555:                                             ; preds = %2553
  %2556 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2557 unwind label %2628

2557:                                             ; preds = %2555
  %2558 = load ptr, ptr %2556, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %590) #9
  %2559 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2560 unwind label %2642

2560:                                             ; preds = %2557
  %2561 = load ptr, ptr %2559, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %590, ptr noundef nonnull align 8 dereferenceable(30) %2561, i32 noundef 2500)
          to label %2562 unwind label %2642

2562:                                             ; preds = %2560
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2558, ptr noundef nonnull align 8 dereferenceable(30) %590, ptr noundef nonnull @.str.547)
          to label %2563 unwind label %2642

2563:                                             ; preds = %2562
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %590) #9
  br label %2654

2564:                                             ; preds = %2497
  %2565 = landingpad { ptr, i32 }
          cleanup
  br label %2570

2566:                                             ; preds = %2505, %2503, %2500
  %2567 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %550) #9
  br label %2570

2568:                                             ; preds = %2653, %2506
  %2569 = landingpad { ptr, i32 }
          cleanup
  br label %2660

2570:                                             ; preds = %2566, %2564
  %.pn1677 = phi { ptr, i32 } [ %2567, %2566 ], [ %2565, %2564 ]
  invoke void @__cxa_end_catch()
          to label %2660 unwind label %2676

2571:                                             ; preds = %2507
  %2572 = landingpad { ptr, i32 }
          cleanup
  br label %2627

2573:                                             ; preds = %2512
  %2574 = landingpad { ptr, i32 }
          cleanup
  br label %2626

.thread1879:                                      ; preds = %2514
  %2575 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %563) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %563) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %562) #9
  br label %.loopexit1885

.thread1869:                                      ; preds = %2516
  %2576 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %567) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %567) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %566) #9
  br label %.loopexit1887

2577:                                             ; preds = %2518
  %2578 = landingpad { ptr, i32 }
          cleanup
  br label %2617

2579:                                             ; preds = %2519
  %2580 = landingpad { ptr, i32 }
          cleanup
  br label %2616

2581:                                             ; preds = %2522
  %2582 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1888

2583:                                             ; preds = %2523
  %2584 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1888.loopexit

2585:                                             ; preds = %2524
  %2586 = landingpad { ptr, i32 }
          cleanup
  br label %2613

2587:                                             ; preds = %2525
  %2588 = landingpad { ptr, i32 }
          cleanup
  br label %2612

.thread1861:                                      ; preds = %2528
  %2589 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %576) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %576) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %575) #9
  br label %2611

2590:                                             ; preds = %2530
  %2591 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1889

2592:                                             ; preds = %2531
  %2593 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1889.loopexit

2594:                                             ; preds = %2533
  %2595 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1890

2596:                                             ; preds = %2534
  %2597 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1890.loopexit

2598:                                             ; preds = %2535
  %2599 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1891

2600:                                             ; preds = %2536
  %2601 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1891.loopexit

2602:                                             ; preds = %2537
  %2603 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1892

2604:                                             ; preds = %2538
  %2605 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit1892.loopexit

2606:                                             ; preds = %2539
  %2607 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %552) #9
  br label %.loopexit1892.loopexit

.loopexit1892.loopexit:                           ; preds = %2606, %2604
  %.pn1679 = phi { ptr, i32 } [ %2607, %2606 ], [ %2605, %2604 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %580) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %580) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %553) #9
  br label %.loopexit1892

.loopexit1892:                                    ; preds = %.loopexit1892.loopexit, %2602
  %.pn1679.pn = phi { ptr, i32 } [ %2603, %2602 ], [ %.pn1679, %.loopexit1892.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %556) #9
  br label %.loopexit1891.loopexit

.loopexit1891.loopexit:                           ; preds = %.loopexit1892, %2600
  %.pn1679.pn.pn = phi { ptr, i32 } [ %.pn1679.pn, %.loopexit1892 ], [ %2601, %2600 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %579) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %579) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %557) #9
  br label %.loopexit1891

.loopexit1891:                                    ; preds = %.loopexit1891.loopexit, %2598
  %.pn1679.pn.pn.pn = phi { ptr, i32 } [ %2599, %2598 ], [ %.pn1679.pn.pn, %.loopexit1891.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %560) #9
  br label %.loopexit1890.loopexit

.loopexit1890.loopexit:                           ; preds = %.loopexit1891, %2596
  %.pn1679.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1679.pn.pn.pn, %.loopexit1891 ], [ %2597, %2596 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %578) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %578) #9
  %2608 = getelementptr inbounds i8, ptr %561, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2608) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %561) #9
  br label %.loopexit1890

.loopexit1890:                                    ; preds = %.loopexit1890.loopexit, %2594
  %2609 = phi i1 [ false, %2594 ], [ true, %.loopexit1890.loopexit ]
  %.pn1679.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2595, %2594 ], [ %.pn1679.pn.pn.pn.pn, %.loopexit1890.loopexit ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %573) #9
  br label %.loopexit1889.loopexit

.loopexit1889.loopexit:                           ; preds = %.loopexit1890, %2592
  %.1898 = phi i1 [ %2609, %.loopexit1890 ], [ false, %2592 ]
  %.pn1679.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1679.pn.pn.pn.pn.pn, %.loopexit1890 ], [ %2593, %2592 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %577) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %577) #9
  %2610 = getelementptr inbounds i8, ptr %574, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2610) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %574) #9
  br label %.loopexit1889

.loopexit1889:                                    ; preds = %.loopexit1889.loopexit, %2590
  %.2899 = phi i1 [ false, %2590 ], [ %.1898, %.loopexit1889.loopexit ]
  %.pn1679.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2591, %2590 ], [ %.pn1679.pn.pn.pn.pn.pn.pn, %.loopexit1889.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %575) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %576) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %576) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %575) #9
  br label %2611

2611:                                             ; preds = %.loopexit1889, %.thread1861
  %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn1868 = phi { ptr, i32 } [ %2589, %.thread1861 ], [ %.pn1679.pn.pn.pn.pn.pn.pn.pn, %.loopexit1889 ]
  %.39001867 = phi i1 [ false, %.thread1861 ], [ %.2899, %.loopexit1889 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %574) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %571) #9
  br label %2612

2612:                                             ; preds = %2611, %2587
  %.4901 = phi i1 [ %.39001867, %2611 ], [ false, %2587 ]
  %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn1868, %2611 ], [ %2588, %2587 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %572) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %572) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %571) #9
  br label %2613

2613:                                             ; preds = %2612, %2585
  %.0929 = phi ptr [ %2526, %2612 ], [ %561, %2585 ]
  %.5902 = phi i1 [ %.4901, %2612 ], [ false, %2585 ]
  %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2612 ], [ %2586, %2585 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %564) #9
  br label %.loopexit1888.loopexit

.loopexit1888.loopexit:                           ; preds = %2613, %2583
  %.1930 = phi ptr [ %.0929, %2613 ], [ %561, %2583 ]
  %.6903 = phi i1 [ %.5902, %2613 ], [ false, %2583 ]
  %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2613 ], [ %2584, %2583 ]
  call void @_ZNSt15__new_allocatorISt10shared_ptrI7HtnTermEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %570) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %570) #9
  %2614 = getelementptr inbounds i8, ptr %565, i64 16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2614) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %565) #9
  br label %.loopexit1888

.loopexit1888:                                    ; preds = %.loopexit1888.loopexit, %2581
  %.2931 = phi ptr [ %561, %2581 ], [ %.1930, %.loopexit1888.loopexit ]
  %2615 = phi i1 [ false, %2581 ], [ true, %.loopexit1888.loopexit ]
  %.7904 = phi i1 [ false, %2581 ], [ %.6903, %.loopexit1888.loopexit ]
  %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2582, %2581 ], [ %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit1888.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %568) #9
  br label %2616

2616:                                             ; preds = %.loopexit1888, %2579
  %.3932 = phi ptr [ %.2931, %.loopexit1888 ], [ %561, %2579 ]
  %.1919 = phi i1 [ %2615, %.loopexit1888 ], [ false, %2579 ]
  %.8905 = phi i1 [ %.7904, %.loopexit1888 ], [ false, %2579 ]
  %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit1888 ], [ %2580, %2579 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %569) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %569) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %568) #9
  br label %2617

2617:                                             ; preds = %2577, %2616
  %.4933 = phi ptr [ %.3932, %2616 ], [ %561, %2577 ]
  %.0922 = phi ptr [ %2520, %2616 ], [ %565, %2577 ]
  %.2920 = phi i1 [ %.1919, %2616 ], [ false, %2577 ]
  %.9906 = phi i1 [ %.8905, %2616 ], [ false, %2577 ]
  %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2616 ], [ %2578, %2577 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %566) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %567) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %567) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %566) #9
  %2618 = icmp eq ptr %565, %.0922
  %or.cond199 = select i1 %.2920, i1 true, i1 %2618
  br i1 %or.cond199, label %.loopexit1887, label %.preheader1886

.preheader1886:                                   ; preds = %2617, %.preheader1886
  %2619 = phi ptr [ %2620, %.preheader1886 ], [ %.0922, %2617 ]
  %2620 = getelementptr inbounds i8, ptr %2619, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2620) #9
  %2621 = icmp eq ptr %2620, %565
  br i1 %2621, label %.loopexit1887, label %.preheader1886

.loopexit1887:                                    ; preds = %.preheader1886, %2617, %.thread1869
  %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn1878 = phi { ptr, i32 } [ %2576, %.thread1869 ], [ %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2617 ], [ %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.preheader1886 ]
  %.109071877 = phi i1 [ false, %.thread1869 ], [ %.9906, %2617 ], [ %.9906, %.preheader1886 ]
  %.59341876 = phi ptr [ %561, %.thread1869 ], [ %.4933, %2617 ], [ %.4933, %.preheader1886 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %565) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %562) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %563) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %563) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %562) #9
  %2622 = icmp eq ptr %561, %.59341876
  %or.cond202 = select i1 %.109071877, i1 true, i1 %2622
  br i1 %or.cond202, label %.loopexit1885, label %.preheader

.preheader:                                       ; preds = %.loopexit1887, %.preheader
  %2623 = phi ptr [ %2624, %.preheader ], [ %.59341876, %.loopexit1887 ]
  %2624 = getelementptr inbounds i8, ptr %2623, i64 -16
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2624) #9
  %2625 = icmp eq ptr %2624, %561
  br i1 %2625, label %.loopexit1885, label %.preheader

.loopexit1885:                                    ; preds = %.preheader, %.thread1879, %.loopexit1887
  %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn1884 = phi { ptr, i32 } [ %2575, %.thread1879 ], [ %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn1878, %.loopexit1887 ], [ %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn1878, %.preheader ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %561) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %558) #9
  br label %2626

2626:                                             ; preds = %.loopexit1885, %2573
  %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn1884, %.loopexit1885 ], [ %2574, %2573 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %559) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %559) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %558) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %557) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %554) #9
  br label %2627

2627:                                             ; preds = %2626, %2571
  %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2626 ], [ %2572, %2571 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %555) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %555) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %554) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %553) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %552) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %551) #9
  br label %2660

2628:                                             ; preds = %2555, %2540
  %2629 = landingpad { ptr, i32 }
          catch ptr null
  br label %2644

2630:                                             ; preds = %2546
  %2631 = landingpad { ptr, i32 }
          catch ptr null
  br label %2641

2632:                                             ; preds = %2548
  %2633 = landingpad { ptr, i32 }
          catch ptr null
  br label %2640

2634:                                             ; preds = %2549
  %2635 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit

2636:                                             ; preds = %2550
  %2637 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit.loopexit

2638:                                             ; preds = %2551
  %2639 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %582) #9
  br label %.loopexit.loopexit

.loopexit.loopexit:                               ; preds = %2638, %2636
  %.pn1699 = phi { ptr, i32 } [ %2639, %2638 ], [ %2637, %2636 ]
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %589) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %589) #9
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %583) #9
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %2634
  %.pn1699.pn = phi { ptr, i32 } [ %2635, %2634 ], [ %.pn1699, %.loopexit.loopexit ]
  call void @_ZNSt15__new_allocatorISt4pairISt10shared_ptrI7HtnTermES3_EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %588) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %588) #9
  call void @_ZNSt4pairISt10shared_ptrI7HtnTermES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %584) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %585) #9
  br label %2640

2640:                                             ; preds = %.loopexit, %2632
  %.pn1699.pn.pn = phi { ptr, i32 } [ %.pn1699.pn, %.loopexit ], [ %2633, %2632 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %586) #9
  br label %2641

2641:                                             ; preds = %2640, %2630
  %.pn1699.pn.pn.pn = phi { ptr, i32 } [ %.pn1699.pn.pn, %2640 ], [ %2631, %2630 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %587) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %587) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %586) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %585) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %584) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %583) #9
  call void @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %581) #9
  br label %2644

2642:                                             ; preds = %2562, %2560, %2557
  %2643 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %590) #9
  br label %2644

2644:                                             ; preds = %2642, %2641, %2628
  %.pn1700 = phi { ptr, i32 } [ %2643, %2642 ], [ %2629, %2628 ], [ %.pn1699.pn.pn.pn, %2641 ]
  %.330 = extractvalue { ptr, i32 } %.pn1700, 0
  %2645 = call ptr @__cxa_begin_catch(ptr %.330) #9
  %2646 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %2647 unwind label %2655

2647:                                             ; preds = %2644
  %2648 = load ptr, ptr %2646, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %591) #9
  %2649 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %2650 unwind label %2657

2650:                                             ; preds = %2647
  %2651 = load ptr, ptr %2649, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %591, ptr noundef nonnull align 8 dereferenceable(30) %2651, i32 noundef 2500)
          to label %2652 unwind label %2657

2652:                                             ; preds = %2650
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %2648, ptr noundef nonnull align 8 dereferenceable(30) %591, ptr noundef nonnull @.str.548)
          to label %2653 unwind label %2657

2653:                                             ; preds = %2652
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %591) #9
  invoke void @__cxa_end_catch()
          to label %2654 unwind label %2568

2654:                                             ; preds = %2553, %2563, %2653
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %486) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %486) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %480) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %480) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %474) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %474) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %420) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %420) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %410) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %410) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %393) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %393) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %383) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %383) #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 nonnull %12) #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 %9) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #9
  call void @_ZNSt12__shared_ptrI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  call void @_ZNSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #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

2655:                                             ; preds = %2644
  %2656 = landingpad { ptr, i32 }
          cleanup
  br label %2659

2657:                                             ; preds = %2652, %2650, %2647
  %2658 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %591) #9
  br label %2659

2659:                                             ; preds = %2657, %2655
  %.pn1701 = phi { ptr, i32 } [ %2658, %2657 ], [ %2656, %2655 ]
  invoke void @__cxa_end_catch()
          to label %2660 unwind label %2676

2660:                                             ; preds = %2659, %2570, %2627, %2568, %2492, %2426, %2407
  %.pn1703 = phi { ptr, i32 } [ %2569, %2568 ], [ %.pn1701, %2659 ], [ %.pn1679.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2627 ], [ %.pn1677, %2570 ], [ %.pn1654.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2492 ], [ %.pn1647.pn.pn.pn.pn.pn, %2426 ], [ %.pn1640.pn.pn.pn.pn.pn, %2407 ]
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %486) #9
  br label %2661

2661:                                             ; preds = %2660, %2388
  %.pn1703.pn = phi { ptr, i32 } [ %.pn1703, %2660 ], [ %.pn1637.pn, %2388 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %486) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %480) #9
  br label %2662

2662:                                             ; preds = %2661, %2379
  %.pn1703.pn.pn = phi { ptr, i32 } [ %.pn1703.pn, %2661 ], [ %.pn1634.pn, %2379 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %480) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %474) #9
  br label %2663

2663:                                             ; preds = %2662, %2370
  %.pn1703.pn.pn.pn = phi { ptr, i32 } [ %.pn1703.pn.pn, %2662 ], [ %.pn1631.pn, %2370 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %474) #9
  br label %2664

2664:                                             ; preds = %2361, %2663, %2359, %2232, %2206
  %.pn1703.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1703.pn.pn.pn, %2663 ], [ %2360, %2359 ], [ %.pn1629, %2361 ], [ %.pn1618.pn.pn.pn.pn.pn.pn.pn, %2232 ], [ %.pn1609.pn.pn.pn.pn.pn.pn.pn, %2206 ]
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %420) #9
  br label %2665

2665:                                             ; preds = %2664, %2175
  %.pn1703.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1703.pn.pn.pn.pn, %2664 ], [ %.pn1597.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2175 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %420) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %410) #9
  br label %2666

2666:                                             ; preds = %2665, %2136
  %.pn1703.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1703.pn.pn.pn.pn.pn, %2665 ], [ %.pn1590.pn.pn.pn.pn.pn, %2136 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %410) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %393) #9
  br label %2667

2667:                                             ; preds = %2666, %2114
  %.pn1703.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1703.pn.pn.pn.pn.pn.pn, %2666 ], [ %.pn1578.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2114 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %393) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %383) #9
  br label %2668

2668:                                             ; preds = %2667, %2075
  %.pn1703.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1703.pn.pn.pn.pn.pn.pn.pn, %2667 ], [ %.pn1571.pn.pn.pn.pn.pn, %2075 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %383) #9
  br label %2669

2669:                                             ; preds = %2028, %1819, %1727, %1561, %1352, %1186, %1049, %926, %823, %747, %2668, %2053, %1868, %1842, %1753, %1664, %1648, %1623, %1598, %1430, %1414, %1399, %1374, %1242, %1230, %1215, %1109, %1093, %1078, %953, %941, %850, %838, %763, %745, %701, %692, %677
  %.pn1703.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1703.pn.pn.pn.pn.pn.pn.pn.pn, %2668 ], [ %.pn1563.pn.pn.pn.pn.pn.pn, %2053 ], [ %746, %745 ], [ %.pn1561, %2028 ], [ %.pn1551.pn.pn.pn.pn.pn.pn.pn, %1868 ], [ %.pn1543.pn.pn.pn.pn.pn.pn, %1842 ], [ %.pn1541, %1819 ], [ %.pn1531.pn.pn.pn.pn.pn.pn.pn, %1753 ], [ %.pn1529, %1727 ], [ %.pn1520.pn.pn.pn.pn.pn, %1664 ], [ %.pn1512.pn.pn.pn.pn.pn.pn, %1648 ], [ %.pn1504.pn.pn.pn.pn.pn.pn, %1623 ], [ %.pn1493.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1598 ], [ %.pn1491, %1561 ], [ %.pn1482.pn.pn.pn.pn.pn, %1430 ], [ %.pn1476.pn.pn.pn.pn, %1414 ], [ %.pn1468.pn.pn.pn.pn.pn.pn, %1399 ], [ %.pn1460.pn.pn.pn.pn.pn.pn, %1374 ], [ %.pn1458, %1352 ], [ %.pn1451.pn.pn.pn, %1242 ], [ %.pn1445.pn.pn.pn.pn, %1230 ], [ %.pn1433.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1215 ], [ %.pn1431, %1186 ], [ %.pn1423.pn.pn.pn.pn.pn, %1109 ], [ %.pn1417.pn.pn.pn.pn, %1093 ], [ %.pn1405.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1078 ], [ %.pn1403, %1049 ], [ %.pn1396.pn.pn.pn, %953 ], [ %.pn1390.pn.pn.pn.pn, %941 ], [ %.pn1388, %926 ], [ %.pn1381.pn.pn.pn, %850 ], [ %.pn1375.pn.pn.pn.pn, %838 ], [ %.pn1373, %823 ], [ %.pn1365.pn.pn.pn.pn.pn, %763 ], [ %.pn1363, %747 ], [ %.pn1358.pn.pn, %701 ], [ %.pn1352.pn.pn.pn.pn, %692 ], [ %.pn1349.pn, %677 ]
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  br label %2670

2670:                                             ; preds = %2669, %669
  %.pn1703.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1703.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2669 ], [ %.pn1347, %669 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  br label %2671

2671:                                             ; preds = %2670, %664
  %.pn1703.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1703.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2670 ], [ %.pn1345, %664 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  br label %2672

2672:                                             ; preds = %2671, %659
  %.pn1703.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1703.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2671 ], [ %.pn, %659 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #9
  call void @_ZNSt12__shared_ptrI15HtnGoalResolverLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  br label %2673

2673:                                             ; preds = %2672, %653, %651
  %.pn1703.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1703.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2672 ], [ %652, %651 ], [ %654, %653 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  call void @_ZNSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  br label %2674

2674:                                             ; preds = %2673, %649, %647
  %.pn1703.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1703.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2673 ], [ %648, %647 ], [ %650, %649 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #9
  call void @_ZNSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  br label %2675

2675:                                             ; preds = %2674, %645
  %.pn1703.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1703.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2674 ], [ %646, %645 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #9
  resume { ptr, i32 } %.pn1703.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn

2676:                                             ; preds = %2659, %2570, %2361, %2028, %1819, %1727, %1561, %1352, %1186, %1049, %926, %823, %747
  %2677 = landingpad { ptr, i32 }
          catch ptr null
  %2678 = extractvalue { ptr, i32 } %2677, 0
  call void @__clang_call_terminate(ptr %2678) #12
  unreachable
}

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

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

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

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

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

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

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