; LLVM IR from thepowersgang/mrustc :: src/resolve (index)

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

%struct.Span = type { ptr }
%"class.std::set" = type { %"class.std::_Rb_tree.578" }
%"class.std::_Rb_tree.578" = type { %"struct.std::_Rb_tree<const AST::Module *, const AST::Module *, std::_Identity<const AST::Module *>, std::less<const AST::Module *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const AST::Module *, const AST::Module *, std::_Identity<const AST::Module *>, std::less<const AST::Module *>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.577 = type { ptr, ptr }
%"struct.std::pair.583" = type <{ %"struct.std::_Rb_tree_const_iterator", i8, [7 x i8] }>
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"struct.std::__detail::_Node_const_iterator.586" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"class.AST::Path" = type { ptr, %"class.AST::Path::Class", %"struct.AST::Path::Bindings" }
%"class.AST::Path::Class" = type { i32, %"union.AST::Path::Class::DataUnion" }
%"union.AST::Path::Class::DataUnion" = type { %"struct.AST::Path::Class::Data_UFCS" }
%"struct.AST::Path::Class::Data_UFCS" = type { %"class.std::unique_ptr.45", %"class.std::unique_ptr.53", %"class.std::vector.40" }
%"class.std::unique_ptr.45" = type { %"struct.std::__uniq_ptr_data.46" }
%"struct.std::__uniq_ptr_data.46" = type { %"class.std::__uniq_ptr_impl.47" }
%"class.std::__uniq_ptr_impl.47" = type { %"class.std::tuple.48" }
%"class.std::tuple.48" = type { %"struct.std::_Tuple_impl.49" }
%"struct.std::_Tuple_impl.49" = type { %"struct.std::_Head_base.52" }
%"struct.std::_Head_base.52" = type { ptr }
%"class.std::unique_ptr.53" = type { %"struct.std::__uniq_ptr_data.54" }
%"struct.std::__uniq_ptr_data.54" = type { %"class.std::__uniq_ptr_impl.55" }
%"class.std::__uniq_ptr_impl.55" = type { %"class.std::tuple.56" }
%"class.std::tuple.56" = type { %"struct.std::_Tuple_impl.57" }
%"struct.std::_Tuple_impl.57" = type { %"struct.std::_Head_base.60" }
%"struct.std::_Head_base.60" = type { ptr }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Path::Bindings" = type { %"struct.AST::PathBinding", %"struct.AST::PathBinding.61", %"struct.AST::PathBinding.62" }
%"struct.AST::PathBinding" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Value" }
%"struct.AST::AbsolutePath" = type { %class.RcString, %"class.std::vector" }
%class.RcString = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::PathBinding_Value" = type { i32, %"union.AST::PathBinding_Value::DataUnion" }
%"union.AST::PathBinding_Value::DataUnion" = type { %"struct.AST::PathBinding_Value::Data_EnumVar" }
%"struct.AST::PathBinding_Value::Data_EnumVar" = type { ptr, i32, ptr }
%"struct.AST::PathBinding.61" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Type" }
%"class.AST::PathBinding_Type" = type { i32, %"union.AST::PathBinding_Type::DataUnion" }
%"union.AST::PathBinding_Type::DataUnion" = type { %"struct.AST::PathBinding_Type::Data_Module" }
%"struct.AST::PathBinding_Type::Data_Module" = type { ptr, %"struct.AST::PathBinding_Type::(anonymous struct)::Hir" }
%"struct.AST::PathBinding_Type::(anonymous struct)::Hir" = type { ptr, ptr }
%"struct.AST::PathBinding.62" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Macro" }
%"class.AST::PathBinding_Macro" = type { i32, %"union.AST::PathBinding_Macro::DataUnion" }
%"union.AST::PathBinding_Macro::DataUnion" = type { %"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" }
%"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" = type { ptr, %class.RcString }
%"class.__gnu_cxx::__normal_iterator.589" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.590" = type { ptr }
%"class.AST::Module" = type { %"struct.AST::AbsolutePath", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.10", %"struct.AST::Module::FileInfo", i8, i8, %"class.std::unordered_map", %"class.std::unordered_map", %"class.std::unordered_map", %"class.std::unordered_map", %"class.std::vector.23", %"class.std::vector.28", %"class.std::vector.33" }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<std::unique_ptr<AST::Named<AST::Item>>, std::allocator<std::unique_ptr<AST::Named<AST::Item>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<AST::Named<AST::Item>>, std::allocator<std::unique_ptr<AST::Named<AST::Item>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<AST::Named<AST::Item>>, std::allocator<std::unique_ptr<AST::Named<AST::Item>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<AST::Named<AST::Item>>, std::allocator<std::unique_ptr<AST::Named<AST::Item>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<std::shared_ptr<AST::Module>, std::allocator<std::shared_ptr<AST::Module>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<AST::Module>, std::allocator<std::shared_ptr<AST::Module>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<AST::Module>, std::allocator<std::shared_ptr<AST::Module>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<AST::Module>, std::allocator<std::shared_ptr<AST::Module>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Module::FileInfo" = type { i8, i8, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"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::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<AST::AbsolutePath, std::allocator<AST::AbsolutePath>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::AbsolutePath, std::allocator<AST::AbsolutePath>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::AbsolutePath, std::allocator<AST::AbsolutePath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::AbsolutePath, std::allocator<AST::AbsolutePath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.28" = type { %"struct.std::_Vector_base.29" }
%"struct.std::_Vector_base.29" = type { %"struct.std::_Vector_base<AST::Module::MacroImport, std::allocator<AST::Module::MacroImport>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Module::MacroImport, std::allocator<AST::Module::MacroImport>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Module::MacroImport, std::allocator<AST::Module::MacroImport>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Module::MacroImport, std::allocator<AST::Module::MacroImport>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.33" = type { %"struct.std::_Vector_base.34" }
%"struct.std::_Vector_base.34" = type { %"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.587" = type { %class.RcString, %"struct.AST::Module::IndexEnt" }
%"struct.AST::Module::IndexEnt" = type { i8, [7 x i8], %"class.AST::Visibility", %"class.AST::Path" }
%"class.AST::Visibility" = type <{ %"class.std::shared_ptr", %"class.std::shared_ptr.65", 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_count" = type { ptr }
%"class.std::shared_ptr.65" = type { %"class.std::__shared_ptr.66" }
%"class.std::__shared_ptr.66" = type { ptr, %"class.std::__shared_count" }
%"struct.AST::Named" = type { %struct.Span, %"class.AST::AttributeList", %"class.AST::Visibility", %class.RcString, %"class.AST::Item" }
%"class.AST::AttributeList" = type { %"class.std::vector.81" }
%"class.std::vector.81" = type { %"struct.std::_Vector_base.82" }
%"struct.std::_Vector_base.82" = type { %"struct.std::_Vector_base<AST::Attribute, std::allocator<AST::Attribute>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Attribute, std::allocator<AST::Attribute>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Attribute, std::allocator<AST::Attribute>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Attribute, std::allocator<AST::Attribute>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::Item" = type { i32, %"union.AST::Item::DataUnion" }
%"union.AST::Item::DataUnion" = type { %"class.AST::Module" }
%"struct.AST::UseItem" = type { %struct.Span, %"class.std::vector.91" }
%"class.std::vector.91" = type { %"struct.std::_Vector_base.92" }
%"struct.std::_Vector_base.92" = type { %"struct.std::_Vector_base<AST::UseItem::Ent, std::allocator<AST::UseItem::Ent>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::UseItem::Ent, std::allocator<AST::UseItem::Ent>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::UseItem::Ent, std::allocator<AST::UseItem::Ent>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::UseItem::Ent, std::allocator<AST::UseItem::Ent>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::UseItem::Ent" = type { %struct.Span, %"class.AST::Path", %class.RcString }

@__dso_handle = external hidden global i8
@.str.4 = external hidden unnamed_addr constant [1 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp = external hidden global %struct.Span, align 8
@_ZGVZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp = external hidden global i64, align 8
@__func__._Z37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityE = external hidden unnamed_addr constant [38 x i8], align 1
@_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack = external hidden global %"class.std::set", align 8
@_ZGVZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack = external hidden global i64, align 8
@.str.29 = external hidden unnamed_addr constant [20 x i8], align 1

; Function Attrs: nounwind
declare i32 @__cxa_atexit(ptr, ptr, ptr) #0

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z9_add_itemRK4SpanRN3AST6ModuleE9IndexNameRK8RcStringRKNS2_10VisibilityENS2_4PathEb(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(480), i32 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(36), ptr noundef, i1 noundef zeroext) #2

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: nounwind
declare void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480)) #4 align 2

; Function Attrs: nounwind
declare void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240)) unnamed_addr #5

declare noundef zeroext i1 @_Z13debug_enabledv() #6

declare noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef, ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3decRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #1

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #1

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #7

declare void @_ZN3AST4PathC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(240), ptr noundef nonnull align 8 dereferenceable(240)) unnamed_addr #6

declare void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef) unnamed_addr #6

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN3AST4Item6as_UseEv(ptr noundef nonnull align 8 dereferenceable(488)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Item6is_UseEv(ptr noundef nonnull align 8 dereferenceable(488)) #4 align 2

; Function Attrs: nounwind
declare void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #5

; Function Attrs: mustprogress uwtable
define dso_local void @_Z37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(1112) %0, ptr noundef nonnull align 8 dereferenceable(480) %1, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(36) %3) #2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %class.TraceLog, align 8
  %12 = alloca %"class.std::function", align 8
  %13 = alloca %class.anon.577, align 8
  %14 = alloca %"struct.std::pair.583", align 8
  %15 = alloca ptr, align 8
  %16 = alloca { ptr, i8 }, align 8
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca %"struct.std::__detail::_Node_const_iterator.586", align 8
  %20 = alloca %"struct.std::__detail::_Node_const_iterator.586", align 8
  %21 = alloca ptr, align 8
  %22 = alloca %"class.AST::Path", align 8
  %23 = alloca ptr, align 8
  %24 = alloca %"struct.std::__detail::_Node_const_iterator.586", align 8
  %25 = alloca %"struct.std::__detail::_Node_const_iterator.586", align 8
  %26 = alloca ptr, align 8
  %27 = alloca %"class.AST::Path", align 8
  %28 = alloca ptr, align 8
  %29 = alloca %"struct.std::__detail::_Node_const_iterator.586", align 8
  %30 = alloca %"struct.std::__detail::_Node_const_iterator.586", align 8
  %31 = alloca ptr, align 8
  %32 = alloca %"class.AST::Path", align 8
  %33 = alloca ptr, align 8
  %34 = alloca %"struct.std::__detail::_Node_const_iterator.586", align 8
  %35 = alloca %"struct.std::__detail::_Node_const_iterator.586", align 8
  %36 = alloca ptr, align 8
  %37 = alloca %"class.AST::Path", align 8
  %38 = alloca ptr, align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca %"class.__gnu_cxx::__normal_iterator.590", align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.590", align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  %47 = load atomic i8, ptr @_ZGVZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp acquire, align 8
  %48 = icmp eq i8 %47, 0
  br i1 %48, label %49, label %55, !prof !9

49:                                               ; preds = %4
  %50 = call i32 @__cxa_guard_acquire(ptr @_ZGVZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp) #0
  %51 = icmp ne i32 %50, 0
  br i1 %51, label %52, label %55

52:                                               ; preds = %49
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp)
          to label %53 unwind label %93

53:                                               ; preds = %52
  %54 = call i32 @__cxa_atexit(ptr @_ZN4SpanD1Ev, ptr @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp) #0
  br label %55

55:                                               ; preds = %53, %49, %4
  call void @llvm.lifetime.start.p0(i64 40, ptr %11) #0
  %56 = call noundef zeroext i1 @_Z13debug_enabledv()
  %57 = zext i1 %56 to i64
  %58 = select i1 %56, ptr @__func__._Z37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityE, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #0
  %59 = getelementptr inbounds %class.anon.577, ptr %13, i32 0, i32 0
  %60 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %60, ptr %59, align 8, !tbaa !5
  %61 = getelementptr inbounds %class.anon.577, ptr %13, i32 0, i32 1
  %62 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %62, ptr %61, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS4_6ModuleERKS7_RKNS4_10VisibilityEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(16) %13) #0
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %11, ptr noundef %58, ptr noundef %12)
          to label %63 unwind label %97

