; LLVM IR from EricZinda/InductorHtn :: src/FXPlatform/Prolog (HtnGoalResolver)

; 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.25" = type { %"class.std::__shared_ptr.26" }
%"class.std::__shared_ptr.26" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"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::shared_ptr.28" = type { %"class.std::__shared_ptr.29" }
%"class.std::__shared_ptr.29" = type { ptr, %"class.std::__shared_count" }
%"class.std::allocator" = type { i8 }
%"class.std::shared_ptr.0" = type { %"class.std::__shared_ptr.1" }
%"class.std::__shared_ptr.1" = type { ptr, %"class.std::__shared_count" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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.__gnu_cxx::__normal_iterator.155" = type { ptr }
%class.ResolveState = type <{ i8, [3 x i8], i32, %"class.std::shared_ptr.28", i32, i32, i32, [4 x i8], %"class.std::vector", %"class.std::__cxx11::basic_string", i8, [7 x i8], i64, %"class.std::__cxx11::basic_string", %"class.std::shared_ptr", i32, i32, ptr, %"class.std::shared_ptr.71", i64, %"class.std::shared_ptr.9", i64, ptr, i64, i32, [4 x i8] }>
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.71" = type { %"class.std::__shared_ptr.72" }
%"class.std::__shared_ptr.72" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.9" = type { %"class.std::__shared_ptr.10" }
%"class.std::__shared_ptr.10" = type { ptr, %"class.std::__shared_count" }
%class.ResolveNode = type { i32, %"class.std::vector", i32, i32, %"class.std::shared_ptr.6", %"class.std::shared_ptr.0", i64, i8, i8, %"class.std::shared_ptr.9", %"class.std::shared_ptr.12", i8, i8, %"class.std::shared_ptr" }
%"class.std::shared_ptr.6" = type { %"class.std::__shared_ptr.7" }
%"class.std::__shared_ptr.7" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.12" = type { %"class.std::__shared_ptr.13" }
%"class.std::__shared_ptr.13" = type { ptr, %"class.std::__shared_count" }

@.str.4 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [48 x i8], align 1

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11ResolveNode15CreateChildNodeEP14HtnTermFactoryRKSt6vectorISt10shared_ptrI7HtnTermESaIS5_EES9_RKS2_ISt4pairIS5_S5_ESaISB_EEPi(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.25") align 8, ptr noundef nonnull align 8 dereferenceable(144), ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7HtnTerm4nameB5cxx11Ev(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN9NanoTrace5TraceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEdRKS6_i11TraceDetailT_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, i32 noundef, ptr noundef) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef, i8 noundef signext, ptr noundef nonnull align 1 dereferenceable(1)) 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 #1 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11ResolveNode11currentGoalEv(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.28") align 8, ptr noundef nonnull align 8 dereferenceable(144)) #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN12ResolveState13RecordFailureESt10shared_ptrI7HtnTermES0_I11ResolveNodeE(ptr noundef nonnull align 8 dereferenceable(244), ptr noundef, ptr noundef) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN9NanoTrace5TraceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EEdRKS6_i11TraceDetailT_RKT0_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, i32 noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

declare void @_ZN7HtnTerm8ToStringB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(72), i1 noundef zeroext, i1 noundef zeroext) #5

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN15HtnGoalResolver13RuleAtomCharsEP12ResolveState(ptr noundef %0) #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.std::shared_ptr.25", align 8
  %4 = alloca %"class.std::shared_ptr.28", align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator", align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::shared_ptr.28", align 8
  %18 = alloca %"class.std::shared_ptr.28", align 8
  %19 = alloca %"class.std::shared_ptr.28", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca i32, align 4
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator", align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::shared_ptr.28", align 8
  %31 = alloca %"class.std::shared_ptr.25", align 8
  %32 = alloca %"class.std::shared_ptr.28", align 8
  %33 = alloca %"class.std::shared_ptr.0", align 8
  %34 = alloca %"class.std::shared_ptr.28", align 8
  %35 = alloca %"class.std::shared_ptr.28", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator", align 1
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::shared_ptr.25", align 8
  %43 = alloca %"class.std::vector", align 8
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::vector", align 8
  %46 = alloca ptr, align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.155", align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.155", align 8
  %49 = alloca i8, align 1
  %50 = alloca %"class.std::shared_ptr.28", align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::allocator", align 1
  %53 = alloca %"class.std::shared_ptr.28", align 8
  %54 = alloca %"class.std::vector", align 8
  %55 = alloca %"class.std::shared_ptr.0", align 8
  %56 = alloca %"class.std::shared_ptr.28", align 8
  %57 = alloca %"class.std::shared_ptr.28", align 8
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::allocator", align 1
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::shared_ptr.28", align 8
  %66 = alloca %"class.std::shared_ptr.25", align 8
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::allocator", align 1
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::shared_ptr.25", align 8
  %74 = alloca %"class.std::vector", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %3) #7
  %75 = load ptr, ptr %2, align 8, !tbaa !5
  %76 = getelementptr inbounds %class.ResolveState, ptr %75, i32 0, i32 18
  %77 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %76) #7
  %78 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %77) #7
  call void @_ZNSt10shared_ptrI11ResolveNodeEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %78) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %4) #7
  %79 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  invoke void @_ZN11ResolveNode11currentGoalEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.28") align 8 %4, ptr noundef nonnull align 8 dereferenceable(144) %79)
          to label %80 unwind label %89

80:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  %81 = load ptr, ptr %2, align 8, !tbaa !5
  %82 = getelementptr inbounds %class.ResolveState, ptr %81, i32 0, i32 18
  store ptr %82, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  %83 = load ptr, ptr %2, align 8, !tbaa !5
  %84 = getelementptr inbounds %class.ResolveState, ptr %83, i32 0, i32 22
  %85 = load ptr, ptr %84, align 8, !tbaa !9
  store ptr %85, ptr %8, align 8, !tbaa !5
  %86 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  %87 = getelementptr inbounds %class.ResolveNode, ptr %86, i32 0, i32 0
  %88 = load i32, ptr %87, align 8, !tbaa !29
  switch i32 %88, label %796 [
    i32 0, label %93
  ]

89:                                               ; preds = %1
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %5, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %6, align 4
  br label %800

93:                                               ; preds = %80
  %94 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  %95 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %94)
          to label %96 unwind label %160

96:                                               ; preds = %93
  %97 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %95) #7
  %98 = icmp eq i64 %97, 2
  br i1 %98, label %99, label %115

99:                                               ; preds = %96
  %100 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  %101 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %100)
          to label %102 unwind label %160

102:                                              ; preds = %99
  %103 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef 0) #7
  %104 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %103) #7
  %105 = invoke noundef zeroext i1 @_ZNK7HtnTerm10isVariableEv(ptr noundef nonnull align 8 dereferenceable(72) %104)
          to label %106 unwind label %160

106:                                              ; preds = %102
  br i1 %105, label %107, label %215

107:                                              ; preds = %106
  %108 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  %109 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %108)
          to label %110 unwind label %160

110:                                              ; preds = %107
  %111 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %109, i64 noundef 1) #7
  %112 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %111) #7
  %113 = invoke noundef zeroext i1 @_ZNK7HtnTerm10isVariableEv(ptr noundef nonnull align 8 dereferenceable(72) %112)
          to label %114 unwind label %160

114:                                              ; preds = %110
  br i1 %113, label %115, label %215

115:                                              ; preds = %114, %96
  %116 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %117 unwind label %160

117:                                              ; preds = %115
  %118 = invoke noundef i64 @_ZN9NanoTrace16allowedTraceTypeEv(ptr noundef nonnull align 8 dereferenceable(12) %116)
          to label %119 unwind label %160

119:                                              ; preds = %117
  %120 = and i64 8388608, %118
  %121 = icmp ne i64 %120, 0
  br i1 %121, label %122, label %193

122:                                              ; preds = %119
  %123 = load ptr, ptr %2, align 8, !tbaa !5
  %124 = getelementptr inbounds %class.ResolveState, ptr %123, i32 0, i32 10
  %125 = load i8, ptr %124, align 8, !tbaa !38, !range !39, !noundef !40
  %126 = trunc i8 %125 to i1
  %127 = zext i1 %126 to i64
  %128 = select i1 %126, i32 0, i32 2
  %129 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %130 unwind label %160

130:                                              ; preds = %122
  %131 = invoke noundef i32 @_ZN9NanoTrace11detailLevelEv(ptr noundef nonnull align 8 dereferenceable(12) %129)
          to label %132 unwind label %160

132:                                              ; preds = %130
  %133 = icmp sle i32 %128, %131
  br i1 %133, label %134, label %193

134:                                              ; preds = %132
  %135 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %136 unwind label %160

136:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #7
  %137 = load ptr, ptr %2, align 8, !tbaa !5
  %138 = getelementptr inbounds %class.ResolveState, ptr %137, i32 0, i32 15
  %139 = load i32, ptr %138, align 8, !tbaa !41
  %140 = sext i32 %139 to i64
  %141 = load ptr, ptr %7, align 8, !tbaa !5
  %142 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %141) #7
  %143 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %142) #7
  %144 = add i64 %140, %143
  %145 = mul i64 %144, 11
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, i64 noundef %145, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %146 unwind label %164

146:                                              ; preds = %136
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef @.str.5, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %147 unwind label %168

147:                                              ; preds = %146
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef @.str.68)
          to label %148 unwind label %172

148:                                              ; preds = %147
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef @.str.82)
          to label %149 unwind label %176

149:                                              ; preds = %148
  %150 = load ptr, ptr %2, align 8, !tbaa !5
  %151 = getelementptr inbounds %class.ResolveState, ptr %150, i32 0, i32 10
  %152 = load i8, ptr %151, align 8, !tbaa !38, !range !39, !noundef !40
  %153 = trunc i8 %152 to i1
  %154 = zext i1 %153 to i64
  %155 = select i1 %153, i32 0, i32 2
  %156 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  invoke void @_ZN7HtnTerm8ToStringB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(72) %156, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %157 unwind label %180

157:                                              ; preds = %149
  %158 = invoke noundef double @_ZN9NanoTrace5TraceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEdRKS6_i11TraceDetailT_(ptr noundef nonnull align 8 dereferenceable(12) %135, ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 8388608, i32 noundef %155, ptr noundef %14)
          to label %159 unwind label %184

159:                                              ; preds = %157
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #7
  br label %193

160:                                              ; preds = %796, %134, %130, %122, %117, %115, %110, %107, %102, %99, %93
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %5, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %6, align 4
  br label %799

164:                                              ; preds = %136
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %5, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %6, align 4
  br label %192

168:                                              ; preds = %146
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %5, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %6, align 4
  br label %191

172:                                              ; preds = %147
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %5, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %6, align 4
  br label %190

176:                                              ; preds = %148
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %5, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %6, align 4
  br label %189

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

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

188:                                              ; preds = %184, %180
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %189

189:                                              ; preds = %188, %176
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %190

190:                                              ; preds = %189, %172
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %191

191:                                              ; preds = %190, %168
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  br label %192

192:                                              ; preds = %191, %164
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #7
  br label %799

193:                                              ; preds = %159, %132, %119
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #7
  %194 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  invoke void @_ZN7HtnTerm8ToStringB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(72) %194, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %195 unwind label %201

195:                                              ; preds = %193
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef @.str.83, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %196 unwind label %205

196:                                              ; preds = %195
  %197 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  invoke void @_Z35failfast_uncaught_exception_handlerbPKcS0_l(i1 noundef zeroext false, ptr noundef %197, ptr noundef @.str.4, i64 noundef 1245)
          to label %198 unwind label %209

198:                                              ; preds = %196
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  %199 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  %200 = getelementptr inbounds %class.ResolveNode, ptr %199, i32 0, i32 0
  store i32 8, ptr %200, align 8, !tbaa !29
  br label %795

201:                                              ; preds = %193
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %5, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %6, align 4
  br label %214

205:                                              ; preds = %195
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %5, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %6, align 4
  br label %213

209:                                              ; preds = %196
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %5, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %213

213:                                              ; preds = %209, %205
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  br label %214

214:                                              ; preds = %213, %201
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  br label %799

215:                                              ; preds = %114, %106
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #7
  %216 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  %217 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %216)
          to label %218 unwind label %268

218:                                              ; preds = %215
  %219 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %217, i64 noundef 0) #7
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %219) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #7
  %220 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  %221 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %220)
          to label %222 unwind label %272

222:                                              ; preds = %218
  %223 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %221, i64 noundef 1) #7
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %223) #7
  %224 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  %225 = invoke noundef zeroext i1 @_ZNK7HtnTerm10isVariableEv(ptr noundef nonnull align 8 dereferenceable(72) %224)
          to label %226 unwind label %276

