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

; 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::reverse_iterator" = type { %"class.__gnu_cxx::__normal_iterator" }
%"class.__gnu_cxx::__normal_iterator" = 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::__shared_count" = type { ptr }
%"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_ptr.12" = type { %"class.std::__shared_ptr.13" }
%"class.std::__shared_ptr.13" = type { ptr, %"class.std::__shared_count" }
%"class.__gnu_cxx::__normal_iterator.68" = type { ptr }
%"class.std::shared_ptr.140" = type { %"class.std::__shared_ptr.141" }
%"class.std::__shared_ptr.141" = type { ptr, %"class.std::__shared_count" }
%"class.std::allocator" = type { i8 }
%"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.std::shared_ptr.6" = type { %"class.std::__shared_ptr.7" }
%"class.std::__shared_ptr.7" = type { ptr, %"class.std::__shared_count" }
%"struct.std::pair.143" = type { %"class.std::shared_ptr.140", %"class.std::vector.20" }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = type { %"struct.std::_Vector_base<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>, std::allocator<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>, std::allocator<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>, std::allocator<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>, std::allocator<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::shared_ptr.0" = type { %"class.std::__shared_ptr.1" }
%"class.std::__shared_ptr.1" = type { ptr, %"class.std::__shared_count" }
%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" }

@.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.108 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [34 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare 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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16), ptr) #3

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrI7HtnTermESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #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 @_ZN11ResolveNode20PopStandaloneResolveEP12ResolveState(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11ResolveNode21PushStandaloneResolveEP12ResolveStateSt10shared_ptrISt3setIS2_I7HtnTermE15HtnTermComparerSaIS5_EEESt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPKS5_St6vectorIS5_S7_EEEESI_20ResolveContinuePoint(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) #2 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: 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) #7

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN15HtnGoalResolver9RuleFirstEP12ResolveState(ptr noundef %0) #2 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 ptr, align 8
  %10 = alloca %"class.std::shared_ptr.12", align 8
  %11 = alloca ptr, align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.68", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.68", align 8
  %14 = alloca %"class.std::shared_ptr.28", align 8
  %15 = alloca %"class.std::shared_ptr.12", align 8
  %16 = alloca %"class.std::reverse_iterator", align 8
  %17 = alloca %"class.std::reverse_iterator", align 8
  %18 = alloca %"class.std::shared_ptr.28", align 8
  %19 = alloca %"class.std::shared_ptr.25", align 8
  %20 = alloca %"class.std::shared_ptr.140", align 8
  %21 = alloca %"class.std::shared_ptr.28", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator", align 1
  %24 = alloca %"class.std::vector", align 8
  %25 = alloca i1, align 1
  %26 = alloca %"class.std::shared_ptr.6", align 8
  %27 = alloca %"struct.std::pair.143", align 8
  %28 = alloca %"class.std::shared_ptr.0", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", 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::allocator", align 1
  store ptr %0, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %3) #9
  %34 = load ptr, ptr %2, align 8, !tbaa !5
  %35 = getelementptr inbounds %class.ResolveState, ptr %34, i32 0, i32 18
  %36 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #9
  %37 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %36) #9
  call void @_ZNSt10shared_ptrI11ResolveNodeEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %37) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %4) #9
  %38 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  invoke void @_ZN11ResolveNode11currentGoalEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.28") align 8 %4, ptr noundef nonnull align 8 dereferenceable(144) %38)
          to label %39 unwind label %50

39:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #9
  %40 = load ptr, ptr %2, align 8, !tbaa !5
  %41 = getelementptr inbounds %class.ResolveState, ptr %40, i32 0, i32 20
  store ptr %41, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #9
  %42 = load ptr, ptr %2, align 8, !tbaa !5
  %43 = getelementptr inbounds %class.ResolveState, ptr %42, i32 0, i32 18
  store ptr %43, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #9
  %44 = load ptr, ptr %2, align 8, !tbaa !5
  %45 = getelementptr inbounds %class.ResolveState, ptr %44, i32 0, i32 22
  %46 = load ptr, ptr %45, align 8, !tbaa !9
  store ptr %46, ptr %9, align 8, !tbaa !5
  %47 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %48 = getelementptr inbounds %class.ResolveNode, ptr %47, i32 0, i32 0
  %49 = load i32, ptr %48, align 8, !tbaa !29
  switch i32 %49, label %270 [
    i32 0, label %54
    i32 1, label %107
  ]

50:                                               ; preds = %1
  %51 = landingpad { ptr, i32 }
          cleanup
  %52 = extractvalue { ptr, i32 } %51, 0
  store ptr %52, ptr %5, align 8
  %53 = extractvalue { ptr, i32 } %51, 1
  store i32 %53, ptr %6, align 4
  br label %274

54:                                               ; preds = %39
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #9
  %55 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #10
          to label %56 unwind label %71

56:                                               ; preds = %54
  call void @llvm.memset.p0.i64(ptr align 16 %55, i8 0, i64 48, i1 false)
  call void @_ZNSt3setISt10shared_ptrI7HtnTermE15HtnTermComparerSaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %55) #9
  invoke void @_ZNSt10shared_ptrISt3setIS_I7HtnTermE15HtnTermComparerSaIS2_EEEC2IS5_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef %55)
          to label %57 unwind label %71

57:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #9
  %58 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %59 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK11ResolveNode9resolventEv(ptr noundef nonnull align 8 dereferenceable(144) %58)
          to label %60 unwind label %75

60:                                               ; preds = %57
  %61 = 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) %59) #9
  store ptr %61, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  %62 = load ptr, ptr %11, align 8, !tbaa !5
  %63 = call ptr @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %62) #9
  %64 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.68", ptr %12, i32 0, i32 0
  store ptr %63, ptr %64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #9
  %65 = load ptr, ptr %11, align 8, !tbaa !5
  %66 = call ptr @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %65) #9
  %67 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.68", ptr %13, i32 0, i32 0
  store ptr %66, ptr %67, align 8
  br label %68

68:                                               ; preds = %84, %60
  %69 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrI7HtnTermESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #9
  br i1 %69, label %79, label %70

70:                                               ; preds = %68
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  br label %91

71:                                               ; preds = %56, %54
  %72 = landingpad { ptr, i32 }
          cleanup
  %73 = extractvalue { ptr, i32 } %72, 0
  store ptr %73, ptr %5, align 8
  %74 = extractvalue { ptr, i32 } %72, 1
  store i32 %74, ptr %6, align 4
  br label %106

75:                                               ; preds = %57
  %76 = landingpad { ptr, i32 }
          cleanup
  %77 = extractvalue { ptr, i32 } %76, 0
  store ptr %77, ptr %5, align 8
  %78 = extractvalue { ptr, i32 } %76, 1
  store i32 %78, ptr %6, align 4
  br label %90

79:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #9
  %80 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrI7HtnTermESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %80) #9
  %81 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %14) #9
  %82 = call noundef ptr @_ZNKSt12__shared_ptrISt3setISt10shared_ptrI7HtnTermE15HtnTermComparerSaIS3_EELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %10) #9
  invoke void @_ZN7HtnTerm15GetAllVariablesEPSt3setISt10shared_ptrIS_E15HtnTermComparerSaIS2_EE(ptr noundef nonnull align 8 dereferenceable(72) %81, ptr noundef %82)
          to label %83 unwind label %86

83:                                               ; preds = %79
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #9
  br label %84

84:                                               ; preds = %83
  %85 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrI7HtnTermESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  br label %68

86:                                               ; preds = %79
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %5, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %6, align 4
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  br label %90

90:                                               ; preds = %86, %75
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  br label %105

91:                                               ; preds = %70
  %92 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %93 = load ptr, ptr %2, align 8, !tbaa !5
  call void @_ZNSt10shared_ptrISt3setIS_I7HtnTermE15HtnTermComparerSaIS2_EEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %10) #9
  %94 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  %95 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %94)
          to label %96 unwind label %101

96:                                               ; preds = %91
  call void @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EE6rbeginEv(ptr dead_on_unwind writable sret(%"class.std::reverse_iterator") align 8 %16, ptr noundef nonnull align 8 dereferenceable(24) %95) #9
  %97 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  %98 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %97)
          to label %99 unwind label %101

99:                                               ; preds = %96
  call void @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EE4rendEv(ptr dead_on_unwind writable sret(%"class.std::reverse_iterator") align 8 %17, ptr noundef nonnull align 8 dereferenceable(24) %98) #9
  invoke void @_ZN11ResolveNode21PushStandaloneResolveEP12ResolveStateSt10shared_ptrISt3setIS2_I7HtnTermE15HtnTermComparerSaIS5_EEESt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPKS5_St6vectorIS5_S7_EEEESI_20ResolveContinuePoint(ptr noundef nonnull align 8 dereferenceable(144) %92, ptr noundef %93, ptr noundef %15, ptr noundef %16, ptr noundef %17, i32 noundef 1)
          to label %100 unwind label %101

100:                                              ; preds = %99
  call void @_ZNSt12__shared_ptrISt3setISt10shared_ptrI7HtnTermE15HtnTermComparerSaIS3_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  call void @_ZNSt12__shared_ptrISt3setISt10shared_ptrI7HtnTermE15HtnTermComparerSaIS3_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #9
  br label %272

101:                                              ; preds = %99, %96, %91
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %5, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %6, align 4
  call void @_ZNSt12__shared_ptrISt3setISt10shared_ptrI7HtnTermE15HtnTermComparerSaIS3_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  br label %105

105:                                              ; preds = %101, %90
  call void @_ZNSt12__shared_ptrISt3setISt10shared_ptrI7HtnTermE15HtnTermComparerSaIS3_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #9
  br label %106

106:                                              ; preds = %105, %71
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #9
  br label %273

107:                                              ; preds = %39
  %108 = load ptr, ptr %7, align 8, !tbaa !5
  %109 = call noundef zeroext i1 @_ZSteqISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %108, ptr null) #9
  br i1 %109, label %110, label %119

110:                                              ; preds = %107
  %111 = load ptr, ptr %2, align 8, !tbaa !5
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  call void @_ZNSt10shared_ptrI11ResolveNodeEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  invoke void @_ZN12ResolveState13RecordFailureESt10shared_ptrI7HtnTermES0_I11ResolveNodeE(ptr noundef nonnull align 8 dereferenceable(244) %111, ptr noundef %18, ptr noundef %19)
          to label %112 unwind label %115