63:                                               ; preds = %55
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #0
  %64 = load atomic i8, ptr @_ZGVZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack acquire, align 8
  %65 = icmp eq i8 %64, 0
  br i1 %65, label %66, label %71, !prof !9

66:                                               ; preds = %63
  %67 = call i32 @__cxa_guard_acquire(ptr @_ZGVZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack) #0
  %68 = icmp ne i32 %67, 0
  br i1 %68, label %69, label %71

69:                                               ; preds = %66
  call void @_ZNSt3setIPKN3AST6ModuleESt4lessIS3_ESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack) #0
  %70 = call i32 @__cxa_atexit(ptr @_ZNSt3setIPKN3AST6ModuleESt4lessIS3_ESaIS3_EED2Ev, ptr @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack) #0
  br label %71

71:                                               ; preds = %69, %66, %63
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #0
  %72 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %72, ptr %15, align 8, !tbaa !5
  %73 = invoke { ptr, i8 } @_ZNSt3setIPKN3AST6ModuleESt4lessIS3_ESaIS3_EE6insertEOS3_(ptr noundef nonnull align 8 dereferenceable(48) @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %74 unwind label %101

74:                                               ; preds = %71
  store { ptr, i8 } %73, ptr %16, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %14, ptr align 8 %16, i64 9, i1 false)
  %75 = getelementptr inbounds %"struct.std::pair.583", ptr %14, i32 0, i32 1
  %76 = load i8, ptr %75, align 8, !tbaa !10, !range !14, !noundef !15
  %77 = trunc i8 %76 to i1
  %78 = xor i1 %77, true
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #0
  br i1 %78, label %79, label %112

79:                                               ; preds = %74
  br label %80

80:                                               ; preds = %79
  %81 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %82 unwind label %105

82:                                               ; preds = %80
  br i1 %81, label %83, label %109

83:                                               ; preds = %82
  %84 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !16
  %85 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %84, ptr noundef @__func__._Z37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityE)
          to label %86 unwind label %105

86:                                               ; preds = %83
  %87 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef @.str.29)
          to label %88 unwind label %105

88:                                               ; preds = %86
  %89 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef @_ZSt3decRSt8ios_base)
          to label %90 unwind label %105

90:                                               ; preds = %88
  %91 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %92 unwind label %105

92:                                               ; preds = %90
  br label %109

93:                                               ; preds = %52
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %9, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %10, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp) #0
  br label %400

97:                                               ; preds = %55
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %9, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #0
  br label %399

101:                                              ; preds = %71
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %9, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #0
  br label %398

105:                                              ; preds = %90, %88, %86, %83, %80
  %106 = landingpad { ptr, i32 }
          cleanup
  %107 = extractvalue { ptr, i32 } %106, 0
  store ptr %107, ptr %9, align 8
  %108 = extractvalue { ptr, i32 } %106, 1
  store i32 %108, ptr %10, align 4
  br label %398

109:                                              ; preds = %92, %82
  br label %110

110:                                              ; preds = %109
  br label %111

111:                                              ; preds = %110
  store i32 1, ptr %17, align 4
  br label %391

112:                                              ; preds = %74
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #0
  %113 = load ptr, ptr %7, align 8, !tbaa !5
  %114 = getelementptr inbounds %"class.AST::Module", ptr %113, i32 0, i32 7
  store ptr %114, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #0
  %115 = load ptr, ptr %18, align 8, !tbaa !5
  %116 = call ptr @_ZNKSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %115) #0
  %117 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.586", ptr %19, i32 0, i32 0
  %118 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %117, i32 0, i32 0
  store ptr %116, ptr %118, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #0
  %119 = load ptr, ptr %18, align 8, !tbaa !5
  %120 = call ptr @_ZNKSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %119) #0
  %121 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.586", ptr %20, i32 0, i32 0
  %122 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %121, i32 0, i32 0
  store ptr %120, ptr %122, align 8
  br label %123

123:                                              ; preds = %155, %112
  %124 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringN3AST6Module8IndexEntEELb0EEESA_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #0
  br i1 %124, label %126, label %125

125:                                              ; preds = %123
  store i32 4, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #0
  br label %158

126:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #0
  %127 = call noundef nonnull align 8 dereferenceable(296) ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3AST6Module8IndexEntEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #0
  store ptr %127, ptr %21, align 8, !tbaa !5
  %128 = load ptr, ptr %21, align 8, !tbaa !5
  %129 = getelementptr inbounds %"struct.std::pair.587", ptr %128, i32 0, i32 1
  %130 = getelementptr inbounds %"struct.AST::Module::IndexEnt", ptr %129, i32 0, i32 2
  %131 = load ptr, ptr %6, align 8, !tbaa !5
  %132 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %131)
          to label %133 unwind label %146

133:                                              ; preds = %126
  %134 = invoke noundef zeroext i1 @_ZNK3AST10Visibility10is_visibleERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(36) %130, ptr noundef nonnull align 8 dereferenceable(32) %132)
          to label %135 unwind label %146