226:                                              ; preds = %222
  br i1 %225, label %227, label %522

227:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #7
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %228

228:                                              ; preds = %301, %227
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #7
  %229 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  invoke void @_ZNK7HtnTerm4nameB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(72) %229)
          to label %230 unwind label %280

230:                                              ; preds = %228
  %231 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.84)
          to label %232 unwind label %284

232:                                              ; preds = %230
  br i1 %231, label %233, label %247

233:                                              ; preds = %232
  %234 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  %235 = invoke noundef i32 @_ZNK7HtnTerm5arityEv(ptr noundef nonnull align 8 dereferenceable(72) %234)
          to label %236 unwind label %284

236:                                              ; preds = %233
  %237 = icmp eq i32 %235, 2
  br i1 %237, label %238, label %247

238:                                              ; preds = %236
  %239 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  %240 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %239)
          to label %241 unwind label %284

241:                                              ; preds = %238
  %242 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %240, i64 noundef 0) #7
  %243 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %242) #7
  %244 = invoke noundef zeroext i1 @_ZNK7HtnTerm10isVariableEv(ptr noundef nonnull align 8 dereferenceable(72) %243)
          to label %245 unwind label %284

245:                                              ; preds = %241
  %246 = xor i1 %244, true
  br label %247

247:                                              ; preds = %245, %236, %232
  %248 = phi i1 [ false, %236 ], [ false, %232 ], [ %246, %245 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #7
  br i1 %248, label %249, label %303

249:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #7
  %250 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  %251 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %250)
          to label %252 unwind label %289

252:                                              ; preds = %249
  %253 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %251, i64 noundef 0) #7
  %254 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %253) #7
  invoke void @_ZNK7HtnTerm4nameB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(72) %254)
          to label %255 unwind label %289

255:                                              ; preds = %252
  %256 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  %257 = icmp eq i64 %256, 1
  br i1 %257, label %258, label %297

258:                                              ; preds = %255
  %259 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %22, i64 noundef 0)
          to label %260 unwind label %293

260:                                              ; preds = %258
  %261 = load i8, ptr %259, align 1, !tbaa !42
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %20, i8 noundef signext %261)
          to label %262 unwind label %293

262:                                              ; preds = %260
  %263 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  %264 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %263)
          to label %265 unwind label %293

265:                                              ; preds = %262
  %266 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %264, i64 noundef 1) #7
  %267 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %266) #7
  br label %298

268:                                              ; preds = %215
  %269 = landingpad { ptr, i32 }
          cleanup
  %270 = extractvalue { ptr, i32 } %269, 0
  store ptr %270, ptr %5, align 8
  %271 = extractvalue { ptr, i32 } %269, 1
  store i32 %271, ptr %6, align 4
  br label %794

272:                                              ; preds = %218
  %273 = landingpad { ptr, i32 }
          cleanup
  %274 = extractvalue { ptr, i32 } %273, 0
  store ptr %274, ptr %5, align 8
  %275 = extractvalue { ptr, i32 } %273, 1
  store i32 %275, ptr %6, align 4
  br label %793

276:                                              ; preds = %222
  %277 = landingpad { ptr, i32 }
          cleanup
  %278 = extractvalue { ptr, i32 } %277, 0
  store ptr %278, ptr %5, align 8
  %279 = extractvalue { ptr, i32 } %277, 1
  store i32 %279, ptr %6, align 4
  br label %792

280:                                              ; preds = %228
  %281 = landingpad { ptr, i32 }
          cleanup
  %282 = extractvalue { ptr, i32 } %281, 0
  store ptr %282, ptr %5, align 8
  %283 = extractvalue { ptr, i32 } %281, 1
  store i32 %283, ptr %6, align 4
  br label %288

284:                                              ; preds = %241, %238, %233, %230
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %5, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  br label %288

288:                                              ; preds = %284, %280
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #7
  br label %521

289:                                              ; preds = %252, %249
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %5, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %6, align 4
  br label %302

293:                                              ; preds = %262, %260, %258
  %294 = landingpad { ptr, i32 }
          cleanup
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %5, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  br label %302

297:                                              ; preds = %255
  store i32 4, ptr %23, align 4
  br label %299

298:                                              ; preds = %265
  store i32 0, ptr %23, align 4
  br label %299

299:                                              ; preds = %298, %297
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  %300 = load i32, ptr %23, align 4
  switch i32 %300, label %806 [
    i32 0, label %301
    i32 4, label %303
  ]

301:                                              ; preds = %299
  br label %228, !llvm.loop !43

302:                                              ; preds = %293, %289
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  br label %521

303:                                              ; preds = %299, %247
  %304 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  %305 = icmp eq i64 %304, 0
  br i1 %305, label %306, label %393

306:                                              ; preds = %303
  %307 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %308 unwind label %351

308:                                              ; preds = %306
  %309 = invoke noundef i64 @_ZN9NanoTrace16allowedTraceTypeEv(ptr noundef nonnull align 8 dereferenceable(12) %307)
          to label %310 unwind label %351

310:                                              ; preds = %308
  %311 = and i64 8388608, %309
  %312 = icmp ne i64 %311, 0
  br i1 %312, label %313, label %384

313:                                              ; preds = %310
  %314 = load ptr, ptr %2, align 8, !tbaa !5
  %315 = getelementptr inbounds %class.ResolveState, ptr %314, i32 0, i32 10
  %316 = load i8, ptr %315, align 8, !tbaa !38, !range !39, !noundef !40
  %317 = trunc i8 %316 to i1
  %318 = zext i1 %317 to i64
  %319 = select i1 %317, i32 0, i32 2
  %320 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %321 unwind label %351

321:                                              ; preds = %313
  %322 = invoke noundef i32 @_ZN9NanoTrace11detailLevelEv(ptr noundef nonnull align 8 dereferenceable(12) %320)
          to label %323 unwind label %351

323:                                              ; preds = %321
  %324 = icmp sle i32 %319, %322
  br i1 %324, label %325, label %384

325:                                              ; preds = %323
  %326 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %327 unwind label %351

327:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #7
  %328 = load ptr, ptr %2, align 8, !tbaa !5
  %329 = getelementptr inbounds %class.ResolveState, ptr %328, i32 0, i32 15
  %330 = load i32, ptr %329, align 8, !tbaa !41
  %331 = sext i32 %330 to i64
  %332 = load ptr, ptr %7, align 8, !tbaa !5
  %333 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %332) #7
  %334 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %333) #7
  %335 = add i64 %331, %334
  %336 = mul i64 %335, 11
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, i64 noundef %336, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %337 unwind label %355

337:                                              ; preds = %327
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef @.str.5, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %338 unwind label %359

338:                                              ; preds = %337
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef @.str.14)
          to label %339 unwind label %363

339:                                              ; preds = %338
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.85)
          to label %340 unwind label %367

340:                                              ; preds = %339
  %341 = load ptr, ptr %2, align 8, !tbaa !5
  %342 = getelementptr inbounds %class.ResolveState, ptr %341, i32 0, i32 10
  %343 = load i8, ptr %342, align 8, !tbaa !38, !range !39, !noundef !40
  %344 = trunc i8 %343 to i1
  %345 = zext i1 %344 to i64
  %346 = select i1 %344, i32 0, i32 2
  %347 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  invoke void @_ZN7HtnTerm8ToStringB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 8 dereferenceable(72) %347, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %348 unwind label %371

348:                                              ; preds = %340
  %349 = invoke noundef double @_ZN9NanoTrace5TraceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEdRKS6_i11TraceDetailT_(ptr noundef nonnull align 8 dereferenceable(12) %326, ptr noundef nonnull align 8 dereferenceable(32) %24, i32 noundef 8388608, i32 noundef %346, ptr noundef %29)
          to label %350 unwind label %375

350:                                              ; preds = %348
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #7
  br label %384

351:                                              ; preds = %325, %321, %313, %308, %306
  %352 = landingpad { ptr, i32 }
          cleanup
  %353 = extractvalue { ptr, i32 } %352, 0
  store ptr %353, ptr %5, align 8
  %354 = extractvalue { ptr, i32 } %352, 1
  store i32 %354, ptr %6, align 4
  br label %521

355:                                              ; preds = %327
  %356 = landingpad { ptr, i32 }
          cleanup
  %357 = extractvalue { ptr, i32 } %356, 0
  store ptr %357, ptr %5, align 8
  %358 = extractvalue { ptr, i32 } %356, 1
  store i32 %358, ptr %6, align 4
  br label %383

359:                                              ; preds = %337
  %360 = landingpad { ptr, i32 }
          cleanup
  %361 = extractvalue { ptr, i32 } %360, 0
  store ptr %361, ptr %5, align 8
  %362 = extractvalue { ptr, i32 } %360, 1
  store i32 %362, ptr %6, align 4
  br label %382

363:                                              ; preds = %338
  %364 = landingpad { ptr, i32 }
          cleanup
  %365 = extractvalue { ptr, i32 } %364, 0
  store ptr %365, ptr %5, align 8
  %366 = extractvalue { ptr, i32 } %364, 1
  store i32 %366, ptr %6, align 4
  br label %381

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

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

375:                                              ; preds = %348
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %5, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  br label %379

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

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

381:                                              ; preds = %380, %363
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  br label %382

382:                                              ; preds = %381, %359
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  br label %383

383:                                              ; preds = %382, %355
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #7
  br label %521

384:                                              ; preds = %350, %323, %310
  %385 = load ptr, ptr %2, align 8, !tbaa !5
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(16) %4) #7
  call void @_ZNSt10shared_ptrI11ResolveNodeEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  invoke void @_ZN12ResolveState13RecordFailureESt10shared_ptrI7HtnTermES0_I11ResolveNodeE(ptr noundef nonnull align 8 dereferenceable(244) %385, ptr noundef %30, ptr noundef %31)
          to label %386 unwind label %389

386:                                              ; preds = %384
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #7
  %387 = load ptr, ptr %7, align 8, !tbaa !5
  %388 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %387) #7
  call void @_ZNSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %388) #7
  br label %520

389:                                              ; preds = %384
  %390 = landingpad { ptr, i32 }
          cleanup
  %391 = extractvalue { ptr, i32 } %390, 0
  store ptr %391, ptr %5, align 8
  %392 = extractvalue { ptr, i32 } %390, 1
  store i32 %392, ptr %6, align 4
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #7
  br label %521

393:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #7
  %394 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.28") align 8 %32, ptr noundef nonnull align 8 dereferenceable(33088) %394, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %395 unwind label %448

395:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #7
  %396 = load ptr, ptr %8, align 8, !tbaa !5
  %397 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  %398 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %397)
          to label %399 unwind label %452

399:                                              ; preds = %395
  %400 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %398, i64 noundef 0) #7
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(16) %400) #7
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 8 dereferenceable(16) %32) #7
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.0") align 8 %33, ptr noundef %396, ptr noundef %34, ptr noundef %35)
          to label %401 unwind label %456

401:                                              ; preds = %399
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  %402 = call noundef zeroext i1 @_ZStneISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr null) #7
  invoke void @_Z35failfast_uncaught_exception_handlerbPKcl(i1 noundef zeroext %402, ptr noundef @.str.4, i64 noundef 1286)
          to label %403 unwind label %460

403:                                              ; preds = %401
  %404 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %405 unwind label %460

405:                                              ; preds = %403
  %406 = invoke noundef i64 @_ZN9NanoTrace16allowedTraceTypeEv(ptr noundef nonnull align 8 dereferenceable(12) %404)
          to label %407 unwind label %460

407:                                              ; preds = %405
  %408 = and i64 8388608, %406
  %409 = icmp ne i64 %408, 0
  br i1 %409, label %410, label %493

410:                                              ; preds = %407
  %411 = load ptr, ptr %2, align 8, !tbaa !5
  %412 = getelementptr inbounds %class.ResolveState, ptr %411, i32 0, i32 10
  %413 = load i8, ptr %412, align 8, !tbaa !38, !range !39, !noundef !40
  %414 = trunc i8 %413 to i1
  %415 = zext i1 %414 to i64
  %416 = select i1 %414, i32 0, i32 2
  %417 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %418 unwind label %460

418:                                              ; preds = %410
  %419 = invoke noundef i32 @_ZN9NanoTrace11detailLevelEv(ptr noundef nonnull align 8 dereferenceable(12) %417)
          to label %420 unwind label %460

420:                                              ; preds = %418
  %421 = icmp sle i32 %416, %419
  br i1 %421, label %422, label %493

422:                                              ; preds = %420
  %423 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %424 unwind label %460