112:                                              ; preds = %110
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  %113 = load ptr, ptr %8, align 8, !tbaa !5
  %114 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %113) #9
  call void @_ZNSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %114) #9
  br label %262

115:                                              ; preds = %110
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %5, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %6, align 4
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  br label %273

119:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #9
  %120 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #10
          to label %121 unwind label %189

121:                                              ; preds = %119
  store i1 true, ptr %25, align 1
  %122 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef @.str.108, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %123 unwind label %193

123:                                              ; preds = %121
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.28") align 8 %21, ptr noundef nonnull align 8 dereferenceable(33088) %122, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %124 unwind label %197

124:                                              ; preds = %123
  call void @llvm.memset.p0.i64(ptr align 8 %24, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #9
  invoke void @_ZN7HtnRuleC2ESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(40) %120, ptr noundef %21, ptr noundef %24)
          to label %125 unwind label %201

125:                                              ; preds = %124
  store i1 false, ptr %25, align 1
  invoke void @_ZNSt10shared_ptrI7HtnRuleEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef %120)
          to label %126 unwind label %201

126:                                              ; preds = %125
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #9
  %127 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #10
          to label %128 unwind label %210

128:                                              ; preds = %126
  call void @llvm.memset.p0.i64(ptr align 16 %127, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnRuleES_IS0_IS1_I7HtnTermES5_ESaIS6_EEESaIS9_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %127) #9
  invoke void @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnRuleES0_IS1_IS_I7HtnTermES5_ESaIS6_EEESaIS9_EEEC2ISB_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef %127)
          to label %129 unwind label %210

129:                                              ; preds = %128
  %130 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %131 = getelementptr inbounds %class.ResolveNode, ptr %130, i32 0, i32 4
  %132 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnRuleES0_IS1_IS_I7HtnTermES5_ESaIS6_EEESaIS9_EEEaSEOSC_(ptr noundef nonnull align 8 dereferenceable(16) %131, ptr noundef nonnull align 8 dereferenceable(16) %26) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnRuleES0_IS1_IS2_I7HtnTermES6_ESaIS7_EEESaISA_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #9
  %133 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %134 = getelementptr inbounds %class.ResolveNode, ptr %133, i32 0, i32 4
  %135 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnRuleES0_IS1_IS2_I7HtnTermES6_ESaIS7_EEESaISA_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %134) #9
  call void @llvm.lifetime.start.p0(i64 40, ptr %27) #9
  %136 = load ptr, ptr %7, align 8, !tbaa !5
  %137 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %136) #9
  %138 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %137, i64 noundef 0) #9
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnRuleESt6vectorIS_IS0_I7HtnTermES5_ESaIS6_EEEC2IRS2_RS8_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISE_SF_EEEbE4typeELb1EEEOSE_OSF_(ptr noundef nonnull align 8 dereferenceable(40) %27, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(24) %138)
          to label %139 unwind label %214

139:                                              ; preds = %129
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnRuleES_IS0_IS1_I7HtnTermES5_ESaIS6_EEESaIS9_EE9push_backEOS9_(ptr noundef nonnull align 8 dereferenceable(24) %135, ptr noundef nonnull align 8 dereferenceable(40) %27)
          to label %140 unwind label %218

140:                                              ; preds = %139
  call void @_ZNSt4pairISt10shared_ptrI7HtnRuleESt6vectorIS_IS0_I7HtnTermES5_ESaIS6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %27) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %27) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #9
  %141 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #10
          to label %142 unwind label %223

142:                                              ; preds = %140
  call void @llvm.memset.p0.i64(ptr align 16 %141, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %141) #9
  invoke void @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEC2IS6_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef %141)
          to label %143 unwind label %223

143:                                              ; preds = %142
  %144 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %145 = getelementptr inbounds %class.ResolveNode, ptr %144, i32 0, i32 5
  %146 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %145, ptr noundef nonnull align 8 dereferenceable(16) %28) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #9
  %147 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %148 unwind label %227

148:                                              ; preds = %143
  %149 = invoke noundef i64 @_ZN9NanoTrace16allowedTraceTypeEv(ptr noundef nonnull align 8 dereferenceable(12) %147)
          to label %150 unwind label %227

150:                                              ; preds = %148
  %151 = and i64 8388608, %149
  %152 = icmp ne i64 %151, 0
  br i1 %152, label %153, label %255

153:                                              ; preds = %150
  %154 = load ptr, ptr %2, align 8, !tbaa !5
  %155 = getelementptr inbounds %class.ResolveState, ptr %154, i32 0, i32 10
  %156 = load i8, ptr %155, align 8, !tbaa !38, !range !39, !noundef !40
  %157 = trunc i8 %156 to i1
  %158 = zext i1 %157 to i64
  %159 = select i1 %157, i32 0, i32 2
  %160 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %161 unwind label %227

161:                                              ; preds = %153
  %162 = invoke noundef i32 @_ZN9NanoTrace11detailLevelEv(ptr noundef nonnull align 8 dereferenceable(12) %160)
          to label %163 unwind label %227

163:                                              ; preds = %161
  %164 = icmp sle i32 %159, %162
  br i1 %164, label %165, label %255

165:                                              ; preds = %163
  %166 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
          to label %167 unwind label %227

167:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #9
  %168 = load ptr, ptr %2, align 8, !tbaa !5
  %169 = getelementptr inbounds %class.ResolveState, ptr %168, i32 0, i32 15
  %170 = load i32, ptr %169, align 8, !tbaa !41
  %171 = sext i32 %170 to i64
  %172 = load ptr, ptr %8, align 8, !tbaa !5
  %173 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %172) #9
  %174 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %173) #9
  %175 = add i64 %171, %174
  %176 = mul i64 %175, 11
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, i64 noundef %176, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %177 unwind label %231

177:                                              ; preds = %167
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef @.str.5, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %178 unwind label %235

178:                                              ; preds = %177
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef @.str.6)
          to label %179 unwind label %239

179:                                              ; preds = %178
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef @.str.109)
          to label %180 unwind label %243

180:                                              ; preds = %179
  %181 = load ptr, ptr %2, align 8, !tbaa !5
  %182 = getelementptr inbounds %class.ResolveState, ptr %181, i32 0, i32 10
  %183 = load i8, ptr %182, align 8, !tbaa !38, !range !39, !noundef !40
  %184 = trunc i8 %183 to i1
  %185 = zext i1 %184 to i64
  %186 = select i1 %184, i32 0, i32 2
  %187 = invoke noundef double @_ZN9NanoTrace5TraceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi11TraceDetail(ptr noundef nonnull align 8 dereferenceable(12) %166, ptr noundef nonnull align 8 dereferenceable(32) %29, i32 noundef 8388608, i32 noundef %186)
          to label %188 unwind label %247

188:                                              ; preds = %180
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #9
  br label %255

189:                                              ; preds = %119
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %5, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %6, align 4
  br label %261

193:                                              ; preds = %121
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %5, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %6, align 4
  br label %206

197:                                              ; preds = %123
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %5, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %6, align 4
  br label %205

201:                                              ; preds = %125, %124
  %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
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #9
  br label %205

205:                                              ; preds = %201, %197
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  br label %206

206:                                              ; preds = %205, %193
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #9
  %207 = load i1, ptr %25, align 1
  br i1 %207, label %208, label %209

208:                                              ; preds = %206
  call void @_ZdlPvm(ptr noundef %120, i64 noundef 40) #11
  br label %209

209:                                              ; preds = %208, %206
  br label %261

210:                                              ; preds = %128, %126
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %5, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #9
  br label %260

214:                                              ; preds = %129
  %215 = landingpad { ptr, i32 }
          cleanup
  %216 = extractvalue { ptr, i32 } %215, 0
  store ptr %216, ptr %5, align 8
  %217 = extractvalue { ptr, i32 } %215, 1
  store i32 %217, ptr %6, align 4
  br label %222

218:                                              ; preds = %139
  %219 = landingpad { ptr, i32 }
          cleanup
  %220 = extractvalue { ptr, i32 } %219, 0
  store ptr %220, ptr %5, align 8
  %221 = extractvalue { ptr, i32 } %219, 1
  store i32 %221, ptr %6, align 4
  call void @_ZNSt4pairISt10shared_ptrI7HtnRuleESt6vectorIS_IS0_I7HtnTermES5_ESaIS6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %27) #9
  br label %222

222:                                              ; preds = %218, %214
  call void @llvm.lifetime.end.p0(i64 40, ptr %27) #9
  br label %260

223:                                              ; preds = %142, %140
  %224 = landingpad { ptr, i32 }
          cleanup
  %225 = extractvalue { ptr, i32 } %224, 0
  store ptr %225, ptr %5, align 8
  %226 = extractvalue { ptr, i32 } %224, 1
  store i32 %226, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #9
  br label %260

227:                                              ; preds = %165, %161, %153, %148, %143
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %5, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %6, align 4
  br label %260

231:                                              ; preds = %167
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %5, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %6, align 4
  br label %254

235:                                              ; preds = %177
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %5, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %6, align 4
  br label %253

239:                                              ; preds = %178
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %5, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %6, align 4
  br label %252

243:                                              ; preds = %179
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %5, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %6, align 4
  br label %251

247:                                              ; preds = %180
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %5, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  br label %251

251:                                              ; preds = %247, %243
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  br label %252

252:                                              ; preds = %251, %239
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  br label %253

253:                                              ; preds = %252, %235
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #9
  br label %254

254:                                              ; preds = %253, %231
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #9
  br label %260

255:                                              ; preds = %188, %163, %150
  %256 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %257 = getelementptr inbounds %class.ResolveNode, ptr %256, i32 0, i32 2
  store i32 -1, ptr %257, align 8, !tbaa !42
  %258 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %259 = getelementptr inbounds %class.ResolveNode, ptr %258, i32 0, i32 0
  store i32 7, ptr %259, align 8, !tbaa !29
  call void @_ZNSt12__shared_ptrI7HtnRuleLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #9
  br label %262

260:                                              ; preds = %254, %227, %223, %222, %210
  call void @_ZNSt12__shared_ptrI7HtnRuleLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  br label %261

261:                                              ; preds = %260, %209, %189
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #9
  br label %273

262:                                              ; preds = %255, %112
  %263 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %264 = load ptr, ptr %2, align 8, !tbaa !5
  invoke void @_ZN11ResolveNode20PopStandaloneResolveEP12ResolveState(ptr noundef nonnull align 8 dereferenceable(144) %263, ptr noundef %264)
          to label %265 unwind label %266