135:                                              ; preds = %133
  br i1 %134, label %136, label %154

136:                                              ; preds = %135
  %137 = load ptr, ptr %6, align 8, !tbaa !5
  %138 = load ptr, ptr %21, align 8, !tbaa !5
  %139 = getelementptr inbounds %"struct.std::pair.587", ptr %138, i32 0, i32 0
  %140 = load ptr, ptr %8, align 8, !tbaa !5
  %141 = load ptr, ptr %21, align 8, !tbaa !5
  %142 = getelementptr inbounds %"struct.std::pair.587", ptr %141, i32 0, i32 1
  %143 = getelementptr inbounds %"struct.AST::Module::IndexEnt", ptr %142, i32 0, i32 3
  invoke void @_ZN3AST4PathC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %22, ptr noundef nonnull align 8 dereferenceable(240) %143)
          to label %144 unwind label %146

144:                                              ; preds = %136
  invoke void @_Z9_add_itemRK4SpanRN3AST6ModuleE9IndexNameRK8RcStringRKNS2_10VisibilityENS2_4PathEb(ptr noundef nonnull align 8 dereferenceable(8) @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp, ptr noundef nonnull align 8 dereferenceable(480) %137, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef nonnull align 8 dereferenceable(36) %140, ptr noundef %22, i1 noundef zeroext false)
          to label %145 unwind label %150

145:                                              ; preds = %144
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %22) #0
  br label %154

146:                                              ; preds = %136, %133, %126
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %9, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %10, align 4
  br label %157

150:                                              ; preds = %144
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %9, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %10, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %22) #0
  br label %157

154:                                              ; preds = %145, %135
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #0
  br label %155

155:                                              ; preds = %154
  %156 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3AST6Module8IndexEntEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #0
  br label %123

157:                                              ; preds = %150, %146
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #0
  br label %398

158:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #0
  %159 = load ptr, ptr %7, align 8, !tbaa !5
  %160 = getelementptr inbounds %"class.AST::Module", ptr %159, i32 0, i32 8
  store ptr %160, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #0
  %161 = load ptr, ptr %23, align 8, !tbaa !5
  %162 = call ptr @_ZNKSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %161) #0
  %163 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.586", ptr %24, i32 0, i32 0
  %164 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %163, i32 0, i32 0
  store ptr %162, ptr %164, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #0
  %165 = load ptr, ptr %23, align 8, !tbaa !5
  %166 = call ptr @_ZNKSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %165) #0
  %167 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.586", ptr %25, i32 0, i32 0
  %168 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %167, i32 0, i32 0
  store ptr %166, ptr %168, align 8
  br label %169

169:                                              ; preds = %201, %158
  %170 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringN3AST6Module8IndexEntEELb0EEESA_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #0
  br i1 %170, label %172, label %171

171:                                              ; preds = %169
  store i32 6, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #0
  br label %204

172:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #0
  %173 = call noundef nonnull align 8 dereferenceable(296) ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3AST6Module8IndexEntEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #0
  store ptr %173, ptr %26, align 8, !tbaa !5
  %174 = load ptr, ptr %26, align 8, !tbaa !5
  %175 = getelementptr inbounds %"struct.std::pair.587", ptr %174, i32 0, i32 1
  %176 = getelementptr inbounds %"struct.AST::Module::IndexEnt", ptr %175, i32 0, i32 2
  %177 = load ptr, ptr %6, align 8, !tbaa !5
  %178 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %177)
          to label %179 unwind label %192

179:                                              ; preds = %172
  %180 = invoke noundef zeroext i1 @_ZNK3AST10Visibility10is_visibleERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(36) %176, ptr noundef nonnull align 8 dereferenceable(32) %178)
          to label %181 unwind label %192

181:                                              ; preds = %179
  br i1 %180, label %182, label %200

182:                                              ; preds = %181
  %183 = load ptr, ptr %6, align 8, !tbaa !5
  %184 = load ptr, ptr %26, align 8, !tbaa !5
  %185 = getelementptr inbounds %"struct.std::pair.587", ptr %184, i32 0, i32 0
  %186 = load ptr, ptr %8, align 8, !tbaa !5
  %187 = load ptr, ptr %26, align 8, !tbaa !5
  %188 = getelementptr inbounds %"struct.std::pair.587", ptr %187, i32 0, i32 1
  %189 = getelementptr inbounds %"struct.AST::Module::IndexEnt", ptr %188, i32 0, i32 3
  invoke void @_ZN3AST4PathC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %27, ptr noundef nonnull align 8 dereferenceable(240) %189)
          to label %190 unwind label %192

190:                                              ; preds = %182
  invoke void @_Z9_add_itemRK4SpanRN3AST6ModuleE9IndexNameRK8RcStringRKNS2_10VisibilityENS2_4PathEb(ptr noundef nonnull align 8 dereferenceable(8) @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp, ptr noundef nonnull align 8 dereferenceable(480) %183, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(8) %185, ptr noundef nonnull align 8 dereferenceable(36) %186, ptr noundef %27, i1 noundef zeroext false)
          to label %191 unwind label %196

191:                                              ; preds = %190
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %27) #0
  br label %200

192:                                              ; preds = %182, %179, %172
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %9, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %10, align 4
  br label %203

196:                                              ; preds = %190
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %9, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %10, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %27) #0
  br label %203

200:                                              ; preds = %191, %181
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #0
  br label %201

201:                                              ; preds = %200
  %202 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3AST6Module8IndexEntEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #0
  br label %169

203:                                              ; preds = %196, %192
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #0
  br label %398

204:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #0
  %205 = load ptr, ptr %7, align 8, !tbaa !5
  %206 = getelementptr inbounds %"class.AST::Module", ptr %205, i32 0, i32 9
  store ptr %206, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #0
  %207 = load ptr, ptr %28, align 8, !tbaa !5
  %208 = call ptr @_ZNKSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %207) #0
  %209 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.586", ptr %29, i32 0, i32 0
  %210 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %209, i32 0, i32 0
  store ptr %208, ptr %210, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #0
  %211 = load ptr, ptr %28, align 8, !tbaa !5
  %212 = call ptr @_ZNKSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %211) #0
  %213 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.586", ptr %30, i32 0, i32 0
  %214 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %213, i32 0, i32 0
  store ptr %212, ptr %214, align 8
  br label %215

215:                                              ; preds = %247, %204
  %216 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringN3AST6Module8IndexEntEELb0EEESA_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #0
  br i1 %216, label %218, label %217

217:                                              ; preds = %215
  store i32 8, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #0
  br label %250

218:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #0
  %219 = call noundef nonnull align 8 dereferenceable(296) ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3AST6Module8IndexEntEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #0
  store ptr %219, ptr %31, align 8, !tbaa !5
  %220 = load ptr, ptr %31, align 8, !tbaa !5
  %221 = getelementptr inbounds %"struct.std::pair.587", ptr %220, i32 0, i32 1
  %222 = getelementptr inbounds %"struct.AST::Module::IndexEnt", ptr %221, i32 0, i32 2
  %223 = load ptr, ptr %6, align 8, !tbaa !5
  %224 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %223)
          to label %225 unwind label %238

225:                                              ; preds = %218
  %226 = invoke noundef zeroext i1 @_ZNK3AST10Visibility10is_visibleERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(36) %222, ptr noundef nonnull align 8 dereferenceable(32) %224)
          to label %227 unwind label %238

227:                                              ; preds = %225
  br i1 %226, label %228, label %246

228:                                              ; preds = %227
  %229 = load ptr, ptr %6, align 8, !tbaa !5
  %230 = load ptr, ptr %31, align 8, !tbaa !5
  %231 = getelementptr inbounds %"struct.std::pair.587", ptr %230, i32 0, i32 0
  %232 = load ptr, ptr %8, align 8, !tbaa !5
  %233 = load ptr, ptr %31, align 8, !tbaa !5
  %234 = getelementptr inbounds %"struct.std::pair.587", ptr %233, i32 0, i32 1
  %235 = getelementptr inbounds %"struct.AST::Module::IndexEnt", ptr %234, i32 0, i32 3
  invoke void @_ZN3AST4PathC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %32, ptr noundef nonnull align 8 dereferenceable(240) %235)
          to label %236 unwind label %238

236:                                              ; preds = %228
  invoke void @_Z9_add_itemRK4SpanRN3AST6ModuleE9IndexNameRK8RcStringRKNS2_10VisibilityENS2_4PathEb(ptr noundef nonnull align 8 dereferenceable(8) @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp, ptr noundef nonnull align 8 dereferenceable(480) %229, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(8) %231, ptr noundef nonnull align 8 dereferenceable(36) %232, ptr noundef %32, i1 noundef zeroext false)
          to label %237 unwind label %242