424:                                              ; preds = %422
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #7
  %425 = load ptr, ptr %2, align 8, !tbaa !5
  %426 = getelementptr inbounds %class.ResolveState, ptr %425, i32 0, i32 15
  %427 = load i32, ptr %426, align 8, !tbaa !41
  %428 = sext i32 %427 to i64
  %429 = load ptr, ptr %7, align 8, !tbaa !5
  %430 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %429) #7
  %431 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %430) #7
  %432 = add i64 %428, %431
  %433 = mul i64 %432, 11
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, i64 noundef %433, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %434 unwind label %464

434:                                              ; preds = %424
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef @.str.5, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %435 unwind label %468

435:                                              ; preds = %434
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @.str.6)
          to label %436 unwind label %472

436:                                              ; preds = %435
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef @.str.86)
          to label %437 unwind label %476

437:                                              ; preds = %436
  %438 = load ptr, ptr %2, align 8, !tbaa !5
  %439 = getelementptr inbounds %class.ResolveState, ptr %438, i32 0, i32 10
  %440 = load i8, ptr %439, align 8, !tbaa !38, !range !39, !noundef !40
  %441 = trunc i8 %440 to i1
  %442 = zext i1 %441 to i64
  %443 = select i1 %441, i32 0, i32 2
  %444 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  invoke void @_ZN15HtnGoalResolver8ToStringB5cxx11ERKSt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull align 8 dereferenceable(24) %444, i1 noundef zeroext false)
          to label %445 unwind label %480

445:                                              ; preds = %437
  %446 = invoke noundef double @_ZN9NanoTrace5TraceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEdRKS6_i11TraceDetailT_(ptr noundef nonnull align 8 dereferenceable(12) %423, ptr noundef nonnull align 8 dereferenceable(32) %36, i32 noundef 8388608, i32 noundef %443, ptr noundef %41)
          to label %447 unwind label %484

447:                                              ; preds = %445
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #7
  br label %493

448:                                              ; preds = %393
  %449 = landingpad { ptr, i32 }
          cleanup
  %450 = extractvalue { ptr, i32 } %449, 0
  store ptr %450, ptr %5, align 8
  %451 = extractvalue { ptr, i32 } %449, 1
  store i32 %451, ptr %6, align 4
  br label %519

452:                                              ; preds = %395
  %453 = landingpad { ptr, i32 }
          cleanup
  %454 = extractvalue { ptr, i32 } %453, 0
  store ptr %454, ptr %5, align 8
  %455 = extractvalue { ptr, i32 } %453, 1
  store i32 %455, ptr %6, align 4
  br label %518

456:                                              ; preds = %399
  %457 = landingpad { ptr, i32 }
          cleanup
  %458 = extractvalue { ptr, i32 } %457, 0
  store ptr %458, ptr %5, align 8
  %459 = extractvalue { ptr, i32 } %457, 1
  store i32 %459, ptr %6, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  br label %518

460:                                              ; preds = %422, %418, %410, %405, %403, %401
  %461 = landingpad { ptr, i32 }
          cleanup
  %462 = extractvalue { ptr, i32 } %461, 0
  store ptr %462, ptr %5, align 8
  %463 = extractvalue { ptr, i32 } %461, 1
  store i32 %463, ptr %6, align 4
  br label %517

464:                                              ; preds = %424
  %465 = landingpad { ptr, i32 }
          cleanup
  %466 = extractvalue { ptr, i32 } %465, 0
  store ptr %466, ptr %5, align 8
  %467 = extractvalue { ptr, i32 } %465, 1
  store i32 %467, ptr %6, align 4
  br label %492

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

472:                                              ; preds = %435
  %473 = landingpad { ptr, i32 }
          cleanup
  %474 = extractvalue { ptr, i32 } %473, 0
  store ptr %474, ptr %5, align 8
  %475 = extractvalue { ptr, i32 } %473, 1
  store i32 %475, ptr %6, align 4
  br label %490

476:                                              ; preds = %436
  %477 = landingpad { ptr, i32 }
          cleanup
  %478 = extractvalue { ptr, i32 } %477, 0
  store ptr %478, ptr %5, align 8
  %479 = extractvalue { ptr, i32 } %477, 1
  store i32 %479, ptr %6, align 4
  br label %489

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

484:                                              ; preds = %445
  %485 = landingpad { ptr, i32 }
          cleanup
  %486 = extractvalue { ptr, i32 } %485, 0
  store ptr %486, ptr %5, align 8
  %487 = extractvalue { ptr, i32 } %485, 1
  store i32 %487, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  br label %488

488:                                              ; preds = %484, %480
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  br label %489

489:                                              ; preds = %488, %476
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  br label %490

490:                                              ; preds = %489, %472
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %491

491:                                              ; preds = %490, %468
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  br label %492

492:                                              ; preds = %491, %464
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #7
  br label %517

493:                                              ; preds = %447, %420, %407
  %494 = load ptr, ptr %7, align 8, !tbaa !5
  %495 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %494) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #7
  %496 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  %497 = load ptr, ptr %8, align 8, !tbaa !5
  %498 = load ptr, ptr %2, align 8, !tbaa !5
  %499 = getelementptr inbounds %class.ResolveState, ptr %498, i32 0, i32 14
  %500 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI7HtnTermESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %499) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %43) #7
  call void @llvm.memset.p0.i64(ptr align 8 %43, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  %501 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  %502 = load ptr, ptr %2, align 8, !tbaa !5
  %503 = getelementptr inbounds %class.ResolveState, ptr %502, i32 0, i32 24
  invoke void @_ZN11ResolveNode15CreateChildNodeEP14HtnTermFactoryRKSt6vectorISt10shared_ptrI7HtnTermESaIS5_EES9_RKS2_ISt4pairIS5_S5_ESaISB_EEPi(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.25") align 8 %42, ptr noundef nonnull align 8 dereferenceable(144) %496, ptr noundef %497, ptr noundef nonnull align 8 dereferenceable(24) %500, ptr noundef nonnull align 8 dereferenceable(24) %43, ptr noundef nonnull align 8 dereferenceable(24) %501, ptr noundef %503)
          to label %504 unwind label %508

504:                                              ; preds = %493
  invoke void @_ZNSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %495, ptr noundef nonnull align 8 dereferenceable(16) %42)
          to label %505 unwind label %512

505:                                              ; preds = %504
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #7
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #7
  %506 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  %507 = getelementptr inbounds %class.ResolveNode, ptr %506, i32 0, i32 0
  store i32 9, ptr %507, align 8, !tbaa !29
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #7
  br label %520

508:                                              ; preds = %493
  %509 = landingpad { ptr, i32 }
          cleanup
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %5, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %6, align 4
  br label %516

512:                                              ; preds = %504
  %513 = landingpad { ptr, i32 }
          cleanup
  %514 = extractvalue { ptr, i32 } %513, 0
  store ptr %514, ptr %5, align 8
  %515 = extractvalue { ptr, i32 } %513, 1
  store i32 %515, ptr %6, align 4
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #7
  br label %516

516:                                              ; preds = %512, %508
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #7
  br label %517

517:                                              ; preds = %516, %492, %460
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #7
  br label %518

518:                                              ; preds = %517, %456, %452
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #7
  br label %519

519:                                              ; preds = %518, %448
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #7
  br label %521

520:                                              ; preds = %505, %386
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #7
  br label %791

521:                                              ; preds = %519, %389, %383, %351, %302, %288
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #7
  br label %792

522:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #7
  %523 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  invoke void @_ZNK7HtnTerm4nameB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %44, ptr noundef nonnull align 8 dereferenceable(72) %523)
          to label %524 unwind label %534

524:                                              ; preds = %522
  call void @llvm.lifetime.start.p0(i64 24, ptr %45) #7
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  store ptr %44, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  %525 = load ptr, ptr %46, align 8, !tbaa !5
  %526 = call ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %525) #7
  %527 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.155", ptr %47, i32 0, i32 0
  store ptr %526, ptr %527, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %528 = load ptr, ptr %46, align 8, !tbaa !5
  %529 = call ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %528) #7
  %530 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.155", ptr %48, i32 0, i32 0
  store ptr %529, ptr %530, align 8
  br label %531

531:                                              ; preds = %546, %524
  %532 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %48) #7
  br i1 %532, label %538, label %533

533:                                              ; preds = %531
  store i32 5, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  br label %562

534:                                              ; preds = %522
  %535 = landingpad { ptr, i32 }
          cleanup
  %536 = extractvalue { ptr, i32 } %535, 0
  store ptr %536, ptr %5, align 8
  %537 = extractvalue { ptr, i32 } %535, 1
  store i32 %537, ptr %6, align 4
  br label %790

538:                                              ; preds = %531
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #7
  %539 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #7
  %540 = load i8, ptr %539, align 1, !tbaa !42
  store i8 %540, ptr %49, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #7
  %541 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #7
  %542 = load i8, ptr %49, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %51, i64 noundef 1, i8 noundef signext %542, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %543 unwind label %548

543:                                              ; preds = %538
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.28") align 8 %50, ptr noundef nonnull align 8 dereferenceable(33088) %541, ptr noundef nonnull align 8 dereferenceable(32) %51)
          to label %544 unwind label %552

544:                                              ; preds = %543
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %45, ptr noundef nonnull align 8 dereferenceable(16) %50)
          to label %545 unwind label %556

545:                                              ; preds = %544
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #7
  br label %546

546:                                              ; preds = %545
  %547 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #7
  br label %531

548:                                              ; preds = %538
  %549 = landingpad { ptr, i32 }
          cleanup
  %550 = extractvalue { ptr, i32 } %549, 0
  store ptr %550, ptr %5, align 8
  %551 = extractvalue { ptr, i32 } %549, 1
  store i32 %551, ptr %6, align 4
  br label %561

552:                                              ; preds = %543
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %5, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %6, align 4
  br label %560

556:                                              ; preds = %544
  %557 = landingpad { ptr, i32 }
          cleanup
  %558 = extractvalue { ptr, i32 } %557, 0
  store ptr %558, ptr %5, align 8
  %559 = extractvalue { ptr, i32 } %557, 1
  store i32 %559, ptr %6, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #7
  br label %560

560:                                              ; preds = %556, %552
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  br label %561

561:                                              ; preds = %560, %548
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  br label %789

562:                                              ; preds = %533
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #7
  %563 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull align 8 dereferenceable(24) %45)
          to label %564 unwind label %624

564:                                              ; preds = %562
  invoke void @_ZN14HtnTermFactory10CreateListESt6vectorISt10shared_ptrI7HtnTermESaIS3_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.28") align 8 %53, ptr noundef nonnull align 8 dereferenceable(33088) %563, ptr noundef %54)
          to label %565 unwind label %628

565:                                              ; preds = %564
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #7
  %566 = load ptr, ptr %8, align 8, !tbaa !5
  %567 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  %568 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %567)
          to label %569 unwind label %632

569:                                              ; preds = %565
  %570 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %568, i64 noundef 1) #7
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %56, ptr noundef nonnull align 8 dereferenceable(16) %570) #7
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %57, ptr noundef nonnull align 8 dereferenceable(16) %53) #7
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.0") align 8 %55, ptr noundef %566, ptr noundef %56, ptr noundef %57)
          to label %571 unwind label %636

571:                                              ; preds = %569
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #7
  %572 = call noundef zeroext i1 @_ZSteqISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %55, ptr null) #7
  br i1 %572, label %573, label %687

573:                                              ; preds = %571
  %574 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %575 unwind label %640

575:                                              ; preds = %573
  %576 = invoke noundef i64 @_ZN9NanoTrace16allowedTraceTypeEv(ptr noundef nonnull align 8 dereferenceable(12) %574)
          to label %577 unwind label %640

577:                                              ; preds = %575
  %578 = and i64 8388608, %576
  %579 = icmp ne i64 %578, 0
  br i1 %579, label %580, label %678

580:                                              ; preds = %577
  %581 = load ptr, ptr %2, align 8, !tbaa !5
  %582 = getelementptr inbounds %class.ResolveState, ptr %581, i32 0, i32 10
  %583 = load i8, ptr %582, align 8, !tbaa !38, !range !39, !noundef !40
  %584 = trunc i8 %583 to i1
  %585 = zext i1 %584 to i64
  %586 = select i1 %584, i32 0, i32 2
  %587 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %588 unwind label %640

588:                                              ; preds = %580
  %589 = invoke noundef i32 @_ZN9NanoTrace11detailLevelEv(ptr noundef nonnull align 8 dereferenceable(12) %587)
          to label %590 unwind label %640

590:                                              ; preds = %588
  %591 = icmp sle i32 %586, %589
  br i1 %591, label %592, label %678

592:                                              ; preds = %590
  %593 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %594 unwind label %640