265:                                              ; preds = %262
  br label %272

266:                                              ; preds = %270, %262
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %5, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %6, align 4
  br label %273

270:                                              ; preds = %39
  invoke void @_Z35failfast_uncaught_exception_handlerbPKcl(i1 noundef zeroext false, ptr noundef @.str.4, i64 noundef 1900)
          to label %271 unwind label %266

271:                                              ; preds = %270
  br label %272

272:                                              ; preds = %271, %265, %100
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %4) #9
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #9
  ret void

273:                                              ; preds = %266, %261, %115, %106
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  br label %274

274:                                              ; preds = %273, %50
  call void @llvm.lifetime.end.p0(i64 16, ptr %4) #9
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #9
  br label %275

275:                                              ; preds = %274
  %276 = load ptr, ptr %5, align 8
  %277 = load i32, ptr %6, align 4
  %278 = insertvalue { ptr, i32 } poison, ptr %276, 0
  %279 = insertvalue { ptr, i32 } %278, i32 %277, 1
  resume { ptr, i32 } %279
}

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

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

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

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

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

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

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

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

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

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

; 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: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK11ResolveNode9resolventEv(ptr noundef nonnull align 8 dereferenceable(144)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN9NanoTrace5TraceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi11TraceDetail(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, i32 noundef) #2 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: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnRuleES0_IS1_IS_I7HtnTermES5_ESaIS6_EEESaIS9_EEEaSEOSC_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

declare void @_ZN7HtnTerm15GetAllVariablesEPSt3setISt10shared_ptrIS_E15HtnTermComparerSaIS2_EE(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef) #8

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnRuleES0_IS1_IS2_I7HtnTermES6_ESaIS7_EEESaISA_EELN9__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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { builtin 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 = !{!30, !12, i64 32}


; 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::reverse_iterator" = type { %"class.__gnu_cxx::__normal_iterator" }
%"class.__gnu_cxx::__normal_iterator" = 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::__shared_count" = type { ptr }
%"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_ptr.12" = type { %"class.std::__shared_ptr.13" }
%"class.std::__shared_ptr.13" = type { ptr, %"class.std::__shared_count" }
%"class.__gnu_cxx::__normal_iterator.68" = type { ptr }
%"class.std::shared_ptr.140" = type { %"class.std::__shared_ptr.141" }
%"class.std::__shared_ptr.141" = type { ptr, %"class.std::__shared_count" }
%"class.std::allocator" = type { i8 }
%"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.std::shared_ptr.6" = type { %"class.std::__shared_ptr.7" }
%"class.std::__shared_ptr.7" = type { ptr, %"class.std::__shared_count" }
%"struct.std::pair.143" = type { %"class.std::shared_ptr.140", %"class.std::vector.20" }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = type { %"struct.std::_Vector_base<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>, std::allocator<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>, std::allocator<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>, std::allocator<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>, std::allocator<std::pair<std::shared_ptr<HtnTerm>, std::shared_ptr<HtnTerm>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::shared_ptr.0" = type { %"class.std::__shared_ptr.1" }
%"class.std::__shared_ptr.1" = 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.108 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [34 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare 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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16), ptr) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrI7HtnTermESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) 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 @_ZN11ResolveNode20PopStandaloneResolveEP12ResolveState(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11ResolveNode21PushStandaloneResolveEP12ResolveStateSt10shared_ptrISt3setIS2_I7HtnTermE15HtnTermComparerSaIS5_EEESt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPKS5_St6vectorIS5_S7_EEEESI_20ResolveContinuePoint(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2 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: 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 #7

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN15HtnGoalResolver9RuleFirstEP12ResolveState(ptr noundef %0) local_unnamed_addr #2 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::shared_ptr.12", align 8
  %5 = alloca %"class.__gnu_cxx::__normal_iterator.68", align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.68", align 8
  %7 = alloca %"class.std::shared_ptr.28", align 8
  %8 = alloca %"class.std::shared_ptr.12", align 8
  %9 = alloca %"class.std::reverse_iterator", align 8
  %10 = alloca %"class.std::reverse_iterator", align 8
  %11 = alloca %"class.std::shared_ptr.28", align 8
  %12 = alloca %"class.std::shared_ptr.25", align 8
  %13 = alloca %"class.std::shared_ptr.140", align 8
  %14 = alloca %"class.std::shared_ptr.28", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator", align 1
  %17 = alloca %"class.std::vector", align 8
  %18 = alloca %"class.std::shared_ptr.6", align 8
  %19 = alloca %"struct.std::pair.143", align 8
  %20 = alloca %"class.std::shared_ptr.0", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator", align 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #9
  %26 = getelementptr inbounds i8, ptr %0, i64 176
  %27 = tail call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  %28 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #9
  call void @_ZNSt10shared_ptrI11ResolveNodeEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %28) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #9
  %29 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  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) %29)
  %30 = getelementptr inbounds i8, ptr %0, i64 200
  %31 = getelementptr inbounds i8, ptr %0, i64 224
  %32 = load ptr, ptr %31, align 8, !tbaa !5
  %33 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  %34 = load i32, ptr %33, align 8, !tbaa !28
  switch i32 %34, label %168 [
    i32 0, label %35
    i32 1, label %65
  ]

35:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9
  %36 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #10
          to label %37 unwind label %50

37:                                               ; preds = %35
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %36, i8 0, i64 48, i1 false)
  call void @_ZNSt3setISt10shared_ptrI7HtnTermE15HtnTermComparerSaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %36) #9
  invoke void @_ZNSt10shared_ptrISt3setIS_I7HtnTermE15HtnTermComparerSaIS2_EEEC2IS5_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull %36)
          to label %38 unwind label %50

38:                                               ; preds = %37
  %39 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  %40 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK11ResolveNode9resolventEv(ptr noundef nonnull align 8 dereferenceable(144) %39)
  %41 = 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) %40) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #9
  %42 = call ptr @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #9
  store ptr %42, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #9
  %43 = call ptr @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #9
  store ptr %43, ptr %6, align 8
  %44 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrI7HtnTermESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  br i1 %44, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %55, %38
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  %45 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  call void @_ZNSt10shared_ptrISt3setIS_I7HtnTermE15HtnTermComparerSaIS2_EEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  %46 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %47 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %46)
  call void @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EE6rbeginEv(ptr dead_on_unwind nonnull writable sret(%"class.std::reverse_iterator") align 8 %9, ptr noundef nonnull align 8 dereferenceable(24) %47) #9
  %48 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #9
  %49 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7HtnTerm9argumentsEv(ptr noundef nonnull align 8 dereferenceable(72) %48)
  call void @_ZNKSt6vectorISt10shared_ptrI7HtnTermESaIS2_EE4rendEv(ptr dead_on_unwind nonnull writable sret(%"class.std::reverse_iterator") align 8 %10, ptr noundef nonnull align 8 dereferenceable(24) %49) #9
  invoke void @_ZN11ResolveNode21PushStandaloneResolveEP12ResolveStateSt10shared_ptrISt3setIS2_I7HtnTermE15HtnTermComparerSaIS5_EEESt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPKS5_St6vectorIS5_S7_EEEESI_20ResolveContinuePoint(ptr noundef nonnull align 8 dereferenceable(144) %45, ptr noundef %0, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %10, i32 noundef 1)
          to label %60 unwind label %61

50:                                               ; preds = %37, %35
  %51 = landingpad { ptr, i32 }
          cleanup
  br label %64

.lr.ph:                                           ; preds = %38, %55
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #9
  %52 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrI7HtnTermESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %52) #9
  %53 = call noundef ptr @_ZNKSt19__shared_ptr_accessI7HtnTermLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  %54 = call noundef ptr @_ZNKSt12__shared_ptrISt3setISt10shared_ptrI7HtnTermE15HtnTermComparerSaIS3_EELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  invoke void @_ZN7HtnTerm15GetAllVariablesEPSt3setISt10shared_ptrIS_E15HtnTermComparerSaIS2_EE(ptr noundef nonnull align 8 dereferenceable(72) %53, ptr noundef %54)
          to label %55 unwind label %58

55:                                               ; preds = %.lr.ph
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #9
  %56 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrI7HtnTermESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %57 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrI7HtnTermESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  br i1 %57, label %.lr.ph, label %._crit_edge

58:                                               ; preds = %.lr.ph
  %59 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  br label %63

60:                                               ; preds = %._crit_edge
  call void @_ZNSt12__shared_ptrISt3setISt10shared_ptrI7HtnTermE15HtnTermComparerSaIS3_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  call void @_ZNSt12__shared_ptrISt3setISt10shared_ptrI7HtnTermE15HtnTermComparerSaIS3_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  br label %169

61:                                               ; preds = %._crit_edge
  %62 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrISt3setISt10shared_ptrI7HtnTermE15HtnTermComparerSaIS3_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  br label %63

63:                                               ; preds = %61, %58
  %.pn46 = phi { ptr, i32 } [ %59, %58 ], [ %62, %61 ]
  call void @_ZNSt12__shared_ptrISt3setISt10shared_ptrI7HtnTermE15HtnTermComparerSaIS3_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  br label %64

64:                                               ; preds = %63, %50
  %.pn46.pn = phi { ptr, i32 } [ %.pn46, %63 ], [ %51, %50 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  br label %170

65:                                               ; preds = %1
  %66 = call noundef zeroext i1 @_ZSteqISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEEbRKS2_IT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr null) #9
  br i1 %66, label %67, label %72

67:                                               ; preds = %65
  call void @_ZNSt10shared_ptrI7HtnTermEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @_ZNSt10shared_ptrI11ResolveNodeEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  invoke void @_ZN12ResolveState13RecordFailureESt10shared_ptrI7HtnTermES0_I11ResolveNodeE(ptr noundef nonnull align 8 dereferenceable(244) %0, ptr noundef nonnull %11, ptr noundef nonnull %12)
          to label %68 unwind label %70

68:                                               ; preds = %67
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #9
  %69 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  call void @_ZNSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #9
  br label %164

70:                                               ; preds = %67
  %71 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #9
  br label %170

72:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #9
  %73 = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #10
          to label %74 unwind label %126

74:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.108, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %75 unwind label %.thread

75:                                               ; preds = %74
  invoke void @_ZN14HtnTermFactory14CreateConstantERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.28") align 8 %14, ptr noundef nonnull align 8 dereferenceable(33088) %32, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %76 unwind label %129