237:                                              ; preds = %236
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %32) #0
  br label %246

238:                                              ; preds = %228, %225, %218
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %9, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %10, align 4
  br label %249

242:                                              ; preds = %236
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %9, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %10, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %32) #0
  br label %249

246:                                              ; preds = %237, %227
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #0
  br label %247

247:                                              ; preds = %246
  %248 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3AST6Module8IndexEntEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #0
  br label %215

249:                                              ; preds = %242, %238
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #0
  br label %398

250:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #0
  %251 = load ptr, ptr %7, align 8, !tbaa !5
  %252 = getelementptr inbounds %"class.AST::Module", ptr %251, i32 0, i32 10
  store ptr %252, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #0
  %253 = load ptr, ptr %33, align 8, !tbaa !5
  %254 = call ptr @_ZNKSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %253) #0
  %255 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.586", ptr %34, i32 0, i32 0
  %256 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %255, i32 0, i32 0
  store ptr %254, ptr %256, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #0
  %257 = load ptr, ptr %33, align 8, !tbaa !5
  %258 = call ptr @_ZNKSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %257) #0
  %259 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.586", ptr %35, i32 0, i32 0
  %260 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %259, i32 0, i32 0
  store ptr %258, ptr %260, align 8
  br label %261

261:                                              ; preds = %293, %250
  %262 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringN3AST6Module8IndexEntEELb0EEESA_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #0
  br i1 %262, label %264, label %263

263:                                              ; preds = %261
  store i32 10, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #0
  br label %296

264:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #0
  %265 = call noundef nonnull align 8 dereferenceable(296) ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3AST6Module8IndexEntEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %34) #0
  store ptr %265, ptr %36, align 8, !tbaa !5
  %266 = load ptr, ptr %36, align 8, !tbaa !5
  %267 = getelementptr inbounds %"struct.std::pair.587", ptr %266, i32 0, i32 1
  %268 = getelementptr inbounds %"struct.AST::Module::IndexEnt", ptr %267, i32 0, i32 2
  %269 = load ptr, ptr %6, align 8, !tbaa !5
  %270 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %269)
          to label %271 unwind label %284

271:                                              ; preds = %264
  %272 = invoke noundef zeroext i1 @_ZNK3AST10Visibility10is_visibleERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(36) %268, ptr noundef nonnull align 8 dereferenceable(32) %270)
          to label %273 unwind label %284

273:                                              ; preds = %271
  br i1 %272, label %274, label %292

274:                                              ; preds = %273
  %275 = load ptr, ptr %6, align 8, !tbaa !5
  %276 = load ptr, ptr %36, align 8, !tbaa !5
  %277 = getelementptr inbounds %"struct.std::pair.587", ptr %276, i32 0, i32 0
  %278 = load ptr, ptr %8, align 8, !tbaa !5
  %279 = load ptr, ptr %36, align 8, !tbaa !5
  %280 = getelementptr inbounds %"struct.std::pair.587", ptr %279, i32 0, i32 1
  %281 = getelementptr inbounds %"struct.AST::Module::IndexEnt", ptr %280, i32 0, i32 3
  invoke void @_ZN3AST4PathC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %37, ptr noundef nonnull align 8 dereferenceable(240) %281)
          to label %282 unwind label %284

282:                                              ; preds = %274
  invoke void @_Z9_add_itemRK4SpanRN3AST6ModuleE9IndexNameRK8RcStringRKNS2_10VisibilityENS2_4PathEb(ptr noundef nonnull align 8 dereferenceable(8) @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp, ptr noundef nonnull align 8 dereferenceable(480) %275, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(8) %277, ptr noundef nonnull align 8 dereferenceable(36) %278, ptr noundef %37, i1 noundef zeroext false)
          to label %283 unwind label %288

283:                                              ; preds = %282
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %37) #0
  br label %292

284:                                              ; preds = %274, %271, %264
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %9, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %10, align 4
  br label %295

288:                                              ; preds = %282
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %9, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %10, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %37) #0
  br label %295

292:                                              ; preds = %283, %273
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #0
  br label %293

293:                                              ; preds = %292
  %294 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3AST6Module8IndexEntEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %34) #0
  br label %261

295:                                              ; preds = %288, %284
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #0
  br label %398

296:                                              ; preds = %263
  %297 = load ptr, ptr %7, align 8, !tbaa !5
  %298 = getelementptr inbounds %"class.AST::Module", ptr %297, i32 0, i32 6
  %299 = load i8, ptr %298, align 1, !tbaa !18
  %300 = sext i8 %299 to i32
  %301 = icmp ne i32 %300, 2
  br i1 %301, label %302, label %387

302:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #0
  %303 = load ptr, ptr %7, align 8, !tbaa !5
  %304 = getelementptr inbounds %"class.AST::Module", ptr %303, i32 0, i32 1
  store ptr %304, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #0
  %305 = load ptr, ptr %38, align 8, !tbaa !5
  %306 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %305) #0
  %307 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.589", ptr %39, i32 0, i32 0
  store ptr %306, ptr %307, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #0
  %308 = load ptr, ptr %38, align 8, !tbaa !5
  %309 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #0
  %310 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.589", ptr %40, i32 0, i32 0
  store ptr %309, ptr %310, align 8
  br label %311

311:                                              ; preds = %383, %302
  %312 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #0
  br i1 %312, label %314, label %313

313:                                              ; preds = %311
  store i32 12, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #0
  br label %386

314:                                              ; preds = %311
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #0
  %315 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #0
  store ptr %315, ptr %41, align 8, !tbaa !5
  %316 = load ptr, ptr %41, align 8, !tbaa !5
  %317 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %316) #0
  %318 = getelementptr inbounds %"struct.AST::Named", ptr %317, i32 0, i32 4
  %319 = invoke noundef zeroext i1 @_ZNK3AST4Item6is_UseEv(ptr noundef nonnull align 8 dereferenceable(488) %318)
          to label %320 unwind label %322

320:                                              ; preds = %314
  br i1 %319, label %326, label %321

321:                                              ; preds = %320
  store i32 13, ptr %17, align 4
  br label %380

322:                                              ; preds = %332, %326, %314
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %9, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %10, align 4
  br label %385

326:                                              ; preds = %320
  %327 = load ptr, ptr %41, align 8, !tbaa !5
  %328 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %327) #0
  %329 = getelementptr inbounds %"struct.AST::Named", ptr %328, i32 0, i32 2
  %330 = load ptr, ptr %6, align 8, !tbaa !5
  %331 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %330)
          to label %332 unwind label %322

332:                                              ; preds = %326
  %333 = invoke noundef zeroext i1 @_ZNK3AST10Visibility10is_visibleERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(36) %329, ptr noundef nonnull align 8 dereferenceable(32) %331)
          to label %334 unwind label %322

334:                                              ; preds = %332
  br i1 %333, label %336, label %335

335:                                              ; preds = %334
  store i32 13, ptr %17, align 4
  br label %380

336:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #0
  %337 = load ptr, ptr %41, align 8, !tbaa !5
  %338 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %337) #0
  %339 = getelementptr inbounds %"struct.AST::Named", ptr %338, i32 0, i32 4
  %340 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3AST4Item6as_UseEv(ptr noundef nonnull align 8 dereferenceable(488) %339)
          to label %341 unwind label %352

341:                                              ; preds = %336
  %342 = getelementptr inbounds %"struct.AST::UseItem", ptr %340, i32 0, i32 1
  store ptr %342, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #0
  %343 = load ptr, ptr %42, align 8, !tbaa !5
  %344 = call ptr @_ZNSt6vectorIN3AST7UseItem3EntESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %343) #0
  %345 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.590", ptr %43, i32 0, i32 0
  store ptr %344, ptr %345, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #0
  %346 = load ptr, ptr %42, align 8, !tbaa !5
  %347 = call ptr @_ZNSt6vectorIN3AST7UseItem3EntESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %346) #0
  %348 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.590", ptr %44, i32 0, i32 0
  store ptr %347, ptr %348, align 8
  br label %349

349:                                              ; preds = %376, %341
  %350 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %44) #0
  br i1 %350, label %356, label %351

351:                                              ; preds = %349
  store i32 14, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #0
  br label %379

352:                                              ; preds = %336
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %9, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %10, align 4
  br label %378

356:                                              ; preds = %349
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #0
  %357 = call noundef nonnull align 8 dereferenceable(256) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #0
  store ptr %357, ptr %45, align 8, !tbaa !5
  %358 = load ptr, ptr %45, align 8, !tbaa !5
  %359 = getelementptr inbounds %"struct.AST::UseItem::Ent", ptr %358, i32 0, i32 2
  %360 = invoke noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8) %359, ptr noundef @.str.4)
          to label %361 unwind label %363