594:                                              ; preds = %592
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #7
  %595 = load ptr, ptr %2, align 8, !tbaa !5
  %596 = getelementptr inbounds %class.ResolveState, ptr %595, i32 0, i32 15
  %597 = load i32, ptr %596, align 8, !tbaa !41
  %598 = sext i32 %597 to i64
  %599 = load ptr, ptr %7, align 8, !tbaa !5
  %600 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %599) #7
  %601 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %600) #7
  %602 = add i64 %598, %601
  %603 = mul i64 %602, 11
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %61, i64 noundef %603, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %604 unwind label %644

604:                                              ; preds = %594
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %60, ptr noundef @.str.5, ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %605 unwind label %648

605:                                              ; preds = %604
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %59, ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef @.str.14)
          to label %606 unwind label %652

606:                                              ; preds = %605
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %58, ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef @.str.87)
          to label %607 unwind label %656

607:                                              ; preds = %606
  %608 = load ptr, ptr %2, align 8, !tbaa !5
  %609 = getelementptr inbounds %class.ResolveState, ptr %608, i32 0, i32 10
  %610 = load i8, ptr %609, align 8, !tbaa !38, !range !39, !noundef !40
  %611 = trunc i8 %610 to i1
  %612 = zext i1 %611 to i64
  %613 = select i1 %611, i32 0, i32 2
  %614 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #7
  invoke void @_ZN7HtnTerm8ToStringB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %63, ptr noundef nonnull align 8 dereferenceable(72) %614, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %615 unwind label %660

615:                                              ; preds = %607
  call void @llvm.lifetime.start.p0(i64 32, ptr %64) #7
  %616 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  %617 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %616)
          to label %618 unwind label %664

618:                                              ; preds = %615
  %619 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %617, i64 noundef 1) #7
  %620 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %619) #7
  invoke void @_ZN7HtnTerm8ToStringB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %64, ptr noundef nonnull align 8 dereferenceable(72) %620, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %621 unwind label %664

621:                                              ; preds = %618
  %622 = invoke noundef double @_ZN9NanoTrace5TraceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EEdRKS6_i11TraceDetailT_RKT0_(ptr noundef nonnull align 8 dereferenceable(12) %593, ptr noundef nonnull align 8 dereferenceable(32) %58, i32 noundef 8388608, i32 noundef %613, ptr noundef %63, ptr noundef nonnull align 8 dereferenceable(32) %64)
          to label %623 unwind label %668

623:                                              ; preds = %621
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #7
  br label %678

624:                                              ; preds = %562
  %625 = landingpad { ptr, i32 }
          cleanup
  %626 = extractvalue { ptr, i32 } %625, 0
  store ptr %626, ptr %5, align 8
  %627 = extractvalue { ptr, i32 } %625, 1
  store i32 %627, ptr %6, align 4
  br label %788

628:                                              ; preds = %564
  %629 = landingpad { ptr, i32 }
          cleanup
  %630 = extractvalue { ptr, i32 } %629, 0
  store ptr %630, ptr %5, align 8
  %631 = extractvalue { ptr, i32 } %629, 1
  store i32 %631, ptr %6, align 4
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #7
  br label %788

632:                                              ; preds = %565
  %633 = landingpad { ptr, i32 }
          cleanup
  %634 = extractvalue { ptr, i32 } %633, 0
  store ptr %634, ptr %5, align 8
  %635 = extractvalue { ptr, i32 } %633, 1
  store i32 %635, ptr %6, align 4
  br label %787

636:                                              ; preds = %569
  %637 = landingpad { ptr, i32 }
          cleanup
  %638 = extractvalue { ptr, i32 } %637, 0
  store ptr %638, ptr %5, align 8
  %639 = extractvalue { ptr, i32 } %637, 1
  store i32 %639, ptr %6, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #7
  br label %787

640:                                              ; preds = %706, %702, %694, %689, %687, %592, %588, %580, %575, %573
  %641 = landingpad { ptr, i32 }
          cleanup
  %642 = extractvalue { ptr, i32 } %641, 0
  store ptr %642, ptr %5, align 8
  %643 = extractvalue { ptr, i32 } %641, 1
  store i32 %643, ptr %6, align 4
  br label %786

644:                                              ; preds = %594
  %645 = landingpad { ptr, i32 }
          cleanup
  %646 = extractvalue { ptr, i32 } %645, 0
  store ptr %646, ptr %5, align 8
  %647 = extractvalue { ptr, i32 } %645, 1
  store i32 %647, ptr %6, align 4
  br label %677

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

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

656:                                              ; preds = %606
  %657 = landingpad { ptr, i32 }
          cleanup
  %658 = extractvalue { ptr, i32 } %657, 0
  store ptr %658, ptr %5, align 8
  %659 = extractvalue { ptr, i32 } %657, 1
  store i32 %659, ptr %6, align 4
  br label %674

660:                                              ; preds = %607
  %661 = landingpad { ptr, i32 }
          cleanup
  %662 = extractvalue { ptr, i32 } %661, 0
  store ptr %662, ptr %5, align 8
  %663 = extractvalue { ptr, i32 } %661, 1
  store i32 %663, ptr %6, align 4
  br label %673

664:                                              ; preds = %618, %615
  %665 = landingpad { ptr, i32 }
          cleanup
  %666 = extractvalue { ptr, i32 } %665, 0
  store ptr %666, ptr %5, align 8
  %667 = extractvalue { ptr, i32 } %665, 1
  store i32 %667, ptr %6, align 4
  br label %672

668:                                              ; preds = %621
  %669 = landingpad { ptr, i32 }
          cleanup
  %670 = extractvalue { ptr, i32 } %669, 0
  store ptr %670, ptr %5, align 8
  %671 = extractvalue { ptr, i32 } %669, 1
  store i32 %671, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  br label %672

672:                                              ; preds = %668, %664
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #7
  br label %673

673:                                              ; preds = %672, %660
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  br label %674

674:                                              ; preds = %673, %656
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  br label %675

675:                                              ; preds = %674, %652
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  br label %676

676:                                              ; preds = %675, %648
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  br label %677

677:                                              ; preds = %676, %644
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #7
  br label %786

678:                                              ; preds = %623, %590, %577
  %679 = load ptr, ptr %2, align 8, !tbaa !5
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef nonnull align 8 dereferenceable(16) %4) #7
  call void @_ZNSt10shared_ptrI11ResolveNodeEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %66, ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  invoke void @_ZN12ResolveState13RecordFailureESt10shared_ptrI7HtnTermES0_I11ResolveNodeE(ptr noundef nonnull align 8 dereferenceable(244) %679, ptr noundef %65, ptr noundef %66)
          to label %680 unwind label %683

680:                                              ; preds = %678
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #7
  %681 = load ptr, ptr %7, align 8, !tbaa !5
  %682 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %681) #7
  call void @_ZNSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %682) #7
  br label %785

683:                                              ; preds = %678
  %684 = landingpad { ptr, i32 }
          cleanup
  %685 = extractvalue { ptr, i32 } %684, 0
  store ptr %685, ptr %5, align 8
  %686 = extractvalue { ptr, i32 } %684, 1
  store i32 %686, ptr %6, align 4
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #7
  br label %786

687:                                              ; preds = %571
  %688 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %689 unwind label %640

689:                                              ; preds = %687
  %690 = invoke noundef i64 @_ZN9NanoTrace16allowedTraceTypeEv(ptr noundef nonnull align 8 dereferenceable(12) %688)
          to label %691 unwind label %640

691:                                              ; preds = %689
  %692 = and i64 8388608, %690
  %693 = icmp ne i64 %692, 0
  br i1 %693, label %694, label %761

694:                                              ; preds = %691
  %695 = load ptr, ptr %2, align 8, !tbaa !5
  %696 = getelementptr inbounds %class.ResolveState, ptr %695, i32 0, i32 10
  %697 = load i8, ptr %696, align 8, !tbaa !38, !range !39, !noundef !40
  %698 = trunc i8 %697 to i1
  %699 = zext i1 %698 to i64
  %700 = select i1 %698, i32 0, i32 2
  %701 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %702 unwind label %640

702:                                              ; preds = %694
  %703 = invoke noundef i32 @_ZN9NanoTrace11detailLevelEv(ptr noundef nonnull align 8 dereferenceable(12) %701)
          to label %704 unwind label %640

704:                                              ; preds = %702
  %705 = icmp sle i32 %700, %703
  br i1 %705, label %706, label %761

706:                                              ; preds = %704
  %707 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %708 unwind label %640

708:                                              ; preds = %706
  call void @llvm.lifetime.start.p0(i64 32, ptr %67) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %68) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %70) #7
  %709 = load ptr, ptr %2, align 8, !tbaa !5
  %710 = getelementptr inbounds %class.ResolveState, ptr %709, i32 0, i32 15
  %711 = load i32, ptr %710, align 8, !tbaa !41
  %712 = sext i32 %711 to i64
  %713 = load ptr, ptr %7, align 8, !tbaa !5
  %714 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %713) #7
  %715 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %714) #7
  %716 = add i64 %712, %715
  %717 = mul i64 %716, 11
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, i64 noundef %717, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %718 unwind label %732

718:                                              ; preds = %708
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %69, ptr noundef @.str.5, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %719 unwind label %736

719:                                              ; preds = %718
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %68, ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef @.str.6)
          to label %720 unwind label %740

720:                                              ; preds = %719
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %67, ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef @.str.86)
          to label %721 unwind label %744

721:                                              ; preds = %720
  %722 = load ptr, ptr %2, align 8, !tbaa !5
  %723 = getelementptr inbounds %class.ResolveState, ptr %722, i32 0, i32 10
  %724 = load i8, ptr %723, align 8, !tbaa !38, !range !39, !noundef !40
  %725 = trunc i8 %724 to i1
  %726 = zext i1 %725 to i64
  %727 = select i1 %725, i32 0, i32 2
  %728 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  invoke void @_ZN15HtnGoalResolver8ToStringB5cxx11ERKSt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %72, ptr noundef nonnull align 8 dereferenceable(24) %728, i1 noundef zeroext false)
          to label %729 unwind label %748

729:                                              ; preds = %721
  %730 = invoke noundef double @_ZN9NanoTrace5TraceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEdRKS6_i11TraceDetailT_(ptr noundef nonnull align 8 dereferenceable(12) %707, ptr noundef nonnull align 8 dereferenceable(32) %67, i32 noundef 8388608, i32 noundef %727, ptr noundef %72)
          to label %731 unwind label %752

731:                                              ; preds = %729
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #7
  br label %761

732:                                              ; preds = %708
  %733 = landingpad { ptr, i32 }
          cleanup
  %734 = extractvalue { ptr, i32 } %733, 0
  store ptr %734, ptr %5, align 8
  %735 = extractvalue { ptr, i32 } %733, 1
  store i32 %735, ptr %6, align 4
  br label %760

736:                                              ; preds = %718
  %737 = landingpad { ptr, i32 }
          cleanup
  %738 = extractvalue { ptr, i32 } %737, 0
  store ptr %738, ptr %5, align 8
  %739 = extractvalue { ptr, i32 } %737, 1
  store i32 %739, ptr %6, align 4
  br label %759

740:                                              ; preds = %719
  %741 = landingpad { ptr, i32 }
          cleanup
  %742 = extractvalue { ptr, i32 } %741, 0
  store ptr %742, ptr %5, align 8
  %743 = extractvalue { ptr, i32 } %741, 1
  store i32 %743, ptr %6, align 4
  br label %758

744:                                              ; preds = %720
  %745 = landingpad { ptr, i32 }
          cleanup
  %746 = extractvalue { ptr, i32 } %745, 0
  store ptr %746, ptr %5, align 8
  %747 = extractvalue { ptr, i32 } %745, 1
  store i32 %747, ptr %6, align 4
  br label %757

748:                                              ; preds = %721
  %749 = landingpad { ptr, i32 }
          cleanup
  %750 = extractvalue { ptr, i32 } %749, 0
  store ptr %750, ptr %5, align 8
  %751 = extractvalue { ptr, i32 } %749, 1
  store i32 %751, ptr %6, align 4
  br label %756

752:                                              ; preds = %729
  %753 = landingpad { ptr, i32 }
          cleanup
  %754 = extractvalue { ptr, i32 } %753, 0
  store ptr %754, ptr %5, align 8
  %755 = extractvalue { ptr, i32 } %753, 1
  store i32 %755, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #7
  br label %756

756:                                              ; preds = %752, %748
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #7
  br label %757

757:                                              ; preds = %756, %744
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  br label %758

758:                                              ; preds = %757, %740
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #7
  br label %759

759:                                              ; preds = %758, %736
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #7
  br label %760

760:                                              ; preds = %759, %732
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #7
  br label %786