76:                                               ; preds = %75
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %17, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #9
  invoke void @_ZN7HtnRuleC2ESt10shared_ptrI7HtnTermESt6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(40) %73, ptr noundef nonnull %14, ptr noundef nonnull %17)
          to label %77 unwind label %131

77:                                               ; preds = %76
  invoke void @_ZNSt10shared_ptrI7HtnRuleEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull %73)
          to label %78 unwind label %131

78:                                               ; preds = %77
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #9
  %79 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #10
          to label %80 unwind label %135

80:                                               ; preds = %78
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %79, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnRuleES_IS0_IS1_I7HtnTermES5_ESaIS6_EEESaIS9_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #9
  invoke void @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnRuleES0_IS1_IS_I7HtnTermES5_ESaIS6_EEESaIS9_EEEC2ISB_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull %79)
          to label %81 unwind label %135

81:                                               ; preds = %80
  %82 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  %83 = getelementptr inbounds i8, ptr %82, i64 40
  %84 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnRuleES0_IS1_IS_I7HtnTermES5_ESaIS6_EEESaIS9_EEEaSEOSC_(ptr noundef nonnull align 8 dereferenceable(16) %83, ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnRuleES0_IS1_IS2_I7HtnTermES6_ESaIS7_EEESaISA_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #9
  %85 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  %86 = getelementptr inbounds i8, ptr %85, i64 40
  %87 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt4pairISt10shared_ptrI7HtnRuleES0_IS1_IS2_I7HtnTermES6_ESaIS7_EEESaISA_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %86) #9
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %19) #9
  %88 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %30) #9
  %89 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef 0) #9
  invoke void @_ZNSt4pairISt10shared_ptrI7HtnRuleESt6vectorIS_IS0_I7HtnTermES5_ESaIS6_EEEC2IRS2_RS8_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISE_SF_EEEbE4typeELb1EEEOSE_OSF_(ptr noundef nonnull align 8 dereferenceable(40) %19, ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(24) %89)
          to label %90 unwind label %137

90:                                               ; preds = %81
  invoke void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnRuleES_IS0_IS1_I7HtnTermES5_ESaIS6_EEESaIS9_EE9push_backEOS9_(ptr noundef nonnull align 8 dereferenceable(24) %87, ptr noundef nonnull align 8 dereferenceable(40) %19)
          to label %91 unwind label %139

91:                                               ; preds = %90
  call void @_ZNSt4pairISt10shared_ptrI7HtnRuleESt6vectorIS_IS0_I7HtnTermES5_ESaIS6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %19) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #9
  %92 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #10
          to label %93 unwind label %142

93:                                               ; preds = %91
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %92, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt4pairISt10shared_ptrI7HtnTermES3_ESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #9
  invoke void @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEC2IS6_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull %92)
          to label %94 unwind label %142

94:                                               ; preds = %93
  %95 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  %96 = getelementptr inbounds i8, ptr %95, i64 56
  %97 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnTermES3_ESaIS4_EEEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(16) %96, ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  call void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #9
  %98 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
  %99 = call noundef i64 @_ZN9NanoTrace16allowedTraceTypeEv(ptr noundef nonnull align 8 dereferenceable(12) %98)
  %100 = and i64 %99, 8388608
  %.not = icmp eq i64 %100, 0
  br i1 %.not, label %158, label %101

101:                                              ; preds = %94
  %102 = getelementptr inbounds i8, ptr %0, i64 96
  %103 = load i8, ptr %102, align 8, !tbaa !37, !range !38, !noundef !39
  %104 = trunc nuw i8 %103 to i1
  %105 = select i1 %104, i32 0, i32 2
  %106 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
  %107 = call noundef i32 @_ZN9NanoTrace11detailLevelEv(ptr noundef nonnull align 8 dereferenceable(12) %106)
  %.not38 = icmp sgt i32 %105, %107
  br i1 %.not38, label %158, label %108

108:                                              ; preds = %101
  %109 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN9NanoTrace6GlobalEv()
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #9
  %110 = getelementptr inbounds i8, ptr %0, i64 160
  %111 = load i32, ptr %110, align 8, !tbaa !40
  %112 = sext i32 %111 to i64
  %113 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt6vectorISt10shared_ptrI11ResolveNodeESaIS3_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  %114 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrI11ResolveNodeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %113) #9
  %115 = add i64 %114, %112
  %116 = mul i64 %115, 11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, i64 noundef %116, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %117 unwind label %144

117:                                              ; preds = %108
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull @.str.5, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %118 unwind label %146

118:                                              ; preds = %117
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull @.str.6)
          to label %119 unwind label %148

119:                                              ; preds = %118
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @.str.109)
          to label %120 unwind label %150

120:                                              ; preds = %119
  %121 = load i8, ptr %102, align 8, !tbaa !37, !range !38, !noundef !39
  %122 = trunc nuw i8 %121 to i1
  %123 = select i1 %122, i32 0, i32 2
  %124 = invoke noundef double @_ZN9NanoTrace5TraceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi11TraceDetail(ptr noundef nonnull align 8 dereferenceable(12) %109, ptr noundef nonnull align 8 dereferenceable(32) %21, i32 noundef 8388608, i32 noundef %123)
          to label %125 unwind label %152

125:                                              ; preds = %120
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  br label %158

126:                                              ; preds = %72
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %163

.thread:                                          ; preds = %74
  %128 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  br label %134

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

131:                                              ; preds = %77, %76
  %.0 = phi i1 [ false, %77 ], [ true, %76 ]
  %132 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10shared_ptrI7HtnTermESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #9
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  br label %133

133:                                              ; preds = %129, %131
  %.pn = phi { ptr, i32 } [ %132, %131 ], [ %130, %129 ]
  %.1 = phi i1 [ %.0, %131 ], [ true, %129 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  br i1 %.1, label %134, label %163

134:                                              ; preds = %.thread, %133
  %.pn.pn53 = phi { ptr, i32 } [ %128, %.thread ], [ %.pn, %133 ]
  call void @_ZdlPvm(ptr noundef nonnull %73, i64 noundef 40) #11
  br label %163

135:                                              ; preds = %80, %78
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #9
  br label %162

137:                                              ; preds = %81
  %138 = landingpad { ptr, i32 }
          cleanup
  br label %141

139:                                              ; preds = %90
  %140 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairISt10shared_ptrI7HtnRuleESt6vectorIS_IS0_I7HtnTermES5_ESaIS6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #9
  br label %141

141:                                              ; preds = %139, %137
  %.pn36 = phi { ptr, i32 } [ %140, %139 ], [ %138, %137 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %19) #9
  br label %162

142:                                              ; preds = %93, %91
  %143 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #9
  br label %162

144:                                              ; preds = %108
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %157

146:                                              ; preds = %117
  %147 = landingpad { ptr, i32 }
          cleanup
  br label %156

148:                                              ; preds = %118
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %155

150:                                              ; preds = %119
  %151 = landingpad { ptr, i32 }
          cleanup
  br label %154

152:                                              ; preds = %120
  %153 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  br label %154

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

155:                                              ; preds = %154, %148
  %.pn39.pn = phi { ptr, i32 } [ %.pn39, %154 ], [ %149, %148 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  br label %156

156:                                              ; preds = %155, %146
  %.pn39.pn.pn = phi { ptr, i32 } [ %.pn39.pn, %155 ], [ %147, %146 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  br label %157

157:                                              ; preds = %156, %144
  %.pn39.pn.pn.pn = phi { ptr, i32 } [ %.pn39.pn.pn, %156 ], [ %145, %144 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  br label %162

158:                                              ; preds = %125, %101, %94
  %159 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  %160 = getelementptr inbounds i8, ptr %159, i64 32
  store i32 -1, ptr %160, align 8, !tbaa !41
  %161 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  store i32 7, ptr %161, align 8, !tbaa !28
  call void @_ZNSt12__shared_ptrI7HtnRuleLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #9
  br label %164

162:                                              ; preds = %157, %142, %141, %135
  %.pn39.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn39.pn.pn.pn, %157 ], [ %143, %142 ], [ %.pn36, %141 ], [ %136, %135 ]
  call void @_ZNSt12__shared_ptrI7HtnRuleLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #9
  br label %163

163:                                              ; preds = %133, %134, %162, %126
  %.pn39.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn39.pn.pn.pn.pn, %162 ], [ %.pn.pn53, %134 ], [ %.pn, %133 ], [ %127, %126 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #9
  br label %170

164:                                              ; preds = %158, %68
  %165 = call noundef ptr @_ZNKSt19__shared_ptr_accessI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #9
  invoke void @_ZN11ResolveNode20PopStandaloneResolveEP12ResolveState(ptr noundef nonnull align 8 dereferenceable(144) %165, ptr noundef nonnull %0)
          to label %169 unwind label %166

166:                                              ; preds = %168, %164
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %170

168:                                              ; preds = %1
  invoke void @_Z35failfast_uncaught_exception_handlerbPKcl(i1 noundef zeroext false, ptr noundef nonnull @.str.4, i64 noundef 1900)
          to label %169 unwind label %166

169:                                              ; preds = %168, %164, %60
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #9
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #9
  ret void

170:                                              ; preds = %166, %163, %70, %64
  %.pn49 = phi { ptr, i32 } [ %167, %166 ], [ %71, %70 ], [ %.pn39.pn.pn.pn.pn.pn, %163 ], [ %.pn46.pn, %64 ]
  call void @_ZNSt12__shared_ptrI7HtnTermLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #9
  call void @_ZNSt12__shared_ptrI11ResolveNodeLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #9
  resume { ptr, i32 } %.pn49
}

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN9NanoTrace5TraceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi11TraceDetail(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, i32 noundef) local_unnamed_addr #2 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: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorISt4pairIS_I7HtnRuleES0_IS1_IS_I7HtnTermES5_ESaIS6_EEESaIS9_EEEaSEOSC_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

declare void @_ZN7HtnTerm15GetAllVariablesEPSt3setISt10shared_ptrIS_E15HtnTermComparerSaIS2_EE(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef) local_unnamed_addr #8

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt12__shared_ptrISt6vectorISt4pairISt10shared_ptrI7HtnRuleES0_IS1_IS2_I7HtnTermES6_ESaIS7_EEESaISA_EELN9__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 uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { builtin 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 = !{!29, !10, i64 32}


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