361:                                              ; preds = %356
  br i1 %360, label %362, label %367

362:                                              ; preds = %361
  store i32 15, ptr %17, align 4
  br label %373

363:                                              ; preds = %367, %356
  %364 = landingpad { ptr, i32 }
          cleanup
  %365 = extractvalue { ptr, i32 } %364, 0
  store ptr %365, ptr %9, align 8
  %366 = extractvalue { ptr, i32 } %364, 1
  store i32 %366, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #0
  br label %378

367:                                              ; preds = %361
  %368 = load ptr, ptr %5, align 8, !tbaa !5
  %369 = load ptr, ptr %6, align 8, !tbaa !5
  %370 = load ptr, ptr %45, align 8, !tbaa !5
  %371 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z39Resolve_Index_Module_Wildcard__use_stmtRN3AST5CrateERNS_6ModuleERKNS_7UseItem3EntERKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(1112) %368, ptr noundef nonnull align 8 dereferenceable(480) %369, ptr noundef nonnull align 8 dereferenceable(256) %370, ptr noundef nonnull align 8 dereferenceable(36) %371)
          to label %372 unwind label %363

372:                                              ; preds = %367
  store i32 0, ptr %17, align 4
  br label %373

373:                                              ; preds = %372, %362
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #0
  %374 = load i32, ptr %17, align 4
  switch i32 %374, label %405 [
    i32 0, label %375
    i32 15, label %376
  ]

375:                                              ; preds = %373
  br label %376

376:                                              ; preds = %375, %373
  %377 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #0
  br label %349

378:                                              ; preds = %363, %352
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #0
  br label %385

379:                                              ; preds = %351
  store i32 0, ptr %17, align 4
  br label %380

380:                                              ; preds = %379, %335, %321
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #0
  %381 = load i32, ptr %17, align 4
  switch i32 %381, label %405 [
    i32 0, label %382
    i32 13, label %383
  ]

382:                                              ; preds = %380
  br label %383

383:                                              ; preds = %382, %380
  %384 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #0
  br label %311

385:                                              ; preds = %378, %322
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #0
  br label %398

386:                                              ; preds = %313
  br label %387

387:                                              ; preds = %386, %296
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #0
  %388 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %388, ptr %46, align 8, !tbaa !5
  %389 = invoke noundef i64 @_ZNSt3setIPKN3AST6ModuleESt4lessIS3_ESaIS3_EE5eraseERKS3_(ptr noundef nonnull align 8 dereferenceable(48) @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack, ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %390 unwind label %394

390:                                              ; preds = %387
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #0
  store i32 0, ptr %17, align 4
  br label %391

391:                                              ; preds = %390, %111
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %11) #0
  %392 = load i32, ptr %17, align 4
  switch i32 %392, label %405 [
    i32 0, label %393
    i32 1, label %393
  ]

393:                                              ; preds = %391, %391
  ret void

394:                                              ; preds = %387
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %9, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #0
  br label %398

398:                                              ; preds = %394, %385, %295, %249, %203, %157, %105, %101
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #0
  br label %399

399:                                              ; preds = %398, %97
  call void @llvm.lifetime.end.p0(i64 40, ptr %11) #0
  br label %400

400:                                              ; preds = %399, %93
  %401 = load ptr, ptr %9, align 8
  %402 = load i32, ptr %10, align 4
  %403 = insertvalue { ptr, i32 } poison, ptr %401, 0
  %404 = insertvalue { ptr, i32 } %403, i32 %402, 1
  resume { ptr, i32 } %404

405:                                              ; preds = %391, %380, %373
  unreachable
}

; Function Attrs: nounwind
declare i32 @__cxa_guard_acquire(ptr) #0

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

; Function Attrs: nounwind
declare void @__cxa_guard_abort(ptr) #0

; Function Attrs: nounwind
declare void @__cxa_guard_release(ptr) #0

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS4_6ModuleERKS7_RKNS4_10VisibilityEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3setIPKN3AST6ModuleESt4lessIS3_ESaIS3_EE6insertEOS3_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

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

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

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

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

declare noundef zeroext i1 @_ZNK3AST10Visibility10is_visibleERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(36), ptr noundef nonnull align 8 dereferenceable(32)) #6

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z39Resolve_Index_Module_Wildcard__use_stmtRN3AST5CrateERNS_6ModuleERKNS_7UseItem3EntERKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(1112), ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(256), ptr noundef nonnull align 8 dereferenceable(36)) #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNSt3setIPKN3AST6ModuleESt4lessIS3_ESaIS3_EE5eraseERKS3_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

attributes #0 = { nounwind }
attributes #1 = { 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 #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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #5 = { 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 #6 = { "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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #8 = { 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" }

!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 = !{!"branch_weights", i32 1, i32 1048575}
!10 = !{!11, !13, i64 8}
!11 = !{!"_ZTSSt4pairISt23_Rb_tree_const_iteratorIPKN3AST6ModuleEEbE", !12, i64 0, !13, i64 8}
!12 = !{!"_ZTSSt23_Rb_tree_const_iteratorIPKN3AST6ModuleEE", !6, i64 0}
!13 = !{!"bool", !7, i64 0}
!14 = !{i8 0, i8 2}
!15 = !{}
!16 = !{!17, !17, i64 0}
!17 = !{!"int", !7, i64 0}
!18 = !{!19, !7, i64 177}
!19 = !{!"_ZTSN3AST6ModuleE", !20, i64 0, !26, i64 32, !30, i64 56, !34, i64 80, !38, i64 104, !13, i64 176, !7, i64 177, !42, i64 184, !42, i64 240, !42, i64 296, !42, i64 352, !47, i64 408, !51, i64 432, !55, i64 456}
!20 = !{!"_ZTSN3AST12AbsolutePathE", !21, i64 0, !22, i64 8}
!21 = !{!"_ZTS8RcString", !6, i64 0}
!22 = !{!"_ZTSSt6vectorI8RcStringSaIS0_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseI8RcStringSaIS0_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseI8RcStringSaIS0_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseI8RcStringSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTSSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"_ZTSSt6vectorISt10shared_ptrIN3AST6ModuleEESaIS3_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!34 = !{!"_ZTSSt6vectorIN3AST5NamedI13MacroRulesPtrEESaIS3_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{!"_ZTSN3AST6Module8FileInfoE", !13, i64 0, !13, i64 1, !39, i64 8, !39, i64 40}
!39 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !40, i64 0, !41, i64 8, !7, i64 16}
!40 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!41 = !{!"long", !7, i64 0}
!42 = !{!"_ZTSSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE", !43, i64 0}
!43 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3AST6Module8IndexEntEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !41, i64 8, !44, i64 16, !41, i64 24, !45, i64 32, !6, i64 48}
!44 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!45 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !46, i64 0, !41, i64 8}
!46 = !{!"float", !7, i64 0}
!47 = !{!"_ZTSSt6vectorIN3AST12AbsolutePathESaIS1_EE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!51 = !{!"_ZTSSt6vectorIN3AST6Module11MacroImportESaIS2_EE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!55 = !{!"_ZTSSt6vectorIN3AST6Module6ImportESaIS2_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}


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

%struct.Span = type { ptr }
%"class.std::set" = type { %"class.std::_Rb_tree.578" }
%"class.std::_Rb_tree.578" = type { %"struct.std::_Rb_tree<const AST::Module *, const AST::Module *, std::_Identity<const AST::Module *>, std::less<const AST::Module *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const AST::Module *, const AST::Module *, std::_Identity<const AST::Module *>, std::less<const AST::Module *>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.577 = type { ptr, ptr }
%"struct.std::__detail::_Node_const_iterator.586" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"class.AST::Path" = type { ptr, %"class.AST::Path::Class", %"struct.AST::Path::Bindings" }
%"class.AST::Path::Class" = type { i32, %"union.AST::Path::Class::DataUnion" }
%"union.AST::Path::Class::DataUnion" = type { %"struct.AST::Path::Class::Data_UFCS" }
%"struct.AST::Path::Class::Data_UFCS" = type { %"class.std::unique_ptr.45", %"class.std::unique_ptr.53", %"class.std::vector.40" }
%"class.std::unique_ptr.45" = type { %"struct.std::__uniq_ptr_data.46" }
%"struct.std::__uniq_ptr_data.46" = type { %"class.std::__uniq_ptr_impl.47" }
%"class.std::__uniq_ptr_impl.47" = type { %"class.std::tuple.48" }
%"class.std::tuple.48" = type { %"struct.std::_Tuple_impl.49" }
%"struct.std::_Tuple_impl.49" = type { %"struct.std::_Head_base.52" }
%"struct.std::_Head_base.52" = type { ptr }
%"class.std::unique_ptr.53" = type { %"struct.std::__uniq_ptr_data.54" }
%"struct.std::__uniq_ptr_data.54" = type { %"class.std::__uniq_ptr_impl.55" }
%"class.std::__uniq_ptr_impl.55" = type { %"class.std::tuple.56" }
%"class.std::tuple.56" = type { %"struct.std::_Tuple_impl.57" }
%"struct.std::_Tuple_impl.57" = type { %"struct.std::_Head_base.60" }
%"struct.std::_Head_base.60" = type { ptr }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Path::Bindings" = type { %"struct.AST::PathBinding", %"struct.AST::PathBinding.61", %"struct.AST::PathBinding.62" }
%"struct.AST::PathBinding" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Value" }
%"struct.AST::AbsolutePath" = type { %class.RcString, %"class.std::vector" }
%class.RcString = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::PathBinding_Value" = type { i32, %"union.AST::PathBinding_Value::DataUnion" }
%"union.AST::PathBinding_Value::DataUnion" = type { %"struct.AST::PathBinding_Value::Data_EnumVar" }
%"struct.AST::PathBinding_Value::Data_EnumVar" = type { ptr, i32, ptr }
%"struct.AST::PathBinding.61" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Type" }
%"class.AST::PathBinding_Type" = type { i32, %"union.AST::PathBinding_Type::DataUnion" }
%"union.AST::PathBinding_Type::DataUnion" = type { %"struct.AST::PathBinding_Type::Data_Module" }
%"struct.AST::PathBinding_Type::Data_Module" = type { ptr, %"struct.AST::PathBinding_Type::(anonymous struct)::Hir" }
%"struct.AST::PathBinding_Type::(anonymous struct)::Hir" = type { ptr, ptr }
%"struct.AST::PathBinding.62" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Macro" }
%"class.AST::PathBinding_Macro" = type { i32, %"union.AST::PathBinding_Macro::DataUnion" }
%"union.AST::PathBinding_Macro::DataUnion" = type { %"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" }
%"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" = type { ptr, %class.RcString }
%"class.__gnu_cxx::__normal_iterator.589" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.590" = type { ptr }

@__dso_handle = external hidden global i8
@.str.4 = external hidden unnamed_addr constant [1 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp = external hidden global %struct.Span, align 8
@_ZGVZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp = external hidden global i64, align 8
@__func__._Z37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityE = external hidden unnamed_addr constant [38 x i8], align 1
@_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack = external hidden global %"class.std::set", align 8
@_ZGVZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack = external hidden global i64, align 8
@.str.29 = external hidden unnamed_addr constant [20 x i8], align 1

; Function Attrs: nofree nounwind
declare i32 @__cxa_atexit(ptr, ptr, ptr) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z9_add_itemRK4SpanRN3AST6ModuleE9IndexNameRK8RcStringRKNS2_10VisibilityENS2_4PathEb(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(480), i32 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(36), ptr noundef, i1 noundef zeroext) local_unnamed_addr #2

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: nounwind
declare void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480)) local_unnamed_addr #4 align 2

; Function Attrs: nounwind
declare void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240)) unnamed_addr #5

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #6

declare noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef, ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3decRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #1

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #1

declare void @_ZN3AST4PathC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(240), ptr noundef nonnull align 8 dereferenceable(240)) unnamed_addr #6

declare void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef) unnamed_addr #6

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN3AST4Item6as_UseEv(ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Item6is_UseEv(ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #4 align 2

; Function Attrs: nounwind
declare void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #5

; Function Attrs: mustprogress uwtable
define dso_local void @_Z37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(1112) %0, ptr noundef nonnull align 8 dereferenceable(480) %1, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(36) %3) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %class.TraceLog, align 8
  %6 = alloca %"class.std::function", align 8
  %7 = alloca %class.anon.577, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"struct.std::__detail::_Node_const_iterator.586", align 8
  %10 = alloca %"struct.std::__detail::_Node_const_iterator.586", align 8
  %11 = alloca %"class.AST::Path", align 8
  %12 = alloca %"struct.std::__detail::_Node_const_iterator.586", align 8
  %13 = alloca %"struct.std::__detail::_Node_const_iterator.586", align 8
  %14 = alloca %"class.AST::Path", align 8
  %15 = alloca %"struct.std::__detail::_Node_const_iterator.586", align 8
  %16 = alloca %"struct.std::__detail::_Node_const_iterator.586", align 8
  %17 = alloca %"class.AST::Path", align 8
  %18 = alloca %"struct.std::__detail::_Node_const_iterator.586", align 8
  %19 = alloca %"struct.std::__detail::_Node_const_iterator.586", align 8
  %20 = alloca %"class.AST::Path", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.590", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.590", align 8
  %25 = alloca ptr, align 8
  %26 = load atomic i8, ptr @_ZGVZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp acquire, align 8
  %27 = icmp eq i8 %26, 0
  br i1 %27, label %28, label %32, !prof !5

28:                                               ; preds = %4
  %29 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp) #8
  %.not = icmp eq i32 %29, 0
  br i1 %.not, label %32, label %30

30:                                               ; preds = %28
  tail call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp)
  %31 = tail call i32 @__cxa_atexit(ptr nonnull @_ZN4SpanD1Ev, ptr nonnull @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp, ptr nonnull @__dso_handle) #8
  tail call void @__cxa_guard_release(ptr nonnull @_ZGVZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp) #8
  br label %32

32:                                               ; preds = %30, %28, %4
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) #8
  %33 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %34 = select i1 %33, ptr @__func__._Z37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityE, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #8
  store ptr %1, ptr %7, align 8, !tbaa !6
  %35 = getelementptr inbounds i8, ptr %7, i64 8
  store ptr %2, ptr %35, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS4_6ModuleERKS7_RKNS4_10VisibilityEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(16) %7) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %5, ptr noundef %34, ptr noundef nonnull %6)
          to label %36 unwind label %59

36:                                               ; preds = %32
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #8
  %37 = load atomic i8, ptr @_ZGVZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack acquire, align 8
  %38 = icmp eq i8 %37, 0
  br i1 %38, label %39, label %43, !prof !5

39:                                               ; preds = %36
  %40 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack) #8
  %.not64 = icmp eq i32 %40, 0
  br i1 %.not64, label %43, label %41

41:                                               ; preds = %39
  call void @_ZNSt3setIPKN3AST6ModuleESt4lessIS3_ESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack) #8
  %42 = call i32 @__cxa_atexit(ptr nonnull @_ZNSt3setIPKN3AST6ModuleESt4lessIS3_ESaIS3_EED2Ev, ptr nonnull @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack, ptr nonnull @__dso_handle) #8
  call void @__cxa_guard_release(ptr nonnull @_ZGVZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack) #8
  br label %43

43:                                               ; preds = %41, %39, %36
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  store ptr %2, ptr %8, align 8, !tbaa !6
  %44 = invoke { ptr, i8 } @_ZNSt3setIPKN3AST6ModuleESt4lessIS3_ESaIS3_EE6insertEOS3_(ptr noundef nonnull align 8 dereferenceable(48) @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %45 unwind label %61

45:                                               ; preds = %43
  %.fca.1.extract = extractvalue { ptr, i8 } %44, 1
  %46 = trunc i8 %.fca.1.extract to i1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br i1 %46, label %65, label %47

47:                                               ; preds = %45
  %48 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %49 unwind label %63

49:                                               ; preds = %47
  br i1 %48, label %50, label %194

50:                                               ; preds = %49
  %51 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %52 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %51, ptr noundef nonnull @__func__._Z37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityE)
          to label %53 unwind label %63

53:                                               ; preds = %50
  %54 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull @.str.29)
          to label %55 unwind label %63

55:                                               ; preds = %53
  %56 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %57 unwind label %63

57:                                               ; preds = %55
  %58 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %194 unwind label %63

59:                                               ; preds = %32
  %60 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #8
  br label %198

61:                                               ; preds = %43
  %62 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %197

63:                                               ; preds = %57, %55, %53, %50, %47
  %64 = landingpad { ptr, i32 }
          cleanup
  br label %197

65:                                               ; preds = %45
  %66 = getelementptr inbounds i8, ptr %2, i64 184
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #8
  %67 = call ptr @_ZNKSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %66) #8
  store ptr %67, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  %68 = call ptr @_ZNKSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %66) #8
  store ptr %68, ptr %10, align 8
  %69 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringN3AST6Module8IndexEntEELb0EEESA_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  br i1 %69, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %87, %65
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  %70 = getelementptr inbounds i8, ptr %2, i64 240
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  %71 = call ptr @_ZNKSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %70) #8
  store ptr %71, ptr %12, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  %72 = call ptr @_ZNKSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %70) #8
  store ptr %72, ptr %13, align 8
  %73 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringN3AST6Module8IndexEntEELb0EEESA_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  br i1 %73, label %.lr.ph79, label %._crit_edge80

.lr.ph:                                           ; preds = %65, %87
  %74 = call noundef nonnull align 8 dereferenceable(296) ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3AST6Module8IndexEntEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  %75 = getelementptr inbounds i8, ptr %74, i64 16
  %76 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %1)
  %77 = invoke noundef zeroext i1 @_ZNK3AST10Visibility10is_visibleERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(36) %75, ptr noundef nonnull align 8 dereferenceable(32) %76)
          to label %78 unwind label %83

78:                                               ; preds = %.lr.ph
  br i1 %77, label %79, label %87

79:                                               ; preds = %78
  %80 = getelementptr inbounds i8, ptr %74, i64 56
  invoke void @_ZN3AST4PathC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %11, ptr noundef nonnull align 8 dereferenceable(240) %80)
          to label %81 unwind label %83

81:                                               ; preds = %79
  invoke void @_Z9_add_itemRK4SpanRN3AST6ModuleE9IndexNameRK8RcStringRKNS2_10VisibilityENS2_4PathEb(ptr noundef nonnull align 8 dereferenceable(8) @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp, ptr noundef nonnull align 8 dereferenceable(480) %1, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull align 8 dereferenceable(36) %3, ptr noundef nonnull %11, i1 noundef zeroext false)
          to label %82 unwind label %85

82:                                               ; preds = %81
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %11) #8
  br label %87

83:                                               ; preds = %79, %.lr.ph
  %84 = landingpad { ptr, i32 }
          cleanup
  br label %90

85:                                               ; preds = %81
  %86 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %11) #8
  br label %90

87:                                               ; preds = %82, %78
  %88 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3AST6Module8IndexEntEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  %89 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringN3AST6Module8IndexEntEELb0EEESA_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  br i1 %89, label %.lr.ph, label %._crit_edge

90:                                               ; preds = %85, %83
  %.pn73 = phi { ptr, i32 } [ %86, %85 ], [ %84, %83 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  br label %197

._crit_edge80:                                    ; preds = %108, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  %91 = getelementptr inbounds i8, ptr %2, i64 296
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  %92 = call ptr @_ZNKSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %91) #8
  store ptr %92, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  %93 = call ptr @_ZNKSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %91) #8
  store ptr %93, ptr %16, align 8
  %94 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringN3AST6Module8IndexEntEELb0EEESA_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  br i1 %94, label %.lr.ph82, label %._crit_edge83

.lr.ph79:                                         ; preds = %._crit_edge, %108
  %95 = call noundef nonnull align 8 dereferenceable(296) ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3AST6Module8IndexEntEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  %96 = getelementptr inbounds i8, ptr %95, i64 16
  %97 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %1)
  %98 = invoke noundef zeroext i1 @_ZNK3AST10Visibility10is_visibleERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(36) %96, ptr noundef nonnull align 8 dereferenceable(32) %97)
          to label %99 unwind label %104

99:                                               ; preds = %.lr.ph79
  br i1 %98, label %100, label %108

100:                                              ; preds = %99
  %101 = getelementptr inbounds i8, ptr %95, i64 56
  invoke void @_ZN3AST4PathC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %14, ptr noundef nonnull align 8 dereferenceable(240) %101)
          to label %102 unwind label %104

102:                                              ; preds = %100
  invoke void @_Z9_add_itemRK4SpanRN3AST6ModuleE9IndexNameRK8RcStringRKNS2_10VisibilityENS2_4PathEb(ptr noundef nonnull align 8 dereferenceable(8) @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp, ptr noundef nonnull align 8 dereferenceable(480) %1, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(8) %95, ptr noundef nonnull align 8 dereferenceable(36) %3, ptr noundef nonnull %14, i1 noundef zeroext false)
          to label %103 unwind label %106

103:                                              ; preds = %102
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %14) #8
  br label %108

104:                                              ; preds = %100, %.lr.ph79
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %111

106:                                              ; preds = %102
  %107 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %14) #8
  br label %111

108:                                              ; preds = %103, %99
  %109 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3AST6Module8IndexEntEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  %110 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringN3AST6Module8IndexEntEELb0EEESA_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  br i1 %110, label %.lr.ph79, label %._crit_edge80

111:                                              ; preds = %106, %104
  %.pn71 = phi { ptr, i32 } [ %107, %106 ], [ %105, %104 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %197

._crit_edge83:                                    ; preds = %129, %._crit_edge80
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  %112 = getelementptr inbounds i8, ptr %2, i64 352
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  %113 = call ptr @_ZNKSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %112) #8
  store ptr %113, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #8
  %114 = call ptr @_ZNKSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %112) #8
  store ptr %114, ptr %19, align 8
  %115 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringN3AST6Module8IndexEntEELb0EEESA_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br i1 %115, label %.lr.ph85, label %._crit_edge86

.lr.ph82:                                         ; preds = %._crit_edge80, %129
  %116 = call noundef nonnull align 8 dereferenceable(296) ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3AST6Module8IndexEntEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  %117 = getelementptr inbounds i8, ptr %116, i64 16
  %118 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %1)
  %119 = invoke noundef zeroext i1 @_ZNK3AST10Visibility10is_visibleERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(36) %117, ptr noundef nonnull align 8 dereferenceable(32) %118)
          to label %120 unwind label %125

120:                                              ; preds = %.lr.ph82
  br i1 %119, label %121, label %129

121:                                              ; preds = %120
  %122 = getelementptr inbounds i8, ptr %116, i64 56
  invoke void @_ZN3AST4PathC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %17, ptr noundef nonnull align 8 dereferenceable(240) %122)
          to label %123 unwind label %125

123:                                              ; preds = %121
  invoke void @_Z9_add_itemRK4SpanRN3AST6ModuleE9IndexNameRK8RcStringRKNS2_10VisibilityENS2_4PathEb(ptr noundef nonnull align 8 dereferenceable(8) @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp, ptr noundef nonnull align 8 dereferenceable(480) %1, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef nonnull align 8 dereferenceable(36) %3, ptr noundef nonnull %17, i1 noundef zeroext false)
          to label %124 unwind label %127

124:                                              ; preds = %123
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %17) #8
  br label %129

125:                                              ; preds = %121, %.lr.ph82
  %126 = landingpad { ptr, i32 }
          cleanup
  br label %132

127:                                              ; preds = %123
  %128 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %17) #8
  br label %132

129:                                              ; preds = %124, %120
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3AST6Module8IndexEntEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  %131 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringN3AST6Module8IndexEntEELb0EEESA_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  br i1 %131, label %.lr.ph82, label %._crit_edge83

132:                                              ; preds = %127, %125
  %.pn69 = phi { ptr, i32 } [ %128, %127 ], [ %126, %125 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  br label %197

._crit_edge86:                                    ; preds = %148, %._crit_edge83
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  %133 = getelementptr inbounds i8, ptr %2, i64 177
  %134 = load i8, ptr %133, align 1, !tbaa !12
  %.not65 = icmp eq i8 %134, 2
  br i1 %.not65, label %191, label %152

.lr.ph85:                                         ; preds = %._crit_edge83, %148
  %135 = call noundef nonnull align 8 dereferenceable(296) ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3AST6Module8IndexEntEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  %136 = getelementptr inbounds i8, ptr %135, i64 16
  %137 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %1)
  %138 = invoke noundef zeroext i1 @_ZNK3AST10Visibility10is_visibleERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(36) %136, ptr noundef nonnull align 8 dereferenceable(32) %137)
          to label %139 unwind label %144

139:                                              ; preds = %.lr.ph85
  br i1 %138, label %140, label %148

140:                                              ; preds = %139
  %141 = getelementptr inbounds i8, ptr %135, i64 56
  invoke void @_ZN3AST4PathC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %20, ptr noundef nonnull align 8 dereferenceable(240) %141)
          to label %142 unwind label %144

142:                                              ; preds = %140
  invoke void @_Z9_add_itemRK4SpanRN3AST6ModuleE9IndexNameRK8RcStringRKNS2_10VisibilityENS2_4PathEb(ptr noundef nonnull align 8 dereferenceable(8) @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE2sp, ptr noundef nonnull align 8 dereferenceable(480) %1, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(8) %135, ptr noundef nonnull align 8 dereferenceable(36) %3, ptr noundef nonnull %20, i1 noundef zeroext false)
          to label %143 unwind label %146

143:                                              ; preds = %142
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %20) #8
  br label %148

144:                                              ; preds = %140, %.lr.ph85
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %151

146:                                              ; preds = %142
  %147 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %20) #8
  br label %151

148:                                              ; preds = %143, %139
  %149 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3AST6Module8IndexEntEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  %150 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringN3AST6Module8IndexEntEELb0EEESA_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br i1 %150, label %.lr.ph85, label %._crit_edge86

151:                                              ; preds = %146, %144
  %.pn67 = phi { ptr, i32 } [ %147, %146 ], [ %145, %144 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br label %197

152:                                              ; preds = %._crit_edge86
  %153 = getelementptr inbounds i8, ptr %2, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #8
  %154 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %153) #8
  store ptr %154, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  %155 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %153) #8
  store ptr %155, ptr %22, align 8
  %156 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  br i1 %156, label %.lr.ph91, label %._crit_edge92

._crit_edge92:                                    ; preds = %187, %152
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  br label %191

.lr.ph91:                                         ; preds = %152, %187
  %157 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  %158 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %157) #8
  %159 = getelementptr inbounds i8, ptr %158, i64 80
  %160 = call noundef zeroext i1 @_ZNK3AST4Item6is_UseEv(ptr noundef nonnull align 8 dereferenceable(488) %159)
  br i1 %160, label %163, label %187

161:                                              ; preds = %163
  %162 = landingpad { ptr, i32 }
          cleanup
  br label %190

163:                                              ; preds = %.lr.ph91
  %164 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %157) #8
  %165 = getelementptr inbounds i8, ptr %164, i64 32
  %166 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %1)
  %167 = invoke noundef zeroext i1 @_ZNK3AST10Visibility10is_visibleERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(36) %165, ptr noundef nonnull align 8 dereferenceable(32) %166)
          to label %168 unwind label %161

168:                                              ; preds = %163
  br i1 %167, label %169, label %187

169:                                              ; preds = %168
  %170 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %157) #8
  %171 = getelementptr inbounds i8, ptr %170, i64 80
  %172 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3AST4Item6as_UseEv(ptr noundef nonnull align 8 dereferenceable(488) %171)
  %173 = getelementptr inbounds i8, ptr %172, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  %174 = call ptr @_ZNSt6vectorIN3AST7UseItem3EntESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %173) #8
  store ptr %174, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #8
  %175 = call ptr @_ZNSt6vectorIN3AST7UseItem3EntESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %173) #8
  store ptr %175, ptr %24, align 8
  %176 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  br i1 %176, label %.lr.ph88, label %._crit_edge89

._crit_edge89:                                    ; preds = %184, %169
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  br label %187

.lr.ph88:                                         ; preds = %169, %184
  %177 = call noundef nonnull align 8 dereferenceable(256) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  %178 = getelementptr inbounds i8, ptr %177, i64 248
  %179 = invoke noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8) %178, ptr noundef nonnull @.str.4)
          to label %180 unwind label %181

180:                                              ; preds = %.lr.ph88
  br i1 %179, label %184, label %183

181:                                              ; preds = %183, %.lr.ph88
  %182 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  br label %190

183:                                              ; preds = %180
  invoke void @_Z39Resolve_Index_Module_Wildcard__use_stmtRN3AST5CrateERNS_6ModuleERKNS_7UseItem3EntERKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(1112) %0, ptr noundef nonnull align 8 dereferenceable(480) %1, ptr noundef nonnull align 8 dereferenceable(256) %177, ptr noundef nonnull align 8 dereferenceable(36) %3)
          to label %184 unwind label %181

184:                                              ; preds = %183, %180
  %185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  %186 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  br i1 %186, label %.lr.ph88, label %._crit_edge89

187:                                              ; preds = %168, %.lr.ph91, %._crit_edge89
  %188 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  %189 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  br i1 %189, label %.lr.ph91, label %._crit_edge92

190:                                              ; preds = %181, %161
  %.pn = phi { ptr, i32 } [ %182, %181 ], [ %162, %161 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  br label %197

191:                                              ; preds = %._crit_edge92, %._crit_edge86
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #8
  store ptr %2, ptr %25, align 8, !tbaa !6
  %192 = invoke noundef i64 @_ZNSt3setIPKN3AST6ModuleESt4lessIS3_ESaIS3_EE5eraseERKS3_(ptr noundef nonnull align 8 dereferenceable(48) @_ZZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS_6ModuleERKS2_RKNS_10VisibilityEE5stack, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %193 unwind label %195

193:                                              ; preds = %191
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  br label %194

194:                                              ; preds = %49, %57, %193
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #8
  ret void

195:                                              ; preds = %191
  %196 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  br label %197

197:                                              ; preds = %195, %190, %151, %132, %111, %90, %63, %61
  %.pn75 = phi { ptr, i32 } [ %64, %63 ], [ %.pn73, %90 ], [ %.pn71, %111 ], [ %.pn69, %132 ], [ %.pn67, %151 ], [ %.pn, %190 ], [ %196, %195 ], [ %62, %61 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #8
  br label %198

198:                                              ; preds = %197, %59
  %.pn75.pn = phi { ptr, i32 } [ %.pn75, %197 ], [ %60, %59 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #8
  resume { ptr, i32 } %.pn75.pn
}

; Function Attrs: nofree nounwind
declare i32 @__cxa_guard_acquire(ptr) local_unnamed_addr #0

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

; Function Attrs: nofree nounwind
declare void @__cxa_guard_release(ptr) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ37Resolve_Index_Module_Wildcard__submodRN3AST5CrateERNS4_6ModuleERKS7_RKNS4_10VisibilityEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3setIPKN3AST6ModuleESt4lessIS3_ESaIS3_EE6insertEOS3_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

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

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

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

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

declare noundef zeroext i1 @_ZNK3AST10Visibility10is_visibleERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(36), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #6

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z39Resolve_Index_Module_Wildcard__use_stmtRN3AST5CrateERNS_6ModuleERKNS_7UseItem3EntERKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(1112), ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(256), ptr noundef nonnull align 8 dereferenceable(36)) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNSt3setIPKN3AST6ModuleESt4lessIS3_ESaIS3_EE5eraseERKS3_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

attributes #0 = { nofree nounwind }
attributes #1 = { 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 #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #5 = { 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 #6 = { "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 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 #8 = { 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 = !{!"branch_weights", i32 1, i32 1048575}
!6 = !{!7, !7, i64 0}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!11, !11, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!13, !8, i64 177}
!13 = !{!"_ZTSN3AST6ModuleE", !14, i64 0, !20, i64 32, !24, i64 56, !28, i64 80, !32, i64 104, !33, i64 176, !8, i64 177, !37, i64 184, !37, i64 240, !37, i64 296, !37, i64 352, !42, i64 408, !46, i64 432, !50, i64 456}
!14 = !{!"_ZTSN3AST12AbsolutePathE", !15, i64 0, !16, i64 8}
!15 = !{!"_ZTS8RcString", !7, i64 0}
!16 = !{!"_ZTSSt6vectorI8RcStringSaIS0_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseI8RcStringSaIS0_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseI8RcStringSaIS0_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseI8RcStringSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!20 = !{!"_ZTSSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!24 = !{!"_ZTSSt6vectorISt10shared_ptrIN3AST6ModuleEESaIS3_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!28 = !{!"_ZTSSt6vectorIN3AST5NamedI13MacroRulesPtrEESaIS3_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!32 = !{!"_ZTSN3AST6Module8FileInfoE", !33, i64 0, !33, i64 1, !34, i64 8, !34, i64 40}
!33 = !{!"bool", !8, i64 0}
!34 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !35, i64 0, !36, i64 8, !8, i64 16}
!35 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !7, i64 0}
!36 = !{!"long", !8, i64 0}
!37 = !{!"_ZTSSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE", !38, i64 0}
!38 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3AST6Module8IndexEntEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE", !7, i64 0, !36, i64 8, !39, i64 16, !36, i64 24, !40, i64 32, !7, i64 48}
!39 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !7, i64 0}
!40 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !41, i64 0, !36, i64 8}
!41 = !{!"float", !8, i64 0}
!42 = !{!"_ZTSSt6vectorIN3AST12AbsolutePathESaIS1_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!46 = !{!"_ZTSSt6vectorIN3AST6Module11MacroImportESaIS2_EE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!50 = !{!"_ZTSSt6vectorIN3AST6Module6ImportESaIS2_EE", !51, i64 0}
!51 = !{!"_ZTSSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE12_Vector_implE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}


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