761:                                              ; preds = %731, %704, %691
  %762 = load ptr, ptr %7, align 8, !tbaa !5
  %763 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %762) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #7
  %764 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  %765 = load ptr, ptr %8, align 8, !tbaa !5
  %766 = load ptr, ptr %2, align 8, !tbaa !5
  %767 = getelementptr inbounds %class.ResolveState, ptr %766, i32 0, i32 14
  %768 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI7HtnTermESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %767) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %74) #7
  call void @llvm.memset.p0.i64(ptr align 8 %74, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %74) #7
  %769 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  %770 = load ptr, ptr %2, align 8, !tbaa !5
  %771 = getelementptr inbounds %class.ResolveState, ptr %770, i32 0, i32 24
  invoke void @_ZN11ResolveNode15CreateChildNodeEP14HtnTermFactoryRKSt6vectorISt10shared_ptrI7HtnTermESaIS5_EES9_RKS2_ISt4pairIS5_S5_ESaISB_EEPi(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.25") align 8 %73, ptr noundef nonnull align 8 dereferenceable(144) %764, ptr noundef %765, ptr noundef nonnull align 8 dereferenceable(24) %768, ptr noundef nonnull align 8 dereferenceable(24) %74, ptr noundef nonnull align 8 dereferenceable(24) %769, ptr noundef %771)
          to label %772 unwind label %776

772:                                              ; preds = %761
  invoke void @_ZNSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %763, ptr noundef nonnull align 8 dereferenceable(16) %73)
          to label %773 unwind label %780

773:                                              ; preds = %772
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #7
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %74) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %74) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #7
  %774 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  %775 = getelementptr inbounds %class.ResolveNode, ptr %774, i32 0, i32 0
  store i32 9, ptr %775, align 8, !tbaa !29
  br label %785

776:                                              ; preds = %761
  %777 = landingpad { ptr, i32 }
          cleanup
  %778 = extractvalue { ptr, i32 } %777, 0
  store ptr %778, ptr %5, align 8
  %779 = extractvalue { ptr, i32 } %777, 1
  store i32 %779, ptr %6, align 4
  br label %784

780:                                              ; preds = %772
  %781 = landingpad { ptr, i32 }
          cleanup
  %782 = extractvalue { ptr, i32 } %781, 0
  store ptr %782, ptr %5, align 8
  %783 = extractvalue { ptr, i32 } %781, 1
  store i32 %783, ptr %6, align 4
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #7
  br label %784

784:                                              ; preds = %780, %776
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %74) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %74) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #7
  br label %786

785:                                              ; preds = %773, %680
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #7
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %45) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #7
  br label %791

786:                                              ; preds = %784, %760, %683, %677, %640
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #7
  br label %787

787:                                              ; preds = %786, %636, %632
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #7
  br label %788

788:                                              ; preds = %787, %628, %624
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #7
  br label %789

789:                                              ; preds = %788, %561
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %45) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  br label %790

790:                                              ; preds = %789, %534
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #7
  br label %792

791:                                              ; preds = %785, %520
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #7
  br label %795

792:                                              ; preds = %790, %521, %276
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  br label %793

793:                                              ; preds = %792, %272
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  br label %794

794:                                              ; preds = %793, %268
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #7
  br label %799

795:                                              ; preds = %791, %198
  br label %798

796:                                              ; preds = %80
  invoke void @_Z35failfast_uncaught_exception_handlerbPKcl(i1 noundef zeroext false, ptr noundef @.str.4, i64 noundef 1334)
          to label %797 unwind label %160

797:                                              ; preds = %796
  br label %798

798:                                              ; preds = %797, %795
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %4) #7
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #7
  ret void

799:                                              ; preds = %794, %214, %192, %160
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #7
  br label %800

800:                                              ; preds = %799, %89
  call void @llvm.lifetime.end.p0(i64 16, ptr %4) #7
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #7
  br label %801

801:                                              ; preds = %800
  %802 = load ptr, ptr %5, align 8
  %803 = load i32, ptr %6, align 4
  %804 = insertvalue { ptr, i32 } poison, ptr %802, 0
  %805 = insertvalue { ptr, i32 } %804, i32 %803, 1
  resume { ptr, i32 } %805

806:                                              ; preds = %299
  unreachable
}

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

declare void @_Z35failfast_uncaught_exception_handlerbPKcS0_l(i1 noundef zeroext, ptr noundef, ptr noundef, i64 noundef) #5

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16), ptr) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN15HtnGoalResolver8ToStringB5cxx11ERKSt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEb(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #3 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #6

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

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

declare void @_Z35failfast_uncaught_exception_handlerbPKcl(i1 noundef zeroext, ptr noundef, i64 noundef) #5

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.0") align 8, ptr noundef, ptr noundef, ptr noundef) #3 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16), ptr) #6

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { 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 #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { 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 224}
!10 = !{!"_ZTS12ResolveState", !11, i64 0, !12, i64 4, !13, i64 8, !12, i64 24, !12, i64 28, !12, i64 32, !16, i64 40, !20, i64 64, !11, i64 96, !22, i64 104, !20, i64 112, !23, i64 144, !12, i64 160, !12, i64 164, !6, i64 168, !25, i64 176, !22, i64 192, !27, i64 200, !22, i64 216, !6, i64 224, !22, i64 232, !12, i64 240}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!"_ZTSSt10shared_ptrI7HtnTermE", !14, i64 0}
!14 = !{!"_ZTSSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !15, i64 8}
!15 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!16 = !{!"_ZTSSt6vectorISt10shared_ptrI7HtnTermESaIS2_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrI7HtnTermESaIS2_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrI7HtnTermESaIS2_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrI7HtnTermESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !21, i64 0, !22, i64 8, !7, i64 16}
!21 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!22 = !{!"long", !7, i64 0}
!23 = !{!"_ZTSSt10shared_ptrISt6vectorIS_I7HtnTermESaIS2_EEE", !24, i64 0}
!24 = !{!"_ZTSSt12__shared_ptrISt6vectorISt10shared_ptrI7HtnTermESaIS3_EELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !15, i64 8}
!25 = !{!"_ZTSSt10shared_ptrISt6vectorIS_I11ResolveNodeESaIS2_EEE", !26, i64 0}
!26 = !{!"_ZTSSt12__shared_ptrISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !15, i64 8}
!27 = !{!"_ZTSSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEE", !28, i64 0}
!28 = !{!"_ZTSSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !15, i64 8}
!29 = !{!30, !31, i64 0}
!30 = !{!"_ZTS11ResolveNode", !31, i64 0, !16, i64 8, !12, i64 32, !12, i64 36, !32, i64 40, !34, i64 56, !22, i64 72, !11, i64 80, !11, i64 81, !27, i64 88, !36, i64 104, !11, i64 120, !11, i64 121, !23, i64 128}
!31 = !{!"_ZTS20ResolveContinuePoint", !7, i64 0}
!32 = !{!"_ZTSSt10shared_ptrISt6vectorISt4pairIS_I7HtnRuleES0_IS1_IS_I7HtnTermES5_ESaIS6_EEESaIS9_EEE", !33, i64 0}
!33 = !{!"_ZTSSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnRuleES0_IS1_IS2_I7HtnTermES6_ESaIS7_EEESaISA_EELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !15, i64 8}
!34 = !{!"_ZTSSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEE", !35, i64 0}
!35 = !{!"_ZTSSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !15, i64 8}
!36 = !{!"_ZTSSt10shared_ptrISt3setIS_I7HtnTermE15HtnTermComparerSaIS2_EEE", !37, i64 0}
!37 = !{!"_ZTSSt12__shared_ptrISt3setISt10shared_ptrI7HtnTermE15HtnTermComparerSaIS3_EELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !15, i64 8}
!38 = !{!10, !11, i64 96}
!39 = !{i8 0, i8 2}
!40 = !{}
!41 = !{!10, !12, i64 160}
!42 = !{!7, !7, i64 0}
!43 = distinct !{!43, !44}
!44 = !{!"llvm.loop.mustprogress"}


; 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.25" = type { %"class.std::__shared_ptr.26" }
%"class.std::__shared_ptr.26" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"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::shared_ptr.28" = type { %"class.std::__shared_ptr.29" }
%"class.std::__shared_ptr.29" = type { ptr, %"class.std::__shared_count" }
%"class.std::allocator" = type { i8 }
%"class.std::shared_ptr.0" = type { %"class.std::__shared_ptr.1" }
%"class.std::__shared_ptr.1" = type { ptr, %"class.std::__shared_count" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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.__gnu_cxx::__normal_iterator.155" = type { ptr }

@.str.4 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [48 x i8], align 1

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 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) #2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11ResolveNode15CreateChildNodeEP14HtnTermFactoryRKSt6vectorISt10shared_ptrI7HtnTermESaIS5_EES9_RKS2_ISt4pairIS5_S5_ESaISB_EEPi(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.25") align 8, ptr noundef nonnull align 8 dereferenceable(144), ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7HtnTerm4nameB5cxx11Ev(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN9NanoTrace16allowedTraceTypeEv(ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN9NanoTrace11detailLevelEv(ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN9NanoTrace5TraceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEdRKS6_i11TraceDetailT_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef, i8 noundef signext, ptr noundef nonnull align 1 dereferenceable(1)) 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 #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11ResolveNode11currentGoalEv(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.28") align 8, ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN12ResolveState13RecordFailureESt10shared_ptrI7HtnTermES0_I11ResolveNodeE(ptr noundef nonnull align 8 dereferenceable(244), ptr noundef, ptr noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN9NanoTrace5TraceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EEdRKS6_i11TraceDetailT_RKT0_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, i32 noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

declare void @_ZN7HtnTerm8ToStringB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(72), i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #5

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN15HtnGoalResolver13RuleAtomCharsEP12ResolveState(ptr noundef %0) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::shared_ptr.25", align 8
  %3 = alloca %"class.std::shared_ptr.28", align 8
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator", align 1
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::shared_ptr.28", align 8
  %13 = alloca %"class.std::shared_ptr.28", align 8
  %14 = alloca %"class.std::shared_ptr.28", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator", align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::shared_ptr.28", align 8
  %25 = alloca %"class.std::shared_ptr.25", align 8
  %26 = alloca %"class.std::shared_ptr.28", align 8
  %27 = alloca %"class.std::shared_ptr.0", align 8
  %28 = alloca %"class.std::shared_ptr.28", align 8
  %29 = alloca %"class.std::shared_ptr.28", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator", align 1
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::shared_ptr.25", align 8
  %37 = alloca %"class.std::vector", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::vector", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator.155", align 8
  %41 = alloca %"class.__gnu_cxx::__normal_iterator.155", align 8
  %42 = alloca %"class.std::shared_ptr.28", align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator", align 1
  %45 = alloca %"class.std::shared_ptr.28", align 8
  %46 = alloca %"class.std::vector", align 8
  %47 = alloca %"class.std::shared_ptr.0", align 8
  %48 = alloca %"class.std::shared_ptr.28", align 8
  %49 = alloca %"class.std::shared_ptr.28", align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::allocator", align 1
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::shared_ptr.28", align 8
  %58 = alloca %"class.std::shared_ptr.25", align 8
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::allocator", align 1
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::shared_ptr.25", align 8
  %66 = alloca %"class.std::vector", align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #7
  %67 = getelementptr inbounds i8, ptr %0, i64 176
  %68 = tail call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  %69 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %68) #7
  call void @_ZNSt10shared_ptrI11ResolveNodeEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %69) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #7
  %70 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @_ZN11ResolveNode11currentGoalEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.28") align 8 %3, ptr noundef nonnull align 8 dereferenceable(144) %70)
  %71 = getelementptr inbounds i8, ptr %0, i64 224
  %72 = load ptr, ptr %71, align 8, !tbaa !5
  %73 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  %74 = load i32, ptr %73, align 8, !tbaa !28
  %cond = icmp eq i32 %74, 0
  br i1 %cond, label %75, label %505

75:                                               ; preds = %1
  %76 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  %77 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %76)
  %78 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %77) #7
  %79 = icmp eq i64 %78, 2
  br i1 %79, label %80, label %92

80:                                               ; preds = %75
  %81 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  %82 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %81)
  %83 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef 0) #7
  %84 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %83) #7
  %85 = call noundef zeroext i1 @_ZNK7HtnTerm10isVariableEv(ptr noundef nonnull align 8 dereferenceable(72) %84)
  br i1 %85, label %86, label %157

86:                                               ; preds = %80
  %87 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  %88 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %87)
  %89 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef 1) #7
  %90 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %89) #7
  %91 = call noundef zeroext i1 @_ZNK7HtnTerm10isVariableEv(ptr noundef nonnull align 8 dereferenceable(72) %90)
  br i1 %91, label %92, label %157

92:                                               ; preds = %86, %75
  %93 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
  %94 = call noundef i64 @_ZN9NanoTrace16allowedTraceTypeEv(ptr noundef nonnull align 8 dereferenceable(12) %93)
  %95 = and i64 %94, 8388608
  %.not142 = icmp eq i64 %95, 0
  br i1 %.not142, label %142, label %96

96:                                               ; preds = %92
  %97 = getelementptr inbounds i8, ptr %0, i64 96
  %98 = load i8, ptr %97, align 8, !tbaa !37, !range !38, !noundef !39
  %99 = trunc nuw i8 %98 to i1
  %100 = select i1 %99, i32 0, i32 2
  %101 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
  %102 = call noundef i32 @_ZN9NanoTrace11detailLevelEv(ptr noundef nonnull align 8 dereferenceable(12) %101)
  %.not143 = icmp sgt i32 %100, %102
  br i1 %.not143, label %142, label %103

103:                                              ; preds = %96
  %104 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #7
  %105 = getelementptr inbounds i8, ptr %0, i64 160
  %106 = load i32, ptr %105, align 8, !tbaa !40
  %107 = sext i32 %106 to i64
  %108 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  %109 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %108) #7
  %110 = add i64 %109, %107
  %111 = mul i64 %110, 11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, i64 noundef %111, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %112 unwind label %125

112:                                              ; preds = %103
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull @.str.5, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %113 unwind label %127

113:                                              ; preds = %112
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.68)
          to label %114 unwind label %129

114:                                              ; preds = %113
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.82)
          to label %115 unwind label %131

115:                                              ; preds = %114
  %116 = load i8, ptr %97, align 8, !tbaa !37, !range !38, !noundef !39
  %117 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  invoke void @_ZN7HtnTerm8ToStringB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(72) %117, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %118 unwind label %133

118:                                              ; preds = %115
  %119 = trunc nuw i8 %116 to i1
  %120 = select i1 %119, i32 0, i32 2
  %121 = invoke noundef double @_ZN9NanoTrace5TraceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEdRKS6_i11TraceDetailT_(ptr noundef nonnull align 8 dereferenceable(12) %104, ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 8388608, i32 noundef %120, ptr noundef nonnull %9)
          to label %122 unwind label %135

122:                                              ; preds = %118
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  br label %142

123:                                              ; preds = %505
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %507

125:                                              ; preds = %103
  %126 = landingpad { ptr, i32 }
          cleanup
  br label %141

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

129:                                              ; preds = %113
  %130 = landingpad { ptr, i32 }
          cleanup
  br label %139

131:                                              ; preds = %114
  %132 = landingpad { ptr, i32 }
          cleanup
  br label %138

133:                                              ; preds = %115
  %134 = landingpad { ptr, i32 }
          cleanup
  br label %137

135:                                              ; preds = %118
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %137

137:                                              ; preds = %135, %133
  %.pn144 = phi { ptr, i32 } [ %136, %135 ], [ %134, %133 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  br label %138

138:                                              ; preds = %137, %131
  %.pn144.pn = phi { ptr, i32 } [ %.pn144, %137 ], [ %132, %131 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  br label %139

139:                                              ; preds = %138, %129
  %.pn144.pn.pn = phi { ptr, i32 } [ %.pn144.pn, %138 ], [ %130, %129 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  br label %140

140:                                              ; preds = %139, %127
  %.pn144.pn.pn.pn = phi { ptr, i32 } [ %.pn144.pn.pn, %139 ], [ %128, %127 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  br label %141

141:                                              ; preds = %140, %125
  %.pn144.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn144.pn.pn.pn, %140 ], [ %126, %125 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  br label %507

142:                                              ; preds = %122, %96, %92
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7
  %143 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  invoke void @_ZN7HtnTerm8ToStringB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(72) %143, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %144 unwind label %149

144:                                              ; preds = %142
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull @.str.83, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %145 unwind label %151

145:                                              ; preds = %144
  %146 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  invoke void @_Z35failfast_uncaught_exception_handlerbPKcS0_l(i1 noundef zeroext false, ptr noundef %146, ptr noundef nonnull @.str.4, i64 noundef 1245)
          to label %147 unwind label %153

147:                                              ; preds = %145
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  %148 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  store i32 8, ptr %148, align 8, !tbaa !28
  br label %506

149:                                              ; preds = %142
  %150 = landingpad { ptr, i32 }
          cleanup
  br label %156

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

153:                                              ; preds = %145
  %154 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %155

155:                                              ; preds = %153, %151
  %.pn150 = phi { ptr, i32 } [ %154, %153 ], [ %152, %151 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %156

156:                                              ; preds = %155, %149
  %.pn150.pn = phi { ptr, i32 } [ %.pn150, %155 ], [ %150, %149 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  br label %507

157:                                              ; preds = %86, %80
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #7
  %158 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  %159 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %158)
  %160 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %159, i64 noundef 0) #7
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %160) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #7
  %161 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  %162 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %161)
  %163 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %162, i64 noundef 1) #7
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(16) %163) #7
  %164 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  %165 = call noundef zeroext i1 @_ZNK7HtnTerm10isVariableEv(ptr noundef nonnull align 8 dereferenceable(72) %164)
  br i1 %165, label %166, label %340

166:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #7
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %13) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %167

167:                                              ; preds = %198, %166
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #7
  %168 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  invoke void @_ZNK7HtnTerm4nameB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(72) %168)
          to label %169 unwind label %192

169:                                              ; preds = %167
  %170 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.84)
  br i1 %170, label %171, label %.critedge

171:                                              ; preds = %169
  %172 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  %173 = call noundef i32 @_ZNK7HtnTerm5arityEv(ptr noundef nonnull align 8 dereferenceable(72) %172)
  %174 = icmp eq i32 %173, 2
  br i1 %174, label %175, label %.critedge

175:                                              ; preds = %171
  %176 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  %177 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %176)
  %178 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %177, i64 noundef 0) #7
  %179 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %178) #7
  %180 = call noundef zeroext i1 @_ZNK7HtnTerm10isVariableEv(ptr noundef nonnull align 8 dereferenceable(72) %179)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  br i1 %180, label %.loopexit, label %181

181:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #7
  %182 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  %183 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %182)
  %184 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %183, i64 noundef 0) #7
  %185 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %184) #7
  invoke void @_ZNK7HtnTerm4nameB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(72) %185)
          to label %186 unwind label %194

186:                                              ; preds = %181
  %187 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  %188 = icmp eq i64 %187, 1
  br i1 %188, label %189, label %.thread

.thread:                                          ; preds = %186
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %.loopexit

189:                                              ; preds = %186
  %190 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %17, i64 noundef 0)
  %191 = load i8, ptr %190, align 1, !tbaa !41
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %15, i8 noundef signext %191)
          to label %198 unwind label %196

192:                                              ; preds = %167
  %193 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  br label %339

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

196:                                              ; preds = %189
  %197 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  br label %203

198:                                              ; preds = %189
  %199 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  %200 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %199)
  %201 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %200, i64 noundef 1) #7
  %202 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrI7HtnTermEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %201) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %167

203:                                              ; preds = %196, %194
  %.pn116 = phi { ptr, i32 } [ %197, %196 ], [ %195, %194 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %339

.critedge:                                        ; preds = %169, %171
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  br label %.loopexit

.loopexit:                                        ; preds = %175, %.thread, %.critedge
  %204 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  %205 = icmp eq i64 %204, 0
  br i1 %205, label %206, label %259

206:                                              ; preds = %.loopexit
  %207 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
  %208 = call noundef i64 @_ZN9NanoTrace16allowedTraceTypeEv(ptr noundef nonnull align 8 dereferenceable(12) %207)
  %209 = and i64 %208, 8388608
  %.not131 = icmp eq i64 %209, 0
  br i1 %.not131, label %254, label %210

210:                                              ; preds = %206
  %211 = getelementptr inbounds i8, ptr %0, i64 96
  %212 = load i8, ptr %211, align 8, !tbaa !37, !range !38, !noundef !39
  %213 = trunc nuw i8 %212 to i1
  %214 = select i1 %213, i32 0, i32 2
  %215 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
  %216 = call noundef i32 @_ZN9NanoTrace11detailLevelEv(ptr noundef nonnull align 8 dereferenceable(12) %215)
  %.not132 = icmp sgt i32 %214, %216
  br i1 %.not132, label %254, label %217

217:                                              ; preds = %210
  %218 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #7
  %219 = getelementptr inbounds i8, ptr %0, i64 160
  %220 = load i32, ptr %219, align 8, !tbaa !40
  %221 = sext i32 %220 to i64
  %222 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  %223 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %222) #7
  %224 = add i64 %223, %221
  %225 = mul i64 %224, 11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, i64 noundef %225, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %226 unwind label %237

226:                                              ; preds = %217
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull @.str.5, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %227 unwind label %239

227:                                              ; preds = %226
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull @.str.14)
          to label %228 unwind label %241

228:                                              ; preds = %227
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.85)
          to label %229 unwind label %243

229:                                              ; preds = %228
  %230 = load i8, ptr %211, align 8, !tbaa !37, !range !38, !noundef !39
  %231 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  invoke void @_ZN7HtnTerm8ToStringB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(72) %231, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %232 unwind label %245

232:                                              ; preds = %229
  %233 = trunc nuw i8 %230 to i1
  %234 = select i1 %233, i32 0, i32 2
  %235 = invoke noundef double @_ZN9NanoTrace5TraceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEdRKS6_i11TraceDetailT_(ptr noundef nonnull align 8 dereferenceable(12) %218, ptr noundef nonnull align 8 dereferenceable(32) %18, i32 noundef 8388608, i32 noundef %234, ptr noundef nonnull %23)
          to label %236 unwind label %247

236:                                              ; preds = %232
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  br label %254

237:                                              ; preds = %217
  %238 = landingpad { ptr, i32 }
          cleanup
  br label %253

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

241:                                              ; preds = %227
  %242 = landingpad { ptr, i32 }
          cleanup
  br label %251

243:                                              ; preds = %228
  %244 = landingpad { ptr, i32 }
          cleanup
  br label %250

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

247:                                              ; preds = %232
  %248 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  br label %249

249:                                              ; preds = %247, %245
  %.pn133 = phi { ptr, i32 } [ %248, %247 ], [ %246, %245 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  br label %250

250:                                              ; preds = %249, %243
  %.pn133.pn = phi { ptr, i32 } [ %.pn133, %249 ], [ %244, %243 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %251

251:                                              ; preds = %250, %241
  %.pn133.pn.pn = phi { ptr, i32 } [ %.pn133.pn, %250 ], [ %242, %241 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %252

252:                                              ; preds = %251, %239
  %.pn133.pn.pn.pn = phi { ptr, i32 } [ %.pn133.pn.pn, %251 ], [ %240, %239 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  br label %253

253:                                              ; preds = %252, %237
  %.pn133.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn133.pn.pn.pn, %252 ], [ %238, %237 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  br label %339

254:                                              ; preds = %236, %210, %206
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  call void @_ZNSt10shared_ptrI11ResolveNodeEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  invoke void @_ZN12ResolveState13RecordFailureESt10shared_ptrI7HtnTermES0_I11ResolveNodeE(ptr noundef nonnull align 8 dereferenceable(244) %0, ptr noundef nonnull %24, ptr noundef nonnull %25)
          to label %255 unwind label %257

255:                                              ; preds = %254
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #7
  %256 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  call void @_ZNSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %256) #7
  br label %338

257:                                              ; preds = %254
  %258 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #7
  br label %339

259:                                              ; preds = %.loopexit
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #7
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.28") align 8 %26, ptr noundef nonnull align 8 dereferenceable(33088) %72, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %260 unwind label %297

260:                                              ; preds = %259
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #7
  %261 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  %262 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %261)
  %263 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %262, i64 noundef 0) #7
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull align 8 dereferenceable(16) %263) #7
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull align 8 dereferenceable(16) %26) #7
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.0") align 8 %27, ptr noundef nonnull %72, ptr noundef nonnull %28, ptr noundef nonnull %29)
          to label %264 unwind label %299

264:                                              ; preds = %260
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #7
  %265 = call noundef zeroext i1 @_ZStneISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr null) #7
  invoke void @_Z35failfast_uncaught_exception_handlerbPKcl(i1 noundef zeroext %265, ptr noundef nonnull @.str.4, i64 noundef 1286)
          to label %266 unwind label %301

266:                                              ; preds = %264
  %267 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
  %268 = call noundef i64 @_ZN9NanoTrace16allowedTraceTypeEv(ptr noundef nonnull align 8 dereferenceable(12) %267)
  %269 = and i64 %268, 8388608
  %.not118 = icmp eq i64 %269, 0
  br i1 %.not118, label %320, label %270

270:                                              ; preds = %266
  %271 = getelementptr inbounds i8, ptr %0, i64 96
  %272 = load i8, ptr %271, align 8, !tbaa !37, !range !38, !noundef !39
  %273 = trunc nuw i8 %272 to i1
  %274 = select i1 %273, i32 0, i32 2
  %275 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
  %276 = call noundef i32 @_ZN9NanoTrace11detailLevelEv(ptr noundef nonnull align 8 dereferenceable(12) %275)
  %.not119 = icmp sgt i32 %274, %276
  br i1 %.not119, label %320, label %277

277:                                              ; preds = %270
  %278 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #7
  %279 = getelementptr inbounds i8, ptr %0, i64 160
  %280 = load i32, ptr %279, align 8, !tbaa !40
  %281 = sext i32 %280 to i64
  %282 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  %283 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %282) #7
  %284 = add i64 %283, %281
  %285 = mul i64 %284, 11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, i64 noundef %285, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %286 unwind label %303

286:                                              ; preds = %277
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull @.str.5, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %287 unwind label %305

287:                                              ; preds = %286
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull @.str.6)
          to label %288 unwind label %307

288:                                              ; preds = %287
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull @.str.86)
          to label %289 unwind label %309

289:                                              ; preds = %288
  %290 = load i8, ptr %271, align 8, !tbaa !37, !range !38, !noundef !39
  %291 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  invoke void @_ZN15HtnGoalResolver8ToStringB5cxx11ERKSt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(24) %291, i1 noundef zeroext false)
          to label %292 unwind label %311

292:                                              ; preds = %289
  %293 = trunc nuw i8 %290 to i1
  %294 = select i1 %293, i32 0, i32 2
  %295 = invoke noundef double @_ZN9NanoTrace5TraceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEdRKS6_i11TraceDetailT_(ptr noundef nonnull align 8 dereferenceable(12) %278, ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef 8388608, i32 noundef %294, ptr noundef nonnull %35)
          to label %296 unwind label %313

296:                                              ; preds = %292
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  br label %320

297:                                              ; preds = %259
  %298 = landingpad { ptr, i32 }
          cleanup
  br label %337

299:                                              ; preds = %260
  %300 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #7
  br label %336

301:                                              ; preds = %264
  %302 = landingpad { ptr, i32 }
          cleanup
  br label %335

303:                                              ; preds = %277
  %304 = landingpad { ptr, i32 }
          cleanup
  br label %319

305:                                              ; preds = %286
  %306 = landingpad { ptr, i32 }
          cleanup
  br label %318

307:                                              ; preds = %287
  %308 = landingpad { ptr, i32 }
          cleanup
  br label %317

309:                                              ; preds = %288
  %310 = landingpad { ptr, i32 }
          cleanup
  br label %316

311:                                              ; preds = %289
  %312 = landingpad { ptr, i32 }
          cleanup
  br label %315

313:                                              ; preds = %292
  %314 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  br label %315

315:                                              ; preds = %313, %311
  %.pn120 = phi { ptr, i32 } [ %314, %313 ], [ %312, %311 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %316

316:                                              ; preds = %315, %309
  %.pn120.pn = phi { ptr, i32 } [ %.pn120, %315 ], [ %310, %309 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  br label %317

317:                                              ; preds = %316, %307
  %.pn120.pn.pn = phi { ptr, i32 } [ %.pn120.pn, %316 ], [ %308, %307 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  br label %318

318:                                              ; preds = %317, %305
  %.pn120.pn.pn.pn = phi { ptr, i32 } [ %.pn120.pn.pn, %317 ], [ %306, %305 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  br label %319

319:                                              ; preds = %318, %303
  %.pn120.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn120.pn.pn.pn, %318 ], [ %304, %303 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  br label %335

320:                                              ; preds = %296, %270, %266
  %321 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #7
  %322 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  %323 = getelementptr inbounds i8, ptr %0, i64 144
  %324 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI7HtnTermESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %323) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %37) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %37, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #7
  %325 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  %326 = getelementptr inbounds i8, ptr %0, i64 240
  invoke void @_ZN11ResolveNode15CreateChildNodeEP14HtnTermFactoryRKSt6vectorISt10shared_ptrI7HtnTermESaIS5_EES9_RKS2_ISt4pairIS5_S5_ESaISB_EEPi(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.25") align 8 %36, ptr noundef nonnull align 8 dereferenceable(144) %322, ptr noundef nonnull %72, ptr noundef nonnull align 8 dereferenceable(24) %324, ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %325, ptr noundef nonnull %326)
          to label %327 unwind label %330

327:                                              ; preds = %320
  invoke void @_ZNSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %321, ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %328 unwind label %332

328:                                              ; preds = %327
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #7
  %329 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  store i32 9, ptr %329, align 8, !tbaa !28
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #7
  br label %338

330:                                              ; preds = %320
  %331 = landingpad { ptr, i32 }
          cleanup
  br label %334

332:                                              ; preds = %327
  %333 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  br label %334

334:                                              ; preds = %332, %330
  %.pn126 = phi { ptr, i32 } [ %333, %332 ], [ %331, %330 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #7
  br label %335

335:                                              ; preds = %334, %319, %301
  %.pn126.pn = phi { ptr, i32 } [ %.pn126, %334 ], [ %.pn120.pn.pn.pn.pn, %319 ], [ %302, %301 ]
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #7
  br label %336

336:                                              ; preds = %335, %299
  %.pn126.pn.pn = phi { ptr, i32 } [ %.pn126.pn, %335 ], [ %300, %299 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #7
  br label %337

337:                                              ; preds = %336, %297
  %.pn126.pn.pn.pn = phi { ptr, i32 } [ %.pn126.pn.pn, %336 ], [ %298, %297 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #7
  br label %339

338:                                              ; preds = %328, %255
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  br label %503

339:                                              ; preds = %337, %257, %253, %203, %192
  %.pn139 = phi { ptr, i32 } [ %258, %257 ], [ %.pn133.pn.pn.pn.pn, %253 ], [ %.pn126.pn.pn.pn, %337 ], [ %.pn116, %203 ], [ %193, %192 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  br label %504

340:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #7
  %341 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  invoke void @_ZNK7HtnTerm4nameB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef nonnull align 8 dereferenceable(72) %341)
          to label %342 unwind label %346

342:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #7
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #7
  %343 = call ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  store ptr %343, ptr %40, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #7
  %344 = call ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  store ptr %344, ptr %41, align 8
  %345 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %41) #7
  br i1 %345, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %352, %342
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #7
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 8 dereferenceable(24) %39)
          to label %363 unwind label %406

346:                                              ; preds = %340
  %347 = landingpad { ptr, i32 }
          cleanup
  br label %502

.lr.ph:                                           ; preds = %342, %352
  %348 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  %349 = load i8, ptr %348, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, i64 noundef 1, i8 noundef signext %349, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %350 unwind label %355

350:                                              ; preds = %.lr.ph
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.28") align 8 %42, ptr noundef nonnull align 8 dereferenceable(33088) %72, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %351 unwind label %357

351:                                              ; preds = %350
  invoke void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(16) %42)
          to label %352 unwind label %359

352:                                              ; preds = %351
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #7
  %353 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  %354 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %41) #7
  br i1 %354, label %.lr.ph, label %._crit_edge

355:                                              ; preds = %.lr.ph
  %356 = landingpad { ptr, i32 }
          cleanup
  br label %362

357:                                              ; preds = %350
  %358 = landingpad { ptr, i32 }
          cleanup
  br label %361

359:                                              ; preds = %351
  %360 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #7
  br label %361

361:                                              ; preds = %359, %357
  %.pn111 = phi { ptr, i32 } [ %360, %359 ], [ %358, %357 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  br label %362

362:                                              ; preds = %361, %355
  %.pn111.pn = phi { ptr, i32 } [ %.pn111, %361 ], [ %356, %355 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  br label %501

363:                                              ; preds = %._crit_edge
  invoke void @_ZN14HtnTermFactory10CreateListESt6vectorISt10shared_ptrI7HtnTermESaIS3_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.28") align 8 %45, ptr noundef nonnull align 8 dereferenceable(33088) %72, ptr noundef nonnull %46)
          to label %364 unwind label %408

364:                                              ; preds = %363
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #7
  %365 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  %366 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %365)
  %367 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %366, i64 noundef 1) #7
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull align 8 dereferenceable(16) %367) #7
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(16) %45) #7
  invoke void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.0") align 8 %47, ptr noundef nonnull %72, ptr noundef nonnull %48, ptr noundef nonnull %49)
          to label %368 unwind label %410

368:                                              ; preds = %364
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #7
  %369 = call noundef zeroext i1 @_ZSteqISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %47, ptr null) #7
  %370 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
  %371 = call noundef i64 @_ZN9NanoTrace16allowedTraceTypeEv(ptr noundef nonnull align 8 dereferenceable(12) %370)
  %372 = and i64 %371, 8388608
  %.not98 = icmp eq i64 %372, 0
  br i1 %369, label %373, label %437

373:                                              ; preds = %368
  br i1 %.not98, label %432, label %374

374:                                              ; preds = %373
  %375 = getelementptr inbounds i8, ptr %0, i64 96
  %376 = load i8, ptr %375, align 8, !tbaa !37, !range !38, !noundef !39
  %377 = trunc nuw i8 %376 to i1
  %378 = select i1 %377, i32 0, i32 2
  %379 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
  %380 = call noundef i32 @_ZN9NanoTrace11detailLevelEv(ptr noundef nonnull align 8 dereferenceable(12) %379)
  %.not99 = icmp sgt i32 %378, %380
  br i1 %.not99, label %432, label %381

381:                                              ; preds = %374
  %382 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %51) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %52) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %53) #7
  %383 = getelementptr inbounds i8, ptr %0, i64 160
  %384 = load i32, ptr %383, align 8, !tbaa !40
  %385 = sext i32 %384 to i64
  %386 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  %387 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %386) #7
  %388 = add i64 %387, %385
  %389 = mul i64 %388, 11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %54) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, i64 noundef %389, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %390 unwind label %412

390:                                              ; preds = %381
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %52, ptr noundef nonnull @.str.5, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %391 unwind label %414

391:                                              ; preds = %390
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %51, ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull @.str.14)
          to label %392 unwind label %416

392:                                              ; preds = %391
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %50, ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull @.str.87)
          to label %393 unwind label %418

393:                                              ; preds = %392
  %394 = load i8, ptr %375, align 8, !tbaa !37, !range !38, !noundef !39
  %395 = trunc nuw i8 %394 to i1
  %396 = select i1 %395, i32 0, i32 2
  %397 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  invoke void @_ZN7HtnTerm8ToStringB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 8 dereferenceable(72) %397, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %398 unwind label %420

398:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %56) #7
  %399 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  %400 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %399)
  %401 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %400, i64 noundef 1) #7
  %402 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %401) #7
  invoke void @_ZN7HtnTerm8ToStringB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %56, ptr noundef nonnull align 8 dereferenceable(72) %402, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %403 unwind label %422

403:                                              ; preds = %398
  %404 = invoke noundef double @_ZN9NanoTrace5TraceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EEdRKS6_i11TraceDetailT_RKT0_(ptr noundef nonnull align 8 dereferenceable(12) %382, ptr noundef nonnull align 8 dereferenceable(32) %50, i32 noundef 8388608, i32 noundef %396, ptr noundef nonnull %55, ptr noundef nonnull align 8 dereferenceable(32) %56)
          to label %405 unwind label %424

405:                                              ; preds = %403
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #7
  br label %432

406:                                              ; preds = %._crit_edge
  %407 = landingpad { ptr, i32 }
          cleanup
  br label %500

408:                                              ; preds = %363
  %409 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  br label %500

410:                                              ; preds = %364
  %411 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #7
  br label %499

412:                                              ; preds = %381
  %413 = landingpad { ptr, i32 }
          cleanup
  br label %431

414:                                              ; preds = %390
  %415 = landingpad { ptr, i32 }
          cleanup
  br label %430

416:                                              ; preds = %391
  %417 = landingpad { ptr, i32 }
          cleanup
  br label %429

418:                                              ; preds = %392
  %419 = landingpad { ptr, i32 }
          cleanup
  br label %428

420:                                              ; preds = %393
  %421 = landingpad { ptr, i32 }
          cleanup
  br label %427

422:                                              ; preds = %398
  %423 = landingpad { ptr, i32 }
          cleanup
  br label %426

424:                                              ; preds = %403
  %425 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  br label %426

426:                                              ; preds = %424, %422
  %.pn100 = phi { ptr, i32 } [ %425, %424 ], [ %423, %422 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  br label %427

427:                                              ; preds = %426, %420
  %.pn100.pn = phi { ptr, i32 } [ %.pn100, %426 ], [ %421, %420 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  br label %428

428:                                              ; preds = %427, %418
  %.pn100.pn.pn = phi { ptr, i32 } [ %.pn100.pn, %427 ], [ %419, %418 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  br label %429

429:                                              ; preds = %428, %416
  %.pn100.pn.pn.pn = phi { ptr, i32 } [ %.pn100.pn.pn, %428 ], [ %417, %416 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  br label %430

430:                                              ; preds = %429, %414
  %.pn100.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn100.pn.pn.pn, %429 ], [ %415, %414 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  br label %431

431:                                              ; preds = %430, %412
  %.pn100.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn100.pn.pn.pn.pn, %430 ], [ %413, %412 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #7
  br label %498

432:                                              ; preds = %405, %374, %373
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %57, ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  call void @_ZNSt10shared_ptrI11ResolveNodeEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  invoke void @_ZN12ResolveState13RecordFailureESt10shared_ptrI7HtnTermES0_I11ResolveNodeE(ptr noundef nonnull align 8 dereferenceable(244) %0, ptr noundef nonnull %57, ptr noundef nonnull %58)
          to label %433 unwind label %435

433:                                              ; preds = %432
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #7
  %434 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  call void @_ZNSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %434) #7
  br label %497

435:                                              ; preds = %432
  %436 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #7
  br label %498

437:                                              ; preds = %368
  br i1 %.not98, label %482, label %438

438:                                              ; preds = %437
  %439 = getelementptr inbounds i8, ptr %0, i64 96
  %440 = load i8, ptr %439, align 8, !tbaa !37, !range !38, !noundef !39
  %441 = trunc nuw i8 %440 to i1
  %442 = select i1 %441, i32 0, i32 2
  %443 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
  %444 = call noundef i32 @_ZN9NanoTrace11detailLevelEv(ptr noundef nonnull align 8 dereferenceable(12) %443)
  %.not90 = icmp sgt i32 %442, %444
  br i1 %.not90, label %482, label %445

445:                                              ; preds = %438
  %446 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %59) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %60) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %61) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %62) #7
  %447 = getelementptr inbounds i8, ptr %0, i64 160
  %448 = load i32, ptr %447, align 8, !tbaa !40
  %449 = sext i32 %448 to i64
  %450 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  %451 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %450) #7
  %452 = add i64 %451, %449
  %453 = mul i64 %452, 11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %63) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %62, i64 noundef %453, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %63)
          to label %454 unwind label %465

454:                                              ; preds = %445
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef nonnull @.str.5, ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %455 unwind label %467

455:                                              ; preds = %454
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %60, ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull @.str.6)
          to label %456 unwind label %469

456:                                              ; preds = %455
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %59, ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull @.str.86)
          to label %457 unwind label %471

457:                                              ; preds = %456
  %458 = load i8, ptr %439, align 8, !tbaa !37, !range !38, !noundef !39
  %459 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  invoke void @_ZN15HtnGoalResolver8ToStringB5cxx11ERKSt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %64, ptr noundef nonnull align 8 dereferenceable(24) %459, i1 noundef zeroext false)
          to label %460 unwind label %473

460:                                              ; preds = %457
  %461 = trunc nuw i8 %458 to i1
  %462 = select i1 %461, i32 0, i32 2
  %463 = invoke noundef double @_ZN9NanoTrace5TraceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEdRKS6_i11TraceDetailT_(ptr noundef nonnull align 8 dereferenceable(12) %446, ptr noundef nonnull align 8 dereferenceable(32) %59, i32 noundef 8388608, i32 noundef %462, ptr noundef nonnull %64)
          to label %464 unwind label %475

464:                                              ; preds = %460
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #7
  br label %482

465:                                              ; preds = %445
  %466 = landingpad { ptr, i32 }
          cleanup
  br label %481

467:                                              ; preds = %454
  %468 = landingpad { ptr, i32 }
          cleanup
  br label %480

469:                                              ; preds = %455
  %470 = landingpad { ptr, i32 }
          cleanup
  br label %479

471:                                              ; preds = %456
  %472 = landingpad { ptr, i32 }
          cleanup
  br label %478

473:                                              ; preds = %457
  %474 = landingpad { ptr, i32 }
          cleanup
  br label %477

475:                                              ; preds = %460
  %476 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  br label %477

477:                                              ; preds = %475, %473
  %.pn = phi { ptr, i32 } [ %476, %475 ], [ %474, %473 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  br label %478

478:                                              ; preds = %477, %471
  %.pn.pn = phi { ptr, i32 } [ %.pn, %477 ], [ %472, %471 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  br label %479

479:                                              ; preds = %478, %469
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %478 ], [ %470, %469 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  br label %480

480:                                              ; preds = %479, %467
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %479 ], [ %468, %467 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  br label %481

481:                                              ; preds = %480, %465
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %480 ], [ %466, %465 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #7
  br label %498

482:                                              ; preds = %464, %438, %437
  %483 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %65) #7
  %484 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  %485 = getelementptr inbounds i8, ptr %0, i64 144
  %486 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI7HtnTermESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %485) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %66) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %66, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #7
  %487 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  %488 = getelementptr inbounds i8, ptr %0, i64 240
  invoke void @_ZN11ResolveNode15CreateChildNodeEP14HtnTermFactoryRKSt6vectorISt10shared_ptrI7HtnTermESaIS5_EES9_RKS2_ISt4pairIS5_S5_ESaISB_EEPi(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.25") align 8 %65, ptr noundef nonnull align 8 dereferenceable(144) %484, ptr noundef nonnull %72, ptr noundef nonnull align 8 dereferenceable(24) %486, ptr noundef nonnull align 8 dereferenceable(24) %66, ptr noundef nonnull align 8 dereferenceable(24) %487, ptr noundef nonnull %488)
          to label %489 unwind label %492

489:                                              ; preds = %482
  invoke void @_ZNSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %483, ptr noundef nonnull align 8 dereferenceable(16) %65)
          to label %490 unwind label %494

490:                                              ; preds = %489
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #7
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %65) #7
  %491 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  store i32 9, ptr %491, align 8, !tbaa !28
  br label %497

492:                                              ; preds = %482
  %493 = landingpad { ptr, i32 }
          cleanup
  br label %496

494:                                              ; preds = %489
  %495 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #7
  br label %496

496:                                              ; preds = %494, %492
  %.pn96 = phi { ptr, i32 } [ %495, %494 ], [ %493, %492 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %65) #7
  br label %498

497:                                              ; preds = %490, %433
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #7
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  br label %503

498:                                              ; preds = %496, %481, %435, %431
  %.pn107 = phi { ptr, i32 } [ %436, %435 ], [ %.pn100.pn.pn.pn.pn.pn, %431 ], [ %.pn96, %496 ], [ %.pn.pn.pn.pn.pn, %481 ]
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #7
  br label %499

499:                                              ; preds = %498, %410
  %.pn107.pn = phi { ptr, i32 } [ %.pn107, %498 ], [ %411, %410 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #7
  br label %500

500:                                              ; preds = %499, %408, %406
  %.pn107.pn.pn = phi { ptr, i32 } [ %.pn107.pn, %499 ], [ %409, %408 ], [ %407, %406 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #7
  br label %501

501:                                              ; preds = %500, %362
  %.pn111.pn.pn = phi { ptr, i32 } [ %.pn111.pn, %362 ], [ %.pn107.pn.pn, %500 ]
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %502

502:                                              ; preds = %501, %346
  %.pn111.pn.pn.pn = phi { ptr, i32 } [ %.pn111.pn.pn, %501 ], [ %347, %346 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  br label %504

503:                                              ; preds = %497, %338
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  br label %506

504:                                              ; preds = %502, %339
  %.pn139.pn = phi { ptr, i32 } [ %.pn139, %339 ], [ %.pn111.pn.pn.pn, %502 ]
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #7
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  br label %507

505:                                              ; preds = %1
  invoke void @_Z35failfast_uncaught_exception_handlerbPKcl(i1 noundef zeroext false, ptr noundef nonnull @.str.4, i64 noundef 1334)
          to label %506 unwind label %123

506:                                              ; preds = %505, %147, %503
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #7
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  ret void

507:                                              ; preds = %504, %156, %141, %123
  %.pn150.pn.pn = phi { ptr, i32 } [ %.pn150.pn, %156 ], [ %.pn144.pn.pn.pn.pn, %141 ], [ %.pn139.pn, %504 ], [ %124, %123 ]
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #7
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  resume { ptr, i32 } %.pn150.pn.pn
}

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

declare void @_Z35failfast_uncaught_exception_handlerbPKcS0_l(i1 noundef zeroext, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16), ptr) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN15HtnGoalResolver8ToStringB5cxx11ERKSt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEb(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) local_unnamed_addr #3 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #6

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

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

declare void @_Z35failfast_uncaught_exception_handlerbPKcl(i1 noundef zeroext, ptr noundef, i64 noundef) local_unnamed_addr #5

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN15HtnGoalResolver5UnifyEP14HtnTermFactorySt10shared_ptrI7HtnTermES4_(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.0") align 8, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

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

declare void @_ZN14HtnTermFactory10CreateListESt6vectorISt10shared_ptrI7HtnTermESaIS3_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.28") align 8, ptr noundef nonnull align 8 dereferenceable(33088), ptr noundef) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16), ptr) local_unnamed_addr #6

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { 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 #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { 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, !13, i64 224}
!6 = !{!"_ZTS12ResolveState", !7, i64 0, !10, i64 4, !11, i64 8, !10, i64 24, !10, i64 28, !10, i64 32, !15, i64 40, !19, i64 64, !7, i64 96, !21, i64 104, !19, i64 112, !22, i64 144, !10, i64 160, !10, i64 164, !13, i64 168, !24, i64 176, !21, i64 192, !26, i64 200, !21, i64 216, !13, i64 224, !21, i64 232, !10, i64 240}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTSSt10shared_ptrI7HtnTermE", !12, i64 0}
!12 = !{!"_ZTSSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EE", !13, i64 0, !14, i64 8}
!13 = !{!"any pointer", !8, i64 0}
!14 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !13, i64 0}
!15 = !{!"_ZTSSt6vectorISt10shared_ptrI7HtnTermESaIS2_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrI7HtnTermESaIS2_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrI7HtnTermESaIS2_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrI7HtnTermESaIS2_EE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!19 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !20, i64 0, !21, i64 8, !8, i64 16}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !13, i64 0}
!21 = !{!"long", !8, i64 0}
!22 = !{!"_ZTSSt10shared_ptrISt6vectorIS_I7HtnTermESaIS2_EEE", !23, i64 0}
!23 = !{!"_ZTSSt12__shared_ptrISt6vectorISt10shared_ptrI7HtnTermESaIS3_EELN9__gnu_cxx12_Lock_policyE2EE", !13, i64 0, !14, i64 8}
!24 = !{!"_ZTSSt10shared_ptrISt6vectorIS_I11ResolveNodeESaIS2_EEE", !25, i64 0}
!25 = !{!"_ZTSSt12__shared_ptrISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2EE", !13, i64 0, !14, i64 8}
!26 = !{!"_ZTSSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEE", !27, i64 0}
!27 = !{!"_ZTSSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EE", !13, i64 0, !14, i64 8}
!28 = !{!29, !30, i64 0}
!29 = !{!"_ZTS11ResolveNode", !30, i64 0, !15, i64 8, !10, i64 32, !10, i64 36, !31, i64 40, !33, i64 56, !21, i64 72, !7, i64 80, !7, i64 81, !26, i64 88, !35, i64 104, !7, i64 120, !7, i64 121, !22, i64 128}
!30 = !{!"_ZTS20ResolveContinuePoint", !8, i64 0}
!31 = !{!"_ZTSSt10shared_ptrISt6vectorISt4pairIS_I7HtnRuleES0_IS1_IS_I7HtnTermES5_ESaIS6_EEESaIS9_EEE", !32, i64 0}
!32 = !{!"_ZTSSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnRuleES0_IS1_IS2_I7HtnTermES6_ESaIS7_EEESaISA_EELN9__gnu_cxx12_Lock_policyE2EE", !13, i64 0, !14, i64 8}
!33 = !{!"_ZTSSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEE", !34, i64 0}
!34 = !{!"_ZTSSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EE", !13, i64 0, !14, i64 8}
!35 = !{!"_ZTSSt10shared_ptrISt3setIS_I7HtnTermE15HtnTermComparerSaIS2_EEE", !36, i64 0}
!36 = !{!"_ZTSSt12__shared_ptrISt3setISt10shared_ptrI7HtnTermE15HtnTermComparerSaIS3_EELN9__gnu_cxx12_Lock_policyE2EE", !13, i64 0, !14, i64 8}
!37 = !{!6, !7, i64 96}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = !{!6, !10, i64 160}
!41 = !{!8, !8, i64 0}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass