; LLVM IR from thepowersgang/mrustc :: src/hir/from_ast.ll (Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE)

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

%class.RcString = type { ptr }
%"struct.(anonymous namespace)::ImplTraitSource" = type { ptr, ptr, ptr }
%"class.HIR::GenericParams" = type { %"class.std::vector.8", %"class.std::vector.13", %"class.std::vector.18", %"class.std::vector.23" }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::TypeRef" = type { ptr }
%"class.HIR::ExprPtr" = type { %"class.HIR::ExprPtrInner", %"class.std::vector.93", %"class.std::vector.93", %"class.MIR::FunctionPointer", %"class.HIR::ExprStatePtr" }
%"class.HIR::ExprPtrInner" = type { ptr }
%"class.std::vector.93" = type { %"struct.std::_Vector_base.94" }
%"struct.std::_Vector_base.94" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::FunctionPointer" = type { ptr }
%"class.HIR::ExprStatePtr" = type { ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.114, %class.ThinVector.115, %class.ThinVector.116 }
%class.ThinVector.114 = type { ptr }
%class.ThinVector.115 = type { ptr }
%class.ThinVector.116 = type { ptr }
%"class.HIR::Function" = type { i8, %"struct.HIR::Linkage", i32, %"class.HIR::TypeRef", %class.RcString, i8, i8, %"class.HIR::GenericParams", %"class.std::vector.529", i8, %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %"struct.HIR::Function::Markings" }
%"struct.HIR::Linkage" = type { i32, %"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::vector.529" = type { %"struct.std::_Vector_base.530" }
%"struct.std::_Vector_base.530" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Function::Markings" = type { %"class.std::vector.510", i8, i32 }
%"class.std::vector.510" = type { %"struct.std::_Vector_base.511" }
%"struct.std::_Vector_base.511" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, 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.__gnu_cxx::__normal_iterator.809" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.841" = type { ptr }
%struct.Span = type { 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.842 = type { ptr }
%class.anon.843 = type { ptr }
%class.anon.844 = type { i8 }
%"class.std::map.846" = type { %"class.std::_Rb_tree.847" }
%"class.std::_Rb_tree.847" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>>, std::less<RcString>>::_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.std::map.851" = type { %"class.std::_Rb_tree.852" }
%"class.std::_Rb_tree.852" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.856" = type { %"class.std::_Rb_tree.857" }
%"class.std::_Rb_tree.857" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.__gnu_cxx::__normal_iterator.861" = type { ptr }
%class.anon.870 = type { ptr }
%"struct.std::pair.875" = type { %class.RcString, %"struct.HIR::TraitImpl::ImplEnt" }
%"struct.HIR::TraitImpl::ImplEnt" = type { i8, %"class.HIR::Constant" }
%"class.HIR::Constant" = type { %"class.HIR::GenericParams", %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %struct.EncodedLiteral, i32, %"class.std::map.551" }
%struct.EncodedLiteral = type { %"class.std::vector.541", %"class.std::vector.546" }
%"class.std::vector.541" = type { %"struct.std::_Vector_base.542" }
%"struct.std::_Vector_base.542" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.546" = type { %"struct.std::_Vector_base.547" }
%"struct.std::_Vector_base.547" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.551" = type { %"class.std::_Rb_tree.552" }
%"class.std::_Rb_tree.552" = type { %"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, EncodedLiteral>, std::_Select1st<std::pair<const HIR::Path, EncodedLiteral>>, std::less<HIR::Path>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, EncodedLiteral>, std::_Select1st<std::pair<const HIR::Path, EncodedLiteral>>, std::less<HIR::Path>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::pair.871" = type <{ %"struct.std::_Rb_tree_iterator.873", i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator.873" = type { ptr }
%class.anon.877 = type { ptr }
%"class.std::allocator.56" = type { i8 }
%"struct.std::pair.882" = type { %class.RcString, %"struct.HIR::TraitImpl::ImplEnt.884" }
%"struct.HIR::TraitImpl::ImplEnt.884" = type { i8, %"class.HIR::TypeRef" }
%"struct.std::pair.878" = type <{ %"struct.std::_Rb_tree_iterator.880", i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator.880" = type { ptr }
%"struct.std::pair.889" = type { %class.RcString, %"struct.HIR::TraitImpl::ImplEnt.891" }
%"struct.HIR::TraitImpl::ImplEnt.891" = type { i8, %"class.HIR::Function" }
%"struct.std::pair.885" = type <{ %"struct.std::_Rb_tree_iterator.887", i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator.887" = type { ptr }
%"class.std::unique_ptr.903" = type { %"struct.std::__uniq_ptr_data.904" }
%"struct.std::__uniq_ptr_data.904" = type { %"class.std::__uniq_ptr_impl.905" }
%"class.std::__uniq_ptr_impl.905" = type { %"class.std::tuple.906" }
%"class.std::tuple.906" = type { %"struct.std::_Tuple_impl.907" }
%"struct.std::_Tuple_impl.907" = type { %"struct.std::_Head_base.910" }
%"struct.std::_Head_base.910" = type { ptr }
%"class.HIR::TraitImpl" = type { %"class.HIR::GenericParams", %"struct.HIR::PathParams", %"class.HIR::TypeRef", %"class.std::map.846", %"class.std::map.851", %"class.std::map.911", %"class.std::map.856", %"struct.HIR::SimplePath" }
%"class.std::map.911" = type { %"class.std::_Rb_tree.912" }
%"class.std::_Rb_tree.912" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::unique_ptr.927" = type { %"struct.std::__uniq_ptr_data.928" }
%"struct.std::__uniq_ptr_data.928" = type { %"class.std::__uniq_ptr_impl.929" }
%"class.std::__uniq_ptr_impl.929" = type { %"class.std::tuple.930" }
%"class.std::tuple.930" = type { %"struct.std::_Tuple_impl.931" }
%"struct.std::_Tuple_impl.931" = type { %"struct.std::_Head_base.934" }
%"struct.std::_Head_base.934" = type { ptr }
%"class.HIR::MarkerImpl" = type { %"class.HIR::GenericParams", %"struct.HIR::PathParams", i8, %"class.HIR::TypeRef", %"struct.HIR::SimplePath" }
%class.anon.935 = type { ptr }
%"class.std::map.936" = type { %"class.std::_Rb_tree.937" }
%"class.std::_Rb_tree.937" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TypeImpl::VisImplEnt<HIR::Function>>, std::_Select1st<std::pair<const RcString, HIR::TypeImpl::VisImplEnt<HIR::Function>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TypeImpl::VisImplEnt<HIR::Function>>, std::_Select1st<std::pair<const RcString, HIR::TypeImpl::VisImplEnt<HIR::Function>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.941" = type { %"class.std::_Rb_tree.942" }
%"class.std::_Rb_tree.942" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TypeImpl::VisImplEnt<HIR::Constant>>, std::_Select1st<std::pair<const RcString, HIR::TypeImpl::VisImplEnt<HIR::Constant>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TypeImpl::VisImplEnt<HIR::Constant>>, std::_Select1st<std::pair<const RcString, HIR::TypeImpl::VisImplEnt<HIR::Constant>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%class.anon.946 = type { ptr }
%"struct.std::pair.951" = type { %class.RcString, %"struct.HIR::TypeImpl::VisImplEnt" }
%"struct.HIR::TypeImpl::VisImplEnt" = type { %"class.HIR::Publicity", i8, %"class.HIR::Constant" }
%"class.HIR::Publicity" = type { %"class.std::shared_ptr" }
%"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 }
%"struct.std::pair.947" = type <{ %"struct.std::_Rb_tree_iterator.949", i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator.949" = type { ptr }
%class.anon.953 = type { ptr }
%"struct.std::pair.958" = type { %class.RcString, %"struct.HIR::TypeImpl::VisImplEnt.960" }
%"struct.HIR::TypeImpl::VisImplEnt.960" = type { %"class.HIR::Publicity", i8, %"class.HIR::Function" }
%"struct.std::pair.954" = type <{ %"struct.std::_Rb_tree_iterator.956", i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator.956" = type { ptr }
%"class.std::unique_ptr.961" = type { %"struct.std::__uniq_ptr_data.962" }
%"struct.std::__uniq_ptr_data.962" = type { %"class.std::__uniq_ptr_impl.963" }
%"class.std::__uniq_ptr_impl.963" = type { %"class.std::tuple.964" }
%"class.std::tuple.964" = type { %"struct.std::_Tuple_impl.965" }
%"struct.std::_Tuple_impl.965" = type { %"struct.std::_Head_base.968" }
%"struct.std::_Head_base.968" = type { ptr }
%"class.HIR::TypeImpl" = type { %"class.HIR::GenericParams", %"class.HIR::TypeRef", %"class.std::map.936", %"class.std::map.941", %"struct.HIR::SimplePath" }
%"struct.AST::AbsolutePath" = type { %class.RcString, %"class.std::vector" }
%"class.AST::Module" = type { %"struct.AST::AbsolutePath", %"class.std::vector.461", %"class.std::vector.466", %"class.std::vector.471", %"struct.AST::Module::FileInfo", i8, i8, %"class.std::unordered_map.476", %"class.std::unordered_map.476", %"class.std::unordered_map.476", %"class.std::unordered_map.476", %"class.std::vector.490", %"class.std::vector.495", %"class.std::vector.500" }
%"class.std::vector.461" = type { %"struct.std::_Vector_base.462" }
%"struct.std::_Vector_base.462" = 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.466" = type { %"struct.std::_Vector_base.467" }
%"struct.std::_Vector_base.467" = 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.471" = type { %"struct.std::_Vector_base.472" }
%"struct.std::_Vector_base.472" = 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::unordered_map.476" = type { %"class.std::_Hashtable.477" }
%"class.std::_Hashtable.477" = 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.490" = type { %"struct.std::_Vector_base.491" }
%"struct.std::_Vector_base.491" = 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.495" = type { %"struct.std::_Vector_base.496" }
%"struct.std::_Vector_base.496" = 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.500" = type { %"struct.std::_Vector_base.501" }
%"struct.std::_Vector_base.501" = 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.AST::Named" = type { %struct.Span, %"class.AST::AttributeList", %"class.AST::Visibility", %class.RcString, %"class.AST::Item" }
%"class.AST::AttributeList" = type { %"class.std::vector.38" }
%"class.std::vector.38" = type { %"struct.std::_Vector_base.39" }
%"struct.std::_Vector_base.39" = 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::Visibility" = type <{ %"class.std::shared_ptr.2", %"class.std::shared_ptr.5", i32, [4 x i8] }>
%"class.std::shared_ptr.2" = type { %"class.std::__shared_ptr.3" }
%"class.std::__shared_ptr.3" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.5" = type { %"class.std::__shared_ptr.6" }
%"class.std::__shared_ptr.6" = type { ptr, %"class.std::__shared_count" }
%"class.AST::Item" = type { i32, %"union.AST::Item::DataUnion" }
%"union.AST::Item::DataUnion" = type { %"class.AST::Module" }
%struct.Spanned.455 = type { %struct.Span, %"class.AST::Path" }
%"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.59", %"class.std::unique_ptr.75", %"class.std::vector.99" }
%"class.std::unique_ptr.59" = type { %"struct.std::__uniq_ptr_data.60" }
%"struct.std::__uniq_ptr_data.60" = type { %"class.std::__uniq_ptr_impl.61" }
%"class.std::__uniq_ptr_impl.61" = type { %"class.std::tuple.62" }
%"class.std::tuple.62" = type { %"struct.std::_Tuple_impl.63" }
%"struct.std::_Tuple_impl.63" = type { %"struct.std::_Head_base.66" }
%"struct.std::_Head_base.66" = type { ptr }
%"class.std::unique_ptr.75" = type { %"struct.std::__uniq_ptr_data.76" }
%"struct.std::__uniq_ptr_data.76" = type { %"class.std::__uniq_ptr_impl.77" }
%"class.std::__uniq_ptr_impl.77" = type { %"class.std::tuple.78" }
%"class.std::tuple.78" = type { %"struct.std::_Tuple_impl.79" }
%"struct.std::_Tuple_impl.79" = type { %"struct.std::_Head_base.82" }
%"struct.std::_Head_base.82" = type { ptr }
%"class.std::vector.99" = type { %"struct.std::_Vector_base.100" }
%"struct.std::_Vector_base.100" = 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.104", %"struct.AST::PathBinding.105" }
%"struct.AST::PathBinding" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Value" }
%"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.104" = 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.105" = 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 }
%"struct.AST::PathBinding_Type::Data_Trait" = type { ptr, ptr }
%"class.HIR::Trait" = type { %"class.HIR::GenericParams", %"struct.HIR::LifetimeRef", %"class.std::vector.126", i8, %"class.std::unordered_map", %"class.std::unordered_map.317", %"class.std::unordered_multimap", %"class.std::unordered_map.344", i32, %"class.std::vector.126", %"struct.HIR::SimplePath" }
%"struct.HIR::LifetimeRef" = type { i32 }
%"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 }
%"class.std::unordered_map.317" = type { %"class.std::_Hashtable.318" }
%"class.std::_Hashtable.318" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_multimap" = type { %"class.std::_Hashtable.331" }
%"class.std::_Hashtable.331" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.344" = type { %"class.std::_Hashtable.345" }
%"class.std::_Hashtable.345" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.126" = type { %"struct.std::_Vector_base.127" }
%"struct.std::_Vector_base.127" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Impl::ImplItem" = type { %struct.Span, %"class.AST::AttributeList", %"class.AST::Visibility", i8, %class.RcString, %"class.std::unique_ptr.862" }
%"class.std::unique_ptr.862" = type { %"struct.std::__uniq_ptr_data.863" }
%"struct.std::__uniq_ptr_data.863" = type { %"class.std::__uniq_ptr_impl.864" }
%"class.std::__uniq_ptr_impl.864" = type { %"class.std::tuple.865" }
%"class.std::tuple.865" = type { %"struct.std::_Tuple_impl.866" }
%"struct.std::_Tuple_impl.866" = type { %"struct.std::_Head_base.869" }
%"struct.std::_Head_base.869" = type { ptr }
%"class.HIR::Crate" = type { %class.RcString, i32, %"class.HIR::Module", %"class.std::vector.613", %"class.std::vector.618", %"struct.HIR::Crate::ImplGroup", %"class.HIR::InherentCache", %"class.std::map.638", %"class.std::map.643", %"class.std::vector.648", %"struct.HIR::Crate::ImplGroup.653", %"class.std::map.664", %"class.std::map.669", %"class.std::vector", %"class.std::unordered_map.674", %"class.std::vector", %"class.std::unordered_map.693", %"class.std::vector.707", %"class.std::vector.712" }
%"class.HIR::Module" = type { %"class.std::vector.561", %"class.std::unordered_map.566", %"class.std::unordered_map.580", %"class.std::unordered_map.594", %"class.std::vector.608" }
%"class.std::vector.561" = type { %"struct.std::_Vector_base.562" }
%"struct.std::_Vector_base.562" = type { %"struct.std::_Vector_base<HIR::SimplePath, std::allocator<HIR::SimplePath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::SimplePath, std::allocator<HIR::SimplePath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::SimplePath, std::allocator<HIR::SimplePath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::SimplePath, std::allocator<HIR::SimplePath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map.566" = type { %"class.std::_Hashtable.567" }
%"class.std::_Hashtable.567" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.580" = type { %"class.std::_Hashtable.581" }
%"class.std::_Hashtable.581" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.594" = type { %"class.std::_Hashtable.595" }
%"class.std::_Hashtable.595" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.608" = type { %"struct.std::_Vector_base.609" }
%"struct.std::_Vector_base.609" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::Static>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::Static>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::Static>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::Static>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::Static>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::Static>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::Static>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::Static>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.613" = type { %"struct.std::_Vector_base.614" }
%"struct.std::_Vector_base.614" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.618" = type { %"struct.std::_Vector_base.619" }
%"struct.std::_Vector_base.619" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Crate::ImplGroup" = type { %"class.std::map.623", %"class.std::vector.628", %"class.std::vector.628" }
%"class.std::map.623" = type { %"class.std::_Rb_tree.624" }
%"class.std::_Rb_tree.624" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TypeImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TypeImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TypeImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TypeImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.628" = type { %"struct.std::_Vector_base.629" }
%"struct.std::_Vector_base.629" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeImpl>, std::allocator<std::unique_ptr<HIR::TypeImpl>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeImpl>, std::allocator<std::unique_ptr<HIR::TypeImpl>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeImpl>, std::allocator<std::unique_ptr<HIR::TypeImpl>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeImpl>, std::allocator<std::unique_ptr<HIR::TypeImpl>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::InherentCache" = type { %"class.std::map.633" }
%"class.std::map.633" = type { %"class.std::_Rb_tree.634" }
%"class.std::_Rb_tree.634" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::InherentCache::Inner>, std::_Select1st<std::pair<const RcString, HIR::InherentCache::Inner>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::InherentCache::Inner>, std::_Select1st<std::pair<const RcString, HIR::InherentCache::Inner>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.638" = type { %"class.std::_Rb_tree.639" }
%"class.std::_Rb_tree.639" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::TraitImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::TraitImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::TraitImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::TraitImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.643" = type { %"class.std::_Rb_tree.644" }
%"class.std::_Rb_tree.644" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::MarkerImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::MarkerImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::MarkerImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::MarkerImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.648" = type { %"struct.std::_Vector_base.649" }
%"struct.std::_Vector_base.649" = type { %"struct.std::_Vector_base<HIR::GlobalAssembly, std::allocator<HIR::GlobalAssembly>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GlobalAssembly, std::allocator<HIR::GlobalAssembly>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GlobalAssembly, std::allocator<HIR::GlobalAssembly>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GlobalAssembly, std::allocator<HIR::GlobalAssembly>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Crate::ImplGroup.653" = type { %"class.std::map.654", %"class.std::vector.659", %"class.std::vector.659" }
%"class.std::map.654" = type { %"class.std::_Rb_tree.655" }
%"class.std::_Rb_tree.655" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<const HIR::TypeImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<const HIR::TypeImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<const HIR::TypeImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<const HIR::TypeImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.659" = type { %"struct.std::_Vector_base.660" }
%"struct.std::_Vector_base.660" = type { %"struct.std::_Vector_base<const HIR::TypeImpl *, std::allocator<const HIR::TypeImpl *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::TypeImpl *, std::allocator<const HIR::TypeImpl *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::TypeImpl *, std::allocator<const HIR::TypeImpl *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::TypeImpl *, std::allocator<const HIR::TypeImpl *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.664" = type { %"class.std::_Rb_tree.665" }
%"class.std::_Rb_tree.665" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::TraitImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::TraitImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::TraitImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::TraitImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.669" = type { %"class.std::_Rb_tree.670" }
%"class.std::_Rb_tree.670" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::MarkerImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::MarkerImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::MarkerImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::MarkerImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::unordered_map.674" = type { %"class.std::_Hashtable.675" }
%"class.std::_Hashtable.675" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.693" = type { %"class.std::_Hashtable.694" }
%"class.std::_Hashtable.694" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.707" = type { %"struct.std::_Vector_base.708" }
%"struct.std::_Vector_base.708" = type { %"struct.std::_Vector_base<HIR::ExternLibrary, std::allocator<HIR::ExternLibrary>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ExternLibrary, std::allocator<HIR::ExternLibrary>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ExternLibrary, std::allocator<HIR::ExternLibrary>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ExternLibrary, std::allocator<HIR::ExternLibrary>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.712" = type { %"struct.std::_Vector_base.713" }
%"struct.std::_Vector_base.713" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Crate::ImplGroup.892" = type { %"class.std::map.893", %"class.std::vector.898", %"class.std::vector.898" }
%"class.std::map.893" = type { %"class.std::_Rb_tree.894" }
%"class.std::_Rb_tree.894" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TraitImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TraitImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TraitImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TraitImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.898" = type { %"struct.std::_Vector_base.899" }
%"struct.std::_Vector_base.899" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TraitImpl>, std::allocator<std::unique_ptr<HIR::TraitImpl>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TraitImpl>, std::allocator<std::unique_ptr<HIR::TraitImpl>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TraitImpl>, std::allocator<std::unique_ptr<HIR::TraitImpl>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TraitImpl>, std::allocator<std::unique_ptr<HIR::TraitImpl>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.TypeRef = type { %struct.Span, %class.TypeData }
%class.TypeData = type { i32, %"union.TypeData::DataUnion" }
%"union.TypeData::DataUnion" = type { %"struct.TypeData::Data_ErasedType", [32 x i8] }
%"struct.TypeData::Data_ErasedType" = type { %"class.std::vector.83", %"class.std::vector.83", %"class.std::vector.88" }
%"class.std::vector.83" = type { %"struct.std::_Vector_base.84" }
%"struct.std::_Vector_base.84" = type { %"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.88" = type { %"struct.std::_Vector_base.89" }
%"struct.std::_Vector_base.89" = type { %"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Crate::ImplGroup.916" = type { %"class.std::map.917", %"class.std::vector.922", %"class.std::vector.922" }
%"class.std::map.917" = type { %"class.std::_Rb_tree.918" }
%"class.std::_Rb_tree.918" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::MarkerImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::MarkerImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::MarkerImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::MarkerImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.922" = type { %"struct.std::_Vector_base.923" }
%"struct.std::_Vector_base.923" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::MarkerImpl>, std::allocator<std::unique_ptr<HIR::MarkerImpl>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::MarkerImpl>, std::allocator<std::unique_ptr<HIR::MarkerImpl>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::MarkerImpl>, std::allocator<std::unique_ptr<HIR::MarkerImpl>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::MarkerImpl>, std::allocator<std::unique_ptr<HIR::MarkerImpl>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@g_crate_name = external dso_local global %class.RcString, align 8
@.str.5 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.9 = external hidden unnamed_addr constant [17 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@_ZN12_GLOBAL__N_119g_impl_trait_sourceE = external hidden global %"struct.(anonymous namespace)::ImplTraitSource", align 8
@.str.31 = external hidden unnamed_addr constant [26 x i8], align 1
@__FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE = external hidden unnamed_addr constant [22 x i8], align 1
@__PRETTY_FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE = external hidden unnamed_addr constant [66 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [10 x i8], align 1

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

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

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

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI8RcStringSaIS0_EED2Ev(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: mustprogress uwtable
declare dso_local void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind noalias writable sret(%"class.HIR::GenericParams") align 8, ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(120)) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z13LowerHIR_ExprRKN3AST4ExprE(ptr dead_on_unwind noalias writable sret(%"class.HIR::ExprPtr") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #5

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

declare void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #6

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

declare ptr @__cxa_allocate_exception(i64)

declare void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #6

declare void @__cxa_free_exception(ptr)

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z20LowerHIR_GenericPathRK4SpanRKN3AST4PathE17FromAST_PathClassb(ptr dead_on_unwind noalias writable sret(%"class.HIR::GenericPath") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(240), i32 noundef, i1 noundef zeroext) #5

declare noundef zeroext i1 @_Z13debug_enabledv() #6

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #5 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)) #7

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK3AST5Trait9is_markerEv(ptr noundef nonnull align 8 dereferenceable(128)) #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3HIR13GenericParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #0 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE(ptr dead_on_unwind noalias writable sret(%"class.HIR::Function") align 8, ptr noundef byval(%"class.HIR::ItemPath") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(368), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

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

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

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

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

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

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

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

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

; 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 uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_8ItemPathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(56)) #5

; 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 void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) 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)) #4 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(480) %0, ptr noundef nonnull align 8 dereferenceable(944) %1) #5 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"struct.HIR::SimplePath", align 8
  %6 = alloca %class.RcString, align 8
  %7 = alloca %"class.std::vector", align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.809", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.809", align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.841", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.841", align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.809", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.809", align 8
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca %struct.Span, align 8
  %26 = alloca %"class.HIR::GenericParams", align 8
  %27 = alloca %class.TraceLog, align 8
  %28 = alloca %"class.std::function", align 8
  %29 = alloca %class.anon.842, align 8
  %30 = alloca ptr, align 8
  %31 = alloca %struct.Span, align 8
  %32 = alloca %"class.std::function", align 8
  %33 = alloca %class.anon.843, align 8
  %34 = alloca %struct.Span, align 8
  %35 = alloca %"class.std::function", align 8
  %36 = alloca %class.anon.844, align 1
  %37 = alloca i8, align 1
  %38 = alloca %"class.HIR::GenericPath", align 8
  %39 = alloca %"struct.HIR::SimplePath", align 8
  %40 = alloca %"struct.HIR::PathParams", align 8
  %41 = alloca %"class.HIR::TypeRef", align 8
  %42 = alloca %"class.HIR::ItemPath", align 8
  %43 = alloca %"class.std::map.846", align 8
  %44 = alloca %"class.std::map.851", align 8
  %45 = alloca %"class.std::map.856", align 8
  %46 = alloca ptr, align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.861", align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.861", align 8
  %49 = alloca ptr, align 8
  %50 = alloca %"class.HIR::ItemPath", align 8
  %51 = alloca i8, align 1
  %52 = alloca ptr, align 8
  %53 = alloca %struct.Span, align 8
  %54 = alloca %"class.std::function", align 8
  %55 = alloca %class.anon.870, align 8
  %56 = alloca i8, align 1
  %57 = alloca ptr, align 8
  %58 = alloca i8, align 1
  %59 = alloca ptr, align 8
  %60 = alloca i8, align 1
  %61 = alloca ptr, align 8
  %62 = alloca %"struct.std::pair.875", align 8
  %63 = alloca %"struct.HIR::TraitImpl::ImplEnt", align 8
  %64 = alloca %"class.HIR::GenericParams", align 8
  %65 = alloca %"class.HIR::TypeRef", align 8
  %66 = alloca %"class.HIR::ExprPtr", align 8
  %67 = alloca %"struct.std::pair.871", align 8
  %68 = alloca ptr, align 8
  %69 = alloca %struct.Span, align 8
  %70 = alloca %"class.std::function", align 8
  %71 = alloca %class.anon.877, align 8
  %72 = alloca i8, align 1
  %73 = alloca ptr, align 8
  %74 = alloca %"class.HIR::GenericParams", align 8
  %75 = alloca %"class.HIR::ItemPath", align 8
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca %"class.std::__cxx11::basic_string", align 8
  %80 = alloca %"class.std::allocator.56", align 1
  %81 = alloca %"class.std::__cxx11::basic_string", align 8
  %82 = alloca %"class.HIR::ItemPath", align 8
  %83 = alloca %"struct.(anonymous namespace)::ImplTraitSource", align 8
  %84 = alloca %"struct.std::pair.882", align 8
  %85 = alloca %"struct.HIR::TraitImpl::ImplEnt.884", align 8
  %86 = alloca %"struct.std::pair.878", align 8
  %87 = alloca %"struct.(anonymous namespace)::ImplTraitSource", align 8
  %88 = alloca i8, align 1
  %89 = alloca ptr, align 8
  %90 = alloca %"struct.std::pair.889", align 8
  %91 = alloca %"struct.HIR::TraitImpl::ImplEnt.891", align 8
  %92 = alloca %"class.HIR::ItemPath", align 8
  %93 = alloca %"struct.std::pair.885", align 8
  %94 = alloca %"class.std::unique_ptr.903", align 8
  %95 = alloca %"class.HIR::TraitImpl", align 8
  %96 = alloca %"class.HIR::TypeRef", align 8
  %97 = alloca %"class.std::unique_ptr.927", align 8
  %98 = alloca %"class.HIR::MarkerImpl", align 8
  %99 = alloca %"class.HIR::TypeRef", align 8
  %100 = alloca %"class.HIR::ItemPath", align 8
  %101 = alloca %class.anon.935, align 8
  %102 = alloca %"class.std::map.936", align 8
  %103 = alloca %"class.std::map.941", align 8
  %104 = alloca ptr, align 8
  %105 = alloca %"class.__gnu_cxx::__normal_iterator.861", align 8
  %106 = alloca %"class.__gnu_cxx::__normal_iterator.861", align 8
  %107 = alloca ptr, align 8
  %108 = alloca %"class.HIR::ItemPath", align 8
  %109 = alloca i8, align 1
  %110 = alloca ptr, align 8
  %111 = alloca %struct.Span, align 8
  %112 = alloca %"class.std::function", align 8
  %113 = alloca %class.anon.946, align 8
  %114 = alloca i8, align 1
  %115 = alloca ptr, align 8
  %116 = alloca i8, align 1
  %117 = alloca ptr, align 8
  %118 = alloca i8, align 1
  %119 = alloca ptr, align 8
  %120 = alloca %"struct.std::pair.951", align 8
  %121 = alloca %"struct.HIR::TypeImpl::VisImplEnt", align 8
  %122 = alloca %"class.HIR::GenericParams", align 8
  %123 = alloca %"class.HIR::TypeRef", align 8
  %124 = alloca %"class.HIR::ExprPtr", align 8
  %125 = alloca i1, align 1
  %126 = alloca %"struct.std::pair.947", align 8
  %127 = alloca ptr, align 8
  %128 = alloca %struct.Span, align 8
  %129 = alloca %"class.std::function", align 8
  %130 = alloca %class.anon.953, align 8
  %131 = alloca i8, align 1
  %132 = alloca ptr, align 8
  %133 = alloca %"struct.std::pair.958", align 8
  %134 = alloca %"struct.HIR::TypeImpl::VisImplEnt.960", align 8
  %135 = alloca %"class.HIR::ItemPath", align 8
  %136 = alloca %"struct.std::pair.954", align 8
  %137 = alloca %"class.std::unique_ptr.961", align 8
  %138 = alloca %"class.HIR::TypeImpl", align 8
  %139 = alloca ptr, align 8
  %140 = alloca %"class.__gnu_cxx::__normal_iterator.809", align 8
  %141 = alloca %"class.__gnu_cxx::__normal_iterator.809", align 8
  %142 = alloca ptr, align 8
  %143 = alloca ptr, align 8
  %144 = alloca %"class.HIR::GenericParams", align 8
  %145 = alloca %"class.HIR::TypeRef", align 8
  %146 = alloca %"class.HIR::GenericPath", align 8
  %147 = alloca %"struct.HIR::SimplePath", align 8
  %148 = alloca %"struct.HIR::PathParams", align 8
  %149 = alloca %"class.std::unique_ptr.927", align 8
  %150 = alloca %"class.HIR::MarkerImpl", align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  br label %151

151:                                              ; preds = %2
  %152 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %152, label %153, label %161

153:                                              ; preds = %151
  %154 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %155 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %154, ptr noundef @__FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE)
  %156 = load ptr, ptr %3, align 8, !tbaa !5
  %157 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %156)
  %158 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(8) %155, ptr noundef nonnull align 8 dereferenceable(32) %157)
  %159 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %158, ptr noundef @_ZSt3decRSt8ios_base)
  %160 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %159, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %161

161:                                              ; preds = %153, %151
  br label %162

162:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #10
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) @g_crate_name)
  %163 = load ptr, ptr %3, align 8, !tbaa !5
  %164 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %163)
          to label %165 unwind label %180

165:                                              ; preds = %162
  %166 = getelementptr inbounds %"struct.AST::AbsolutePath", ptr %164, i32 0, i32 1
  invoke void @_ZNSt6vectorI8RcStringSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %166)
          to label %167 unwind label %180

167:                                              ; preds = %165
  invoke void @_ZN3HIR10SimplePathC2E8RcStringSt6vectorIS1_SaIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %6, ptr noundef %7)
          to label %168 unwind label %184

168:                                              ; preds = %167
  call void @_ZNSt6vectorI8RcStringSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #10
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #10
  %169 = load ptr, ptr %3, align 8, !tbaa !5
  %170 = getelementptr inbounds %"class.AST::Module", ptr %169, i32 0, i32 1
  store ptr %170, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #10
  %171 = load ptr, ptr %10, align 8, !tbaa !5
  %172 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %171) #10
  %173 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.809", ptr %11, i32 0, i32 0
  store ptr %172, ptr %173, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #10
  %174 = load ptr, ptr %10, align 8, !tbaa !5
  %175 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %174) #10
  %176 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.809", ptr %12, i32 0, i32 0
  store ptr %175, ptr %176, align 8
  br label %177

177:                                              ; preds = %207, %168
  %178 = 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) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #10
  br i1 %178, label %189, label %179

179:                                              ; preds = %177
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #10
  br label %209

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

184:                                              ; preds = %167
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %8, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %9, align 4
  call void @_ZNSt6vectorI8RcStringSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #10
  br label %188

188:                                              ; preds = %184, %180
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #10
  br label %1606

189:                                              ; preds = %177
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #10
  %190 = 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) %11) #10
  store ptr %190, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #10
  %191 = load ptr, ptr %13, align 8, !tbaa !5
  %192 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %191) #10
  %193 = getelementptr inbounds %"struct.AST::Named", ptr %192, i32 0, i32 4
  %194 = invoke noundef ptr @_ZN3AST4Item10opt_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488) %193)
          to label %195 unwind label %202

195:                                              ; preds = %189
  store ptr %194, ptr %14, align 8, !tbaa !5
  %196 = load ptr, ptr %14, align 8, !tbaa !5
  %197 = icmp ne ptr %196, null
  br i1 %197, label %198, label %206

198:                                              ; preds = %195
  %199 = load ptr, ptr %14, align 8, !tbaa !5
  %200 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(480) %199, ptr noundef nonnull align 8 dereferenceable(944) %200)
          to label %201 unwind label %202

201:                                              ; preds = %198
  br label %206

202:                                              ; preds = %198, %189
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %8, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #10
  br label %1605

206:                                              ; preds = %201, %195
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #10
  br label %207

207:                                              ; preds = %206
  %208 = 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) %11) #10
  br label %177

209:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  %210 = load ptr, ptr %3, align 8, !tbaa !5
  %211 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST6Module9anon_modsEv(ptr noundef nonnull align 8 dereferenceable(480) %210)
          to label %212 unwind label %222

212:                                              ; preds = %209
  store ptr %211, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  %213 = load ptr, ptr %15, align 8, !tbaa !5
  %214 = call ptr @_ZNKSt6vectorISt10shared_ptrIN3AST6ModuleEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %213) #10
  %215 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.841", ptr %16, i32 0, i32 0
  store ptr %214, ptr %215, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #10
  %216 = load ptr, ptr %15, align 8, !tbaa !5
  %217 = call ptr @_ZNKSt6vectorISt10shared_ptrIN3AST6ModuleEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %216) #10
  %218 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.841", ptr %17, i32 0, i32 0
  store ptr %217, ptr %218, align 8
  br label %219

219:                                              ; preds = %240, %212
  %220 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10shared_ptrIN3AST6ModuleEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #10
  br i1 %220, label %226, label %221

221:                                              ; preds = %219
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  br label %243

222:                                              ; preds = %209
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %8, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %9, align 4
  br label %242

226:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #10
  %227 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10shared_ptrIN3AST6ModuleEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  store ptr %227, ptr %18, align 8, !tbaa !5
  %228 = load ptr, ptr %18, align 8, !tbaa !5
  %229 = call noundef zeroext i1 @_ZNKSt12__shared_ptrIN3AST6ModuleELN9__gnu_cxx12_Lock_policyE2EEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %228) #10
  br i1 %229, label %230, label %239

230:                                              ; preds = %226
  %231 = load ptr, ptr %18, align 8, !tbaa !5
  %232 = call noundef nonnull align 8 dereferenceable(480) ptr @_ZNKSt19__shared_ptr_accessIN3AST6ModuleELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %231) #10
  %233 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(480) %232, ptr noundef nonnull align 8 dereferenceable(944) %233)
          to label %234 unwind label %235

234:                                              ; preds = %230
  br label %239

235:                                              ; preds = %230
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %8, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  br label %242

239:                                              ; preds = %234, %226
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  br label %240

240:                                              ; preds = %239
  %241 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10shared_ptrIN3AST6ModuleEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  br label %219

242:                                              ; preds = %235, %222
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  br label %1605

243:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  %244 = load ptr, ptr %3, align 8, !tbaa !5
  %245 = getelementptr inbounds %"class.AST::Module", ptr %244, i32 0, i32 1
  store ptr %245, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #10
  %246 = load ptr, ptr %19, align 8, !tbaa !5
  %247 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %246) #10
  %248 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.809", ptr %20, i32 0, i32 0
  store ptr %247, ptr %248, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #10
  %249 = load ptr, ptr %19, align 8, !tbaa !5
  %250 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %249) #10
  %251 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.809", ptr %21, i32 0, i32 0
  store ptr %250, ptr %251, align 8
  br label %252

252:                                              ; preds = %1465, %243
  %253 = 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) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #10
  br i1 %253, label %255, label %254

254:                                              ; preds = %252
  store i32 8, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  br label %1473

255:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  %256 = 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) %20) #10
  store ptr %256, ptr %23, align 8, !tbaa !5
  %257 = load ptr, ptr %23, align 8, !tbaa !5
  %258 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %257) #10
  %259 = getelementptr inbounds %"struct.AST::Named", ptr %258, i32 0, i32 4
  %260 = invoke noundef zeroext i1 @_ZNK3AST4Item7is_ImplEv(ptr noundef nonnull align 8 dereferenceable(488) %259)
          to label %261 unwind label %263

261:                                              ; preds = %255
  br i1 %260, label %267, label %262

262:                                              ; preds = %261
  store i32 9, ptr %22, align 4
  br label %1462

263:                                              ; preds = %255
  %264 = landingpad { ptr, i32 }
          cleanup
  %265 = extractvalue { ptr, i32 } %264, 0
  store ptr %265, ptr %8, align 8
  %266 = extractvalue { ptr, i32 } %264, 1
  store i32 %266, ptr %9, align 4
  br label %1472

267:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  %268 = load ptr, ptr %23, align 8, !tbaa !5
  %269 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %268) #10
  %270 = getelementptr inbounds %"struct.AST::Named", ptr %269, i32 0, i32 4
  %271 = invoke noundef nonnull align 8 dereferenceable(472) ptr @_ZN3AST4Item7as_ImplEv(ptr noundef nonnull align 8 dereferenceable(488) %270)
          to label %272 unwind label %316

272:                                              ; preds = %267
  store ptr %271, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #10
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %273 unwind label %320

273:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 96, ptr %26) #10
  %274 = load ptr, ptr %24, align 8, !tbaa !5
  %275 = invoke noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %274)
          to label %276 unwind label %324

276:                                              ; preds = %273
  %277 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST7ImplDef6paramsEv(ptr noundef nonnull align 8 dereferenceable(448) %275)
          to label %278 unwind label %324

278:                                              ; preds = %276
  invoke void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind writable sret(%"class.HIR::GenericParams") align 8 %26, ptr noundef nonnull align 8 dereferenceable(48) %277, ptr noundef null)
          to label %279 unwind label %324

279:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 40, ptr %27) #10
  %280 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %281 unwind label %328

281:                                              ; preds = %279
  %282 = zext i1 %280 to i64
  %283 = select i1 %280, ptr @__FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %284 = getelementptr inbounds %class.anon.842, ptr %29, i32 0, i32 0
  %285 = load ptr, ptr %24, align 8, !tbaa !5
  store ptr %285, ptr %284, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %27, ptr noundef %283, ptr noundef %28)
          to label %286 unwind label %332

286:                                              ; preds = %281
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  %287 = load ptr, ptr %24, align 8, !tbaa !5
  %288 = invoke noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %287)
          to label %289 unwind label %336

289:                                              ; preds = %286
  %290 = invoke noundef nonnull align 8 dereferenceable(248) ptr @_ZNK3AST7ImplDef5traitEv(ptr noundef nonnull align 8 dereferenceable(448) %288)
          to label %291 unwind label %336

291:                                              ; preds = %289
  %292 = getelementptr inbounds %struct.Spanned.455, ptr %290, i32 0, i32 1
  %293 = invoke noundef zeroext i1 @_ZNK3AST4Path8is_validEv(ptr noundef nonnull align 8 dereferenceable(240) %292)
          to label %294 unwind label %336

294:                                              ; preds = %291
  br i1 %293, label %295, label %1089

295:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %296 = load ptr, ptr %24, align 8, !tbaa !5
  %297 = invoke noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %296)
          to label %298 unwind label %340

298:                                              ; preds = %295
  %299 = invoke noundef nonnull align 8 dereferenceable(248) ptr @_ZNK3AST7ImplDef5traitEv(ptr noundef nonnull align 8 dereferenceable(448) %297)
          to label %300 unwind label %340

300:                                              ; preds = %298
  %301 = getelementptr inbounds %struct.Spanned.455, ptr %299, i32 0, i32 1
  %302 = getelementptr inbounds %"class.AST::Path", ptr %301, i32 0, i32 2
  %303 = getelementptr inbounds %"struct.AST::Path::Bindings", ptr %302, i32 0, i32 1
  %304 = getelementptr inbounds %"struct.AST::PathBinding.104", ptr %303, i32 0, i32 1
  store ptr %304, ptr %30, align 8, !tbaa !5
  br label %305

305:                                              ; preds = %300
  %306 = load ptr, ptr %30, align 8, !tbaa !5
  %307 = invoke noundef zeroext i1 @_ZNK3AST16PathBinding_Type8is_TraitEv(ptr noundef nonnull align 8 dereferenceable(32) %306)
          to label %308 unwind label %340

308:                                              ; preds = %305
  br i1 %307, label %357, label %309

309:                                              ; preds = %308
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %310 unwind label %344

310:                                              ; preds = %309
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  %311 = getelementptr inbounds %class.anon.843, ptr %33, i32 0, i32 0
  %312 = load ptr, ptr %24, align 8, !tbaa !5
  store ptr %312, ptr %311, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef %32)
          to label %313 unwind label %348

313:                                              ; preds = %310
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  %314 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %314, ptr noundef @.str.9)
          to label %315 unwind label %353

315:                                              ; preds = %313
  invoke void @__cxa_throw(ptr %314, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1612 unwind label %340

316:                                              ; preds = %267
  %317 = landingpad { ptr, i32 }
          cleanup
  %318 = extractvalue { ptr, i32 } %317, 0
  store ptr %318, ptr %8, align 8
  %319 = extractvalue { ptr, i32 } %317, 1
  store i32 %319, ptr %9, align 4
  br label %1471

320:                                              ; preds = %272
  %321 = landingpad { ptr, i32 }
          cleanup
  %322 = extractvalue { ptr, i32 } %321, 0
  store ptr %322, ptr %8, align 8
  %323 = extractvalue { ptr, i32 } %321, 1
  store i32 %323, ptr %9, align 4
  br label %1470

324:                                              ; preds = %278, %276, %273
  %325 = landingpad { ptr, i32 }
          cleanup
  %326 = extractvalue { ptr, i32 } %325, 0
  store ptr %326, ptr %8, align 8
  %327 = extractvalue { ptr, i32 } %325, 1
  store i32 %327, ptr %9, align 4
  br label %1469

328:                                              ; preds = %279
  %329 = landingpad { ptr, i32 }
          cleanup
  %330 = extractvalue { ptr, i32 } %329, 0
  store ptr %330, ptr %8, align 8
  %331 = extractvalue { ptr, i32 } %329, 1
  store i32 %331, ptr %9, align 4
  br label %1468

332:                                              ; preds = %281
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %8, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %9, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %1468

336:                                              ; preds = %291, %289, %286
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %8, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %9, align 4
  br label %1467

340:                                              ; preds = %378, %367, %360, %315, %305, %298, %295
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %8, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %9, align 4
  br label %1088

344:                                              ; preds = %309
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %8, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %9, align 4
  br label %352

348:                                              ; preds = %310
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %8, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %9, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #10
  br label %352

352:                                              ; preds = %348, %344
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  br label %1088

353:                                              ; preds = %313
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %8, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %9, align 4
  call void @__cxa_free_exception(ptr %314) #10
  br label %1088

357:                                              ; preds = %308
  br label %358

358:                                              ; preds = %357
  br label %359

359:                                              ; preds = %358
  br label %360

360:                                              ; preds = %359
  %361 = load ptr, ptr %30, align 8, !tbaa !5
  %362 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST16PathBinding_Type8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(32) %361)
          to label %363 unwind label %340

363:                                              ; preds = %360
  %364 = getelementptr inbounds %"struct.AST::PathBinding_Type::Data_Trait", ptr %362, i32 0, i32 0
  %365 = load ptr, ptr %364, align 8, !tbaa !11
  %366 = icmp ne ptr %365, null
  br i1 %366, label %392, label %367

367:                                              ; preds = %363
  %368 = load ptr, ptr %30, align 8, !tbaa !5
  %369 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST16PathBinding_Type8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(32) %368)
          to label %370 unwind label %340

370:                                              ; preds = %367
  %371 = getelementptr inbounds %"struct.AST::PathBinding_Type::Data_Trait", ptr %369, i32 0, i32 1
  %372 = load ptr, ptr %371, align 8, !tbaa !13
  %373 = icmp ne ptr %372, null
  br i1 %373, label %392, label %374

374:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %375 unwind label %379

375:                                              ; preds = %374
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 1 dereferenceable(1) %36) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef %35)
          to label %376 unwind label %383

376:                                              ; preds = %375
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  %377 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %377, ptr noundef @.str.9)
          to label %378 unwind label %388

378:                                              ; preds = %376
  invoke void @__cxa_throw(ptr %377, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1612 unwind label %340

379:                                              ; preds = %374
  %380 = landingpad { ptr, i32 }
          cleanup
  %381 = extractvalue { ptr, i32 } %380, 0
  store ptr %381, ptr %8, align 8
  %382 = extractvalue { ptr, i32 } %380, 1
  store i32 %382, ptr %9, align 4
  br label %387

383:                                              ; preds = %375
  %384 = landingpad { ptr, i32 }
          cleanup
  %385 = extractvalue { ptr, i32 } %384, 0
  store ptr %385, ptr %8, align 8
  %386 = extractvalue { ptr, i32 } %384, 1
  store i32 %386, ptr %9, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #10
  br label %387

387:                                              ; preds = %383, %379
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  br label %1088

388:                                              ; preds = %376
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %8, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %9, align 4
  call void @__cxa_free_exception(ptr %377) #10
  br label %1088

392:                                              ; preds = %370, %363
  br label %393

393:                                              ; preds = %392
  br label %394

394:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #10
  %395 = load ptr, ptr %30, align 8, !tbaa !5
  %396 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST16PathBinding_Type8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(32) %395)
          to label %397 unwind label %461

397:                                              ; preds = %394
  %398 = getelementptr inbounds %"struct.AST::PathBinding_Type::Data_Trait", ptr %396, i32 0, i32 0
  %399 = load ptr, ptr %398, align 8, !tbaa !11
  %400 = icmp ne ptr %399, null
  br i1 %400, label %401, label %409

401:                                              ; preds = %397
  %402 = load ptr, ptr %30, align 8, !tbaa !5
  %403 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST16PathBinding_Type8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(32) %402)
          to label %404 unwind label %461

404:                                              ; preds = %401
  %405 = getelementptr inbounds %"struct.AST::PathBinding_Type::Data_Trait", ptr %403, i32 0, i32 0
  %406 = load ptr, ptr %405, align 8, !tbaa !11
  %407 = invoke noundef zeroext i1 @_ZNK3AST5Trait9is_markerEv(ptr noundef nonnull align 8 dereferenceable(128) %406)
          to label %408 unwind label %461

408:                                              ; preds = %404
  br label %418

409:                                              ; preds = %397
  %410 = load ptr, ptr %30, align 8, !tbaa !5
  %411 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST16PathBinding_Type8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(32) %410)
          to label %412 unwind label %461

412:                                              ; preds = %409
  %413 = getelementptr inbounds %"struct.AST::PathBinding_Type::Data_Trait", ptr %411, i32 0, i32 1
  %414 = load ptr, ptr %413, align 8, !tbaa !13
  %415 = getelementptr inbounds %"class.HIR::Trait", ptr %414, i32 0, i32 3
  %416 = load i8, ptr %415, align 8, !tbaa !14, !range !53, !noundef !54
  %417 = trunc i8 %416 to i1
  br label %418

418:                                              ; preds = %412, %408
  %419 = phi i1 [ %407, %408 ], [ %417, %412 ]
  %420 = zext i1 %419 to i8
  store i8 %420, ptr %37, align 1, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #10
  %421 = load ptr, ptr %24, align 8, !tbaa !5
  %422 = invoke noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %421)
          to label %423 unwind label %465

423:                                              ; preds = %418
  %424 = invoke noundef nonnull align 8 dereferenceable(248) ptr @_ZNK3AST7ImplDef5traitEv(ptr noundef nonnull align 8 dereferenceable(448) %422)
          to label %425 unwind label %465

425:                                              ; preds = %423
  %426 = getelementptr inbounds %struct.Spanned.455, ptr %424, i32 0, i32 0
  %427 = load ptr, ptr %24, align 8, !tbaa !5
  %428 = invoke noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %427)
          to label %429 unwind label %465

429:                                              ; preds = %425
  %430 = invoke noundef nonnull align 8 dereferenceable(248) ptr @_ZNK3AST7ImplDef5traitEv(ptr noundef nonnull align 8 dereferenceable(448) %428)
          to label %431 unwind label %465

431:                                              ; preds = %429
  %432 = getelementptr inbounds %struct.Spanned.455, ptr %430, i32 0, i32 1
  invoke void @_Z20LowerHIR_GenericPathRK4SpanRKN3AST4PathE17FromAST_PathClassb(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %38, ptr noundef nonnull align 8 dereferenceable(8) %426, ptr noundef nonnull align 8 dereferenceable(240) %432, i32 noundef 0, i1 noundef zeroext false)
          to label %433 unwind label %465

433:                                              ; preds = %431
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #10
  %434 = getelementptr inbounds %"class.HIR::GenericPath", ptr %38, i32 0, i32 0
  invoke void @_ZN3HIR10SimplePathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %434)
          to label %435 unwind label %469

435:                                              ; preds = %433
  call void @llvm.lifetime.start.p0(i64 24, ptr %40) #10
  %436 = getelementptr inbounds %"class.HIR::GenericPath", ptr %38, i32 0, i32 1
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %40, ptr noundef nonnull align 8 dereferenceable(24) %436)
          to label %437 unwind label %473

437:                                              ; preds = %435
  %438 = load i8, ptr %37, align 1, !tbaa !55, !range !53, !noundef !54
  %439 = trunc i8 %438 to i1
  br i1 %439, label %1011, label %440

440:                                              ; preds = %437
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #10
  %441 = load ptr, ptr %24, align 8, !tbaa !5
  %442 = invoke noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %441)
          to label %443 unwind label %477

443:                                              ; preds = %440
  %444 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST7ImplDef4typeEv(ptr noundef nonnull align 8 dereferenceable(448) %442)
          to label %445 unwind label %477

445:                                              ; preds = %443
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %41, ptr noundef nonnull align 8 dereferenceable(120) %444)
          to label %446 unwind label %477

446:                                              ; preds = %445
  call void @llvm.lifetime.start.p0(i64 56, ptr %42) #10
  invoke void @_ZN3HIR8ItemPathC2ERKNS_7TypeRefERKNS_10SimplePathERKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(56) %42, ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(24) %40)
          to label %447 unwind label %481

447:                                              ; preds = %446
  br label %448

448:                                              ; preds = %447
  %449 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %450 unwind label %481

450:                                              ; preds = %448
  br i1 %449, label %451, label %485

451:                                              ; preds = %450
  %452 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %453 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %452, ptr noundef @__FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE)
          to label %454 unwind label %481

454:                                              ; preds = %451
  %455 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_8ItemPathE(ptr noundef nonnull align 8 dereferenceable(8) %453, ptr noundef nonnull align 8 dereferenceable(56) %42)
          to label %456 unwind label %481

456:                                              ; preds = %454
  %457 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %455, ptr noundef @_ZSt3decRSt8ios_base)
          to label %458 unwind label %481

458:                                              ; preds = %456
  %459 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %457, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %460 unwind label %481

460:                                              ; preds = %458
  br label %485

461:                                              ; preds = %409, %404, %401, %394
  %462 = landingpad { ptr, i32 }
          cleanup
  %463 = extractvalue { ptr, i32 } %462, 0
  store ptr %463, ptr %8, align 8
  %464 = extractvalue { ptr, i32 } %462, 1
  store i32 %464, ptr %9, align 4
  br label %1087

465:                                              ; preds = %431, %429, %425, %423, %418
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %8, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %9, align 4
  br label %1086

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

473:                                              ; preds = %435
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %8, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %9, align 4
  br label %1084

477:                                              ; preds = %445, %443, %440
  %478 = landingpad { ptr, i32 }
          cleanup
  %479 = extractvalue { ptr, i32 } %478, 0
  store ptr %479, ptr %8, align 8
  %480 = extractvalue { ptr, i32 } %478, 1
  store i32 %480, ptr %9, align 4
  br label %1010

481:                                              ; preds = %458, %456, %454, %451, %448, %446
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %8, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %9, align 4
  br label %1009

485:                                              ; preds = %460, %450
  br label %486

486:                                              ; preds = %485
  br label %487

487:                                              ; preds = %486
  call void @llvm.lifetime.start.p0(i64 48, ptr %43) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %43) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr %44) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %44) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr %45) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_7TypeRefEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %45) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #10
  %488 = load ptr, ptr %24, align 8, !tbaa !5
  %489 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST4Impl5itemsEv(ptr noundef nonnull align 8 dereferenceable(472) %488)
          to label %490 unwind label %500

490:                                              ; preds = %487
  store ptr %489, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #10
  %491 = load ptr, ptr %46, align 8, !tbaa !5
  %492 = call ptr @_ZNKSt6vectorIN3AST4Impl8ImplItemESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %491) #10
  %493 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.861", ptr %47, i32 0, i32 0
  store ptr %492, ptr %493, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #10
  %494 = load ptr, ptr %46, align 8, !tbaa !5
  %495 = call ptr @_ZNKSt6vectorIN3AST4Impl8ImplItemESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %494) #10
  %496 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.861", ptr %48, i32 0, i32 0
  store ptr %495, ptr %496, align 8
  br label %497

497:                                              ; preds = %957, %490
  %498 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %48) #10
  br i1 %498, label %504, label %499

499:                                              ; preds = %497
  store i32 16, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  br label %961

500:                                              ; preds = %487
  %501 = landingpad { ptr, i32 }
          cleanup
  %502 = extractvalue { ptr, i32 } %501, 0
  store ptr %502, ptr %8, align 8
  %503 = extractvalue { ptr, i32 } %501, 1
  store i32 %503, ptr %9, align 4
  br label %960

504:                                              ; preds = %497
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  %505 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #10
  store ptr %505, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 56, ptr %50) #10
  %506 = load ptr, ptr %49, align 8, !tbaa !5
  %507 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %506, i32 0, i32 4
  %508 = invoke noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %507)
          to label %509 unwind label %515

509:                                              ; preds = %504
  invoke void @_ZN3HIR8ItemPathC2ERKS0_PKc(ptr noundef nonnull align 8 dereferenceable(56) %50, ptr noundef nonnull align 8 dereferenceable(56) %42, ptr noundef %508)
          to label %510 unwind label %515

510:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #10
  store i8 1, ptr %51, align 1, !tbaa !55
  br label %511

511:                                              ; preds = %955, %510
  %512 = load i8, ptr %51, align 1, !tbaa !55, !range !53, !noundef !54
  %513 = trunc i8 %512 to i1
  br i1 %513, label %519, label %514

514:                                              ; preds = %511
  store i32 18, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #10
  br label %956

515:                                              ; preds = %509, %504
  %516 = landingpad { ptr, i32 }
          cleanup
  %517 = extractvalue { ptr, i32 } %516, 0
  store ptr %517, ptr %8, align 8
  %518 = extractvalue { ptr, i32 } %516, 1
  store i32 %518, ptr %9, align 4
  br label %959

519:                                              ; preds = %511
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #10
  %520 = load ptr, ptr %49, align 8, !tbaa !5
  %521 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %520, i32 0, i32 5
  %522 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %521) #10
  store ptr %522, ptr %52, align 8, !tbaa !5
  br label %523

523:                                              ; preds = %952, %519
  %524 = load i8, ptr %51, align 1, !tbaa !55, !range !53, !noundef !54
  %525 = trunc i8 %524 to i1
  br i1 %525, label %527, label %526

526:                                              ; preds = %523
  store i32 21, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  br label %954

527:                                              ; preds = %523
  %528 = load ptr, ptr %52, align 8, !tbaa !5
  %529 = invoke noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %528)
          to label %530 unwind label %531

530:                                              ; preds = %527
  switch i32 %529, label %536 [
    i32 0, label %535
    i32 1, label %561
    i32 2, label %584
    i32 18, label %607
    i32 11, label %720
    i32 17, label %873
  ]

531:                                              ; preds = %545, %527
  %532 = landingpad { ptr, i32 }
          cleanup
  %533 = extractvalue { ptr, i32 } %532, 0
  store ptr %533, ptr %8, align 8
  %534 = extractvalue { ptr, i32 } %532, 1
  store i32 %534, ptr %9, align 4
  br label %953

535:                                              ; preds = %530
  call void @__assert_fail(ptr noundef @.str.7, ptr noundef @.str.5, i32 noundef 2124, ptr noundef @__PRETTY_FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE) #12
  unreachable

536:                                              ; preds = %530
  br label %537

537:                                              ; preds = %536
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #10
  %538 = load ptr, ptr %49, align 8, !tbaa !5
  %539 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %538, i32 0, i32 0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %539)
          to label %540 unwind label %546

540:                                              ; preds = %537
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #10
  %541 = getelementptr inbounds %class.anon.870, ptr %55, i32 0, i32 0
  %542 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %542, ptr %541, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 8 dereferenceable(8) %55) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef %54)
          to label %543 unwind label %550

543:                                              ; preds = %540
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  %544 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %544, ptr noundef @.str.9)
          to label %545 unwind label %555

545:                                              ; preds = %543
  invoke void @__cxa_throw(ptr %544, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1612 unwind label %531

546:                                              ; preds = %537
  %547 = landingpad { ptr, i32 }
          cleanup
  %548 = extractvalue { ptr, i32 } %547, 0
  store ptr %548, ptr %8, align 8
  %549 = extractvalue { ptr, i32 } %547, 1
  store i32 %549, ptr %9, align 4
  br label %554

550:                                              ; preds = %540
  %551 = landingpad { ptr, i32 }
          cleanup
  %552 = extractvalue { ptr, i32 } %551, 0
  store ptr %552, ptr %8, align 8
  %553 = extractvalue { ptr, i32 } %551, 1
  store i32 %553, ptr %9, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #10
  br label %554

554:                                              ; preds = %550, %546
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  br label %953

555:                                              ; preds = %543
  %556 = landingpad { ptr, i32 }
          cleanup
  %557 = extractvalue { ptr, i32 } %556, 0
  store ptr %557, ptr %8, align 8
  %558 = extractvalue { ptr, i32 } %556, 1
  store i32 %558, ptr %9, align 4
  call void @__cxa_free_exception(ptr %544) #10
  br label %953

559:                                              ; No predecessors!
  br label %560

560:                                              ; preds = %559
  br label %951

561:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #10
  store i8 1, ptr %56, align 1, !tbaa !55
  br label %562

562:                                              ; preds = %582, %561
  %563 = load i8, ptr %56, align 1, !tbaa !55, !range !53, !noundef !54
  %564 = trunc i8 %563 to i1
  br i1 %564, label %566, label %565

565:                                              ; preds = %562
  store i32 27, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #10
  br label %583

566:                                              ; preds = %562
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #10
  %567 = load ptr, ptr %52, align 8, !tbaa !5
  %568 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN3AST4Item7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(488) %567)
          to label %569 unwind label %575

569:                                              ; preds = %566
  store ptr %568, ptr %57, align 8, !tbaa !5
  br label %570

570:                                              ; preds = %580, %569
  %571 = load ptr, ptr %57, align 8, !tbaa !5
  %572 = load i8, ptr %56, align 1, !tbaa !55, !range !53, !noundef !54
  %573 = trunc i8 %572 to i1
  br i1 %573, label %579, label %574

574:                                              ; preds = %570
  store i32 30, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #10
  br label %581

575:                                              ; preds = %566
  %576 = landingpad { ptr, i32 }
          cleanup
  %577 = extractvalue { ptr, i32 } %576, 0
  store ptr %577, ptr %8, align 8
  %578 = extractvalue { ptr, i32 } %576, 1
  store i32 %578, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #10
  br label %953

579:                                              ; preds = %570
  br label %580

580:                                              ; preds = %579
  store i8 0, ptr %56, align 1, !tbaa !55
  br label %570, !llvm.loop !56

581:                                              ; preds = %574
  br label %582

582:                                              ; preds = %581
  store i8 0, ptr %56, align 1, !tbaa !55
  br label %562, !llvm.loop !58

583:                                              ; preds = %565
  br label %951

584:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #10
  store i8 1, ptr %58, align 1, !tbaa !55
  br label %585

585:                                              ; preds = %605, %584
  %586 = load i8, ptr %58, align 1, !tbaa !55, !range !53, !noundef !54
  %587 = trunc i8 %586 to i1
  br i1 %587, label %589, label %588

588:                                              ; preds = %585
  store i32 33, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #10
  br label %606

589:                                              ; preds = %585
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #10
  %590 = load ptr, ptr %52, align 8, !tbaa !5
  %591 = invoke noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST4Item11as_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %590)
          to label %592 unwind label %598

592:                                              ; preds = %589
  store ptr %591, ptr %59, align 8, !tbaa !5
  br label %593

593:                                              ; preds = %603, %592
  %594 = load ptr, ptr %59, align 8, !tbaa !5
  %595 = load i8, ptr %58, align 1, !tbaa !55, !range !53, !noundef !54
  %596 = trunc i8 %595 to i1
  br i1 %596, label %602, label %597

597:                                              ; preds = %593
  store i32 36, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  br label %604

598:                                              ; preds = %589
  %599 = landingpad { ptr, i32 }
          cleanup
  %600 = extractvalue { ptr, i32 } %599, 0
  store ptr %600, ptr %8, align 8
  %601 = extractvalue { ptr, i32 } %599, 1
  store i32 %601, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #10
  br label %953

602:                                              ; preds = %593
  br label %603

603:                                              ; preds = %602
  store i8 0, ptr %58, align 1, !tbaa !55
  br label %593, !llvm.loop !59

604:                                              ; preds = %597
  br label %605

605:                                              ; preds = %604
  store i8 0, ptr %58, align 1, !tbaa !55
  br label %585, !llvm.loop !60

606:                                              ; preds = %588
  br label %951

607:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #10
  store i8 1, ptr %60, align 1, !tbaa !55
  br label %608

608:                                              ; preds = %718, %607
  %609 = load i8, ptr %60, align 1, !tbaa !55, !range !53, !noundef !54
  %610 = trunc i8 %609 to i1
  br i1 %610, label %612, label %611

611:                                              ; preds = %608
  store i32 39, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #10
  br label %719

612:                                              ; preds = %608
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #10
  %613 = load ptr, ptr %52, align 8, !tbaa !5
  %614 = invoke noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(488) %613)
          to label %615 unwind label %621

615:                                              ; preds = %612
  store ptr %614, ptr %61, align 8, !tbaa !5
  br label %616

616:                                              ; preds = %715, %615
  %617 = load ptr, ptr %61, align 8, !tbaa !5
  %618 = load i8, ptr %60, align 1, !tbaa !55, !range !53, !noundef !54
  %619 = trunc i8 %618 to i1
  br i1 %619, label %625, label %620

620:                                              ; preds = %616
  store i32 42, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  br label %717

621:                                              ; preds = %625, %612
  %622 = landingpad { ptr, i32 }
          cleanup
  %623 = extractvalue { ptr, i32 } %622, 0
  store ptr %623, ptr %8, align 8
  %624 = extractvalue { ptr, i32 } %622, 1
  store i32 %624, ptr %9, align 4
  br label %716

625:                                              ; preds = %616
  %626 = load ptr, ptr %61, align 8, !tbaa !5
  %627 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3AST6Static7s_classEv(ptr noundef nonnull align 8 dereferenceable(216) %626)
          to label %628 unwind label %621

628:                                              ; preds = %625
  %629 = load i32, ptr %627, align 4, !tbaa !61
  %630 = icmp eq i32 %629, 0
  br i1 %630, label %631, label %685

631:                                              ; preds = %628
  call void @llvm.lifetime.start.p0(i64 296, ptr %62) #10
  %632 = load ptr, ptr %49, align 8, !tbaa !5
  %633 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %632, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 288, ptr %63) #10
  %634 = getelementptr inbounds %"struct.HIR::TraitImpl::ImplEnt", ptr %63, i32 0, i32 0
  %635 = load ptr, ptr %49, align 8, !tbaa !5
  %636 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %635, i32 0, i32 3
  %637 = load i8, ptr %636, align 8, !tbaa !63, !range !53, !noundef !54
  %638 = trunc i8 %637 to i1
  %639 = zext i1 %638 to i8
  store i8 %639, ptr %634, align 8, !tbaa !85
  %640 = getelementptr inbounds %"struct.HIR::TraitImpl::ImplEnt", ptr %63, i32 0, i32 1
  %641 = getelementptr inbounds %"class.HIR::GenericParams", ptr %64, i32 0, i32 0
  call void @llvm.memset.p0.i64(ptr align 8 %641, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR12TypeParamDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %641) #10
  %642 = getelementptr inbounds %"class.HIR::GenericParams", ptr %64, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 8 %642, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR11LifetimeDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %642) #10
  %643 = getelementptr inbounds %"class.HIR::GenericParams", ptr %64, i32 0, i32 2
  call void @llvm.memset.p0.i64(ptr align 8 %643, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR13ValueParamDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %643) #10
  %644 = getelementptr inbounds %"class.HIR::GenericParams", ptr %64, i32 0, i32 3
  call void @llvm.memset.p0.i64(ptr align 8 %644, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR12GenericBoundESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %644) #10
  %645 = load ptr, ptr %61, align 8, !tbaa !5
  %646 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST6Static4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %645)
          to label %647 unwind label %661

647:                                              ; preds = %631
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %65, ptr noundef nonnull align 8 dereferenceable(120) %646)
          to label %648 unwind label %661

648:                                              ; preds = %647
  %649 = load ptr, ptr %61, align 8, !tbaa !5
  %650 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216) %649)
          to label %651 unwind label %665

651:                                              ; preds = %648
  invoke void @_Z13LowerHIR_ExprRKN3AST4ExprE(ptr dead_on_unwind writable sret(%"class.HIR::ExprPtr") align 8 %66, ptr noundef nonnull align 8 dereferenceable(16) %650)
          to label %652 unwind label %665

652:                                              ; preds = %651
  invoke void @_ZN3HIR8ConstantC2ENS_13GenericParamsENS_7TypeRefENS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(280) %640, ptr noundef %64, ptr noundef %65, ptr noundef %66)
          to label %653 unwind label %669

653:                                              ; preds = %652
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR9TraitImpl7ImplEntINS3_8ConstantEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind writable sret(%"struct.std::pair.875") align 8 %62, ptr noundef nonnull align 8 dereferenceable(8) %633, ptr noundef nonnull align 8 dereferenceable(288) %63)
          to label %654 unwind label %673

654:                                              ; preds = %653
  %655 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE6insertIS8_IS0_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %44, ptr noundef nonnull align 8 dereferenceable(296) %62)
          to label %656 unwind label %677

656:                                              ; preds = %654
  %657 = getelementptr inbounds { ptr, i8 }, ptr %67, i32 0, i32 0
  %658 = extractvalue { ptr, i8 } %655, 0
  store ptr %658, ptr %657, align 8
  %659 = getelementptr inbounds { ptr, i8 }, ptr %67, i32 0, i32 1
  %660 = extractvalue { ptr, i8 } %655, 1
  store i8 %660, ptr %659, align 8
  call void @_ZNSt4pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_8ConstantEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(296) %62) #10
  call void @_ZN3HIR9TraitImpl7ImplEntINS_8ConstantEED2Ev(ptr noundef nonnull align 8 dereferenceable(288) %63) #10
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %66) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %64) #10
  call void @llvm.lifetime.end.p0(i64 288, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 296, ptr %62) #10
  br label %714

661:                                              ; preds = %647, %631
  %662 = landingpad { ptr, i32 }
          cleanup
  %663 = extractvalue { ptr, i32 } %662, 0
  store ptr %663, ptr %8, align 8
  %664 = extractvalue { ptr, i32 } %662, 1
  store i32 %664, ptr %9, align 4
  br label %684

665:                                              ; preds = %651, %648
  %666 = landingpad { ptr, i32 }
          cleanup
  %667 = extractvalue { ptr, i32 } %666, 0
  store ptr %667, ptr %8, align 8
  %668 = extractvalue { ptr, i32 } %666, 1
  store i32 %668, ptr %9, align 4
  br label %683

669:                                              ; preds = %652
  %670 = landingpad { ptr, i32 }
          cleanup
  %671 = extractvalue { ptr, i32 } %670, 0
  store ptr %671, ptr %8, align 8
  %672 = extractvalue { ptr, i32 } %670, 1
  store i32 %672, ptr %9, align 4
  br label %682

673:                                              ; preds = %653
  %674 = landingpad { ptr, i32 }
          cleanup
  %675 = extractvalue { ptr, i32 } %674, 0
  store ptr %675, ptr %8, align 8
  %676 = extractvalue { ptr, i32 } %674, 1
  store i32 %676, ptr %9, align 4
  br label %681

677:                                              ; preds = %654
  %678 = landingpad { ptr, i32 }
          cleanup
  %679 = extractvalue { ptr, i32 } %678, 0
  store ptr %679, ptr %8, align 8
  %680 = extractvalue { ptr, i32 } %678, 1
  store i32 %680, ptr %9, align 4
  call void @_ZNSt4pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_8ConstantEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(296) %62) #10
  br label %681

681:                                              ; preds = %677, %673
  call void @_ZN3HIR9TraitImpl7ImplEntINS_8ConstantEED2Ev(ptr noundef nonnull align 8 dereferenceable(288) %63) #10
  br label %682

682:                                              ; preds = %681, %669
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %66) #10
  br label %683

683:                                              ; preds = %682, %665
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #10
  br label %684

684:                                              ; preds = %683, %661
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %64) #10
  call void @llvm.lifetime.end.p0(i64 288, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 296, ptr %62) #10
  br label %716

685:                                              ; preds = %628
  br label %686

686:                                              ; preds = %685
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #10
  store ptr @__FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #10
  %687 = load ptr, ptr %49, align 8, !tbaa !5
  %688 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %687, i32 0, i32 0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(8) %688)
          to label %689 unwind label %694

689:                                              ; preds = %686
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #10
  %690 = getelementptr inbounds %class.anon.877, ptr %71, i32 0, i32 0
  store ptr %68, ptr %690, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull align 8 dereferenceable(8) %71) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef %70)
          to label %691 unwind label %698

691:                                              ; preds = %689
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #10
  %692 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %692, ptr noundef @.str.8)
          to label %693 unwind label %703

693:                                              ; preds = %691
  invoke void @__cxa_throw(ptr %692, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1612 unwind label %707

694:                                              ; preds = %686
  %695 = landingpad { ptr, i32 }
          cleanup
  %696 = extractvalue { ptr, i32 } %695, 0
  store ptr %696, ptr %8, align 8
  %697 = extractvalue { ptr, i32 } %695, 1
  store i32 %697, ptr %9, align 4
  br label %702

698:                                              ; preds = %689
  %699 = landingpad { ptr, i32 }
          cleanup
  %700 = extractvalue { ptr, i32 } %699, 0
  store ptr %700, ptr %8, align 8
  %701 = extractvalue { ptr, i32 } %699, 1
  store i32 %701, ptr %9, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #10
  br label %702

702:                                              ; preds = %698, %694
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #10
  br label %711

703:                                              ; preds = %691
  %704 = landingpad { ptr, i32 }
          cleanup
  %705 = extractvalue { ptr, i32 } %704, 0
  store ptr %705, ptr %8, align 8
  %706 = extractvalue { ptr, i32 } %704, 1
  store i32 %706, ptr %9, align 4
  call void @__cxa_free_exception(ptr %692) #10
  br label %711

707:                                              ; preds = %693
  %708 = landingpad { ptr, i32 }
          cleanup
  %709 = extractvalue { ptr, i32 } %708, 0
  store ptr %709, ptr %8, align 8
  %710 = extractvalue { ptr, i32 } %708, 1
  store i32 %710, ptr %9, align 4
  br label %711

711:                                              ; preds = %707, %703, %702
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  br label %716

712:                                              ; No predecessors!
  br label %713

713:                                              ; preds = %712
  br label %714

714:                                              ; preds = %713, %656
  br label %715

715:                                              ; preds = %714
  store i8 0, ptr %60, align 1, !tbaa !55
  br label %616, !llvm.loop !115

716:                                              ; preds = %711, %684, %621
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #10
  br label %953

717:                                              ; preds = %620
  br label %718

718:                                              ; preds = %717
  store i8 0, ptr %60, align 1, !tbaa !55
  br label %608, !llvm.loop !116

719:                                              ; preds = %611
  br label %951

720:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #10
  store i8 1, ptr %72, align 1, !tbaa !55
  br label %721

721:                                              ; preds = %871, %720
  %722 = load i8, ptr %72, align 1, !tbaa !55, !range !53, !noundef !54
  %723 = trunc i8 %722 to i1
  br i1 %723, label %725, label %724

724:                                              ; preds = %721
  store i32 47, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #10
  br label %872

725:                                              ; preds = %721
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #10
  %726 = load ptr, ptr %52, align 8, !tbaa !5
  %727 = invoke noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item7as_TypeEv(ptr noundef nonnull align 8 dereferenceable(488) %726)
          to label %728 unwind label %734

728:                                              ; preds = %725
  store ptr %727, ptr %73, align 8, !tbaa !5
  br label %729

729:                                              ; preds = %810, %728
  %730 = load ptr, ptr %73, align 8, !tbaa !5
  %731 = load i8, ptr %72, align 1, !tbaa !55, !range !53, !noundef !54
  %732 = trunc i8 %731 to i1
  br i1 %732, label %738, label %733

733:                                              ; preds = %729
  store i32 50, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #10
  br label %870

734:                                              ; preds = %753, %751, %747, %745, %742, %739, %725
  %735 = landingpad { ptr, i32 }
          cleanup
  %736 = extractvalue { ptr, i32 } %735, 0
  store ptr %736, ptr %8, align 8
  %737 = extractvalue { ptr, i32 } %735, 1
  store i32 %737, ptr %9, align 4
  br label %869

738:                                              ; preds = %729
  br label %739

739:                                              ; preds = %738
  %740 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %741 unwind label %734

741:                                              ; preds = %739
  br i1 %740, label %742, label %756

742:                                              ; preds = %741
  %743 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %744 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %743, ptr noundef @__FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE)
          to label %745 unwind label %734

745:                                              ; preds = %742
  %746 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %744, ptr noundef @.str.58)
          to label %747 unwind label %734

747:                                              ; preds = %745
  %748 = load ptr, ptr %49, align 8, !tbaa !5
  %749 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %748, i32 0, i32 4
  %750 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %746, ptr noundef nonnull align 8 dereferenceable(8) %749)
          to label %751 unwind label %734

751:                                              ; preds = %747
  %752 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %750, ptr noundef @_ZSt3decRSt8ios_base)
          to label %753 unwind label %734

753:                                              ; preds = %751
  %754 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %752, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %755 unwind label %734

755:                                              ; preds = %753
  br label %756

756:                                              ; preds = %755, %741
  br label %757

757:                                              ; preds = %756
  br label %758

758:                                              ; preds = %757
  call void @llvm.lifetime.start.p0(i64 96, ptr %74) #10
  %759 = load ptr, ptr %73, align 8, !tbaa !5
  %760 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN3AST9TypeAlias6paramsEv(ptr noundef nonnull align 8 dereferenceable(216) %759)
          to label %761 unwind label %768

761:                                              ; preds = %758
  invoke void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind writable sret(%"class.HIR::GenericParams") align 8 %74, ptr noundef nonnull align 8 dereferenceable(48) %760, ptr noundef null)
          to label %762 unwind label %768

762:                                              ; preds = %761
  %763 = load ptr, ptr @_ZN12_GLOBAL__N_119g_impl_trait_sourceE, align 8, !tbaa !117
  %764 = icmp ne ptr %763, null
  %765 = xor i1 %764, true
  br i1 %765, label %766, label %767

766:                                              ; preds = %762
  br label %773

767:                                              ; preds = %762
  call void @__assert_fail(ptr noundef @.str.31, ptr noundef @.str.5, i32 noundef 2149, ptr noundef @__PRETTY_FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE) #12
  unreachable

768:                                              ; preds = %761, %758
  %769 = landingpad { ptr, i32 }
          cleanup
  %770 = extractvalue { ptr, i32 } %769, 0
  store ptr %770, ptr %8, align 8
  %771 = extractvalue { ptr, i32 } %769, 1
  store i32 %771, ptr %9, align 4
  br label %868

772:                                              ; No predecessors!
  br label %773

773:                                              ; preds = %772, %766
  call void @llvm.lifetime.start.p0(i64 56, ptr %75) #10
  invoke void @_ZN3HIR8ItemPathC2ERKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(56) %75, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %774 unwind label %811

774:                                              ; preds = %773
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %77) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %78) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %79) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef @.str.59, ptr noundef nonnull align 1 dereferenceable(1) %80)
          to label %775 unwind label %815

775:                                              ; preds = %774
  call void @llvm.lifetime.start.p0(i64 32, ptr %81) #10
  %776 = load ptr, ptr %24, align 8, !tbaa !5
  %777 = ptrtoint ptr %776 to i64
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %81, i64 noundef %777)
          to label %778 unwind label %819

778:                                              ; preds = %775
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %78, ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull align 8 dereferenceable(32) %81)
          to label %779 unwind label %823

779:                                              ; preds = %778
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %77, ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef @.str.60)
          to label %780 unwind label %827

780:                                              ; preds = %779
  %781 = load ptr, ptr %49, align 8, !tbaa !5
  %782 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %781, i32 0, i32 4
  %783 = invoke noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %782)
          to label %784 unwind label %831

784:                                              ; preds = %780
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %76, ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef %783)
          to label %785 unwind label %831

785:                                              ; preds = %784
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #10
  call void @llvm.lifetime.start.p0(i64 56, ptr %82) #10
  %786 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %76) #10
  invoke void @_ZN3HIR8ItemPathC2ERKS0_PKc(ptr noundef nonnull align 8 dereferenceable(56) %82, ptr noundef nonnull align 8 dereferenceable(56) %75, ptr noundef %786)
          to label %787 unwind label %839

787:                                              ; preds = %785
  call void @llvm.lifetime.start.p0(i64 24, ptr %83) #10
  invoke void @_ZN12_GLOBAL__N_115ImplTraitSourceC2EPKN3HIR8ItemPathEPKNS1_13GenericParamsES7_(ptr noundef nonnull align 8 dereferenceable(24) %83, ptr noundef %82, ptr noundef %26, ptr noundef %74)
          to label %788 unwind label %843

788:                                              ; preds = %787
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 @_ZN12_GLOBAL__N_119g_impl_trait_sourceE, ptr align 8 %83, i64 24, i1 false), !tbaa.struct !119
  call void @llvm.lifetime.end.p0(i64 24, ptr %83) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %84) #10
  %789 = load ptr, ptr %49, align 8, !tbaa !5
  %790 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %789, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %85) #10
  %791 = getelementptr inbounds %"struct.HIR::TraitImpl::ImplEnt.884", ptr %85, i32 0, i32 0
  %792 = load ptr, ptr %49, align 8, !tbaa !5
  %793 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %792, i32 0, i32 3
  %794 = load i8, ptr %793, align 8, !tbaa !63, !range !53, !noundef !54
  %795 = trunc i8 %794 to i1
  %796 = zext i1 %795 to i8
  store i8 %796, ptr %791, align 8, !tbaa !120
  %797 = getelementptr inbounds %"struct.HIR::TraitImpl::ImplEnt.884", ptr %85, i32 0, i32 1
  %798 = load ptr, ptr %73, align 8, !tbaa !5
  %799 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST9TypeAlias4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %798)
          to label %800 unwind label %847

800:                                              ; preds = %788
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %797, ptr noundef nonnull align 8 dereferenceable(120) %799)
          to label %801 unwind label %847

801:                                              ; preds = %800
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR9TraitImpl7ImplEntINS3_7TypeRefEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind writable sret(%"struct.std::pair.882") align 8 %84, ptr noundef nonnull align 8 dereferenceable(8) %790, ptr noundef nonnull align 8 dereferenceable(16) %85)
          to label %802 unwind label %851

802:                                              ; preds = %801
  %803 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_7TypeRefEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE6insertIS8_IS0_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %45, ptr noundef nonnull align 8 dereferenceable(24) %84)
          to label %804 unwind label %855

804:                                              ; preds = %802
  %805 = getelementptr inbounds { ptr, i8 }, ptr %86, i32 0, i32 0
  %806 = extractvalue { ptr, i8 } %803, 0
  store ptr %806, ptr %805, align 8
  %807 = getelementptr inbounds { ptr, i8 }, ptr %86, i32 0, i32 1
  %808 = extractvalue { ptr, i8 } %803, 1
  store i8 %808, ptr %807, align 8
  call void @_ZNSt4pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_7TypeRefEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %84) #10
  call void @_ZN3HIR9TraitImpl7ImplEntINS_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %85) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %84) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %87) #10
  invoke void @_ZN12_GLOBAL__N_115ImplTraitSourceC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %87)
          to label %809 unwind label %861

809:                                              ; preds = %804
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 @_ZN12_GLOBAL__N_119g_impl_trait_sourceE, ptr align 8 %87, i64 24, i1 false), !tbaa.struct !119
  call void @llvm.lifetime.end.p0(i64 24, ptr %87) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %82) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %75) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %74) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %74) #10
  br label %810

810:                                              ; preds = %809
  store i8 0, ptr %72, align 1, !tbaa !55
  br label %729, !llvm.loop !122

811:                                              ; preds = %773
  %812 = landingpad { ptr, i32 }
          cleanup
  %813 = extractvalue { ptr, i32 } %812, 0
  store ptr %813, ptr %8, align 8
  %814 = extractvalue { ptr, i32 } %812, 1
  store i32 %814, ptr %9, align 4
  br label %867

815:                                              ; preds = %774
  %816 = landingpad { ptr, i32 }
          cleanup
  %817 = extractvalue { ptr, i32 } %816, 0
  store ptr %817, ptr %8, align 8
  %818 = extractvalue { ptr, i32 } %816, 1
  store i32 %818, ptr %9, align 4
  br label %838

819:                                              ; preds = %775
  %820 = landingpad { ptr, i32 }
          cleanup
  %821 = extractvalue { ptr, i32 } %820, 0
  store ptr %821, ptr %8, align 8
  %822 = extractvalue { ptr, i32 } %820, 1
  store i32 %822, ptr %9, align 4
  br label %837

823:                                              ; preds = %778
  %824 = landingpad { ptr, i32 }
          cleanup
  %825 = extractvalue { ptr, i32 } %824, 0
  store ptr %825, ptr %8, align 8
  %826 = extractvalue { ptr, i32 } %824, 1
  store i32 %826, ptr %9, align 4
  br label %836

827:                                              ; preds = %779
  %828 = landingpad { ptr, i32 }
          cleanup
  %829 = extractvalue { ptr, i32 } %828, 0
  store ptr %829, ptr %8, align 8
  %830 = extractvalue { ptr, i32 } %828, 1
  store i32 %830, ptr %9, align 4
  br label %835

831:                                              ; preds = %784, %780
  %832 = landingpad { ptr, i32 }
          cleanup
  %833 = extractvalue { ptr, i32 } %832, 0
  store ptr %833, ptr %8, align 8
  %834 = extractvalue { ptr, i32 } %832, 1
  store i32 %834, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #10
  br label %835

835:                                              ; preds = %831, %827
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #10
  br label %836

836:                                              ; preds = %835, %823
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #10
  br label %837

837:                                              ; preds = %836, %819
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #10
  br label %838

838:                                              ; preds = %837, %815
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #10
  br label %866

839:                                              ; preds = %785
  %840 = landingpad { ptr, i32 }
          cleanup
  %841 = extractvalue { ptr, i32 } %840, 0
  store ptr %841, ptr %8, align 8
  %842 = extractvalue { ptr, i32 } %840, 1
  store i32 %842, ptr %9, align 4
  br label %865

843:                                              ; preds = %787
  %844 = landingpad { ptr, i32 }
          cleanup
  %845 = extractvalue { ptr, i32 } %844, 0
  store ptr %845, ptr %8, align 8
  %846 = extractvalue { ptr, i32 } %844, 1
  store i32 %846, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %83) #10
  br label %865

847:                                              ; preds = %800, %788
  %848 = landingpad { ptr, i32 }
          cleanup
  %849 = extractvalue { ptr, i32 } %848, 0
  store ptr %849, ptr %8, align 8
  %850 = extractvalue { ptr, i32 } %848, 1
  store i32 %850, ptr %9, align 4
  br label %860

851:                                              ; preds = %801
  %852 = landingpad { ptr, i32 }
          cleanup
  %853 = extractvalue { ptr, i32 } %852, 0
  store ptr %853, ptr %8, align 8
  %854 = extractvalue { ptr, i32 } %852, 1
  store i32 %854, ptr %9, align 4
  br label %859

855:                                              ; preds = %802
  %856 = landingpad { ptr, i32 }
          cleanup
  %857 = extractvalue { ptr, i32 } %856, 0
  store ptr %857, ptr %8, align 8
  %858 = extractvalue { ptr, i32 } %856, 1
  store i32 %858, ptr %9, align 4
  call void @_ZNSt4pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_7TypeRefEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %84) #10
  br label %859

859:                                              ; preds = %855, %851
  call void @_ZN3HIR9TraitImpl7ImplEntINS_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #10
  br label %860

860:                                              ; preds = %859, %847
  call void @llvm.lifetime.end.p0(i64 16, ptr %85) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %84) #10
  br label %865

861:                                              ; preds = %804
  %862 = landingpad { ptr, i32 }
          cleanup
  %863 = extractvalue { ptr, i32 } %862, 0
  store ptr %863, ptr %8, align 8
  %864 = extractvalue { ptr, i32 } %862, 1
  store i32 %864, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %87) #10
  br label %865

865:                                              ; preds = %861, %860, %843, %839
  call void @llvm.lifetime.end.p0(i64 56, ptr %82) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #10
  br label %866

866:                                              ; preds = %865, %838
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #10
  br label %867

867:                                              ; preds = %866, %811
  call void @llvm.lifetime.end.p0(i64 56, ptr %75) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %74) #10
  br label %868

868:                                              ; preds = %867, %768
  call void @llvm.lifetime.end.p0(i64 96, ptr %74) #10
  br label %869

869:                                              ; preds = %868, %734
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #10
  br label %953

870:                                              ; preds = %733
  br label %871

871:                                              ; preds = %870
  store i8 0, ptr %72, align 1, !tbaa !55
  br label %721, !llvm.loop !123

872:                                              ; preds = %724
  br label %951

873:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #10
  store i8 1, ptr %88, align 1, !tbaa !55
  br label %874

874:                                              ; preds = %949, %873
  %875 = load i8, ptr %88, align 1, !tbaa !55, !range !53, !noundef !54
  %876 = trunc i8 %875 to i1
  br i1 %876, label %878, label %877

877:                                              ; preds = %874
  store i32 55, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #10
  br label %950

878:                                              ; preds = %874
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #10
  %879 = load ptr, ptr %52, align 8, !tbaa !5
  %880 = invoke noundef nonnull align 8 dereferenceable(368) ptr @_ZN3AST4Item11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488) %879)
          to label %881 unwind label %887

881:                                              ; preds = %878
  store ptr %880, ptr %89, align 8, !tbaa !5
  br label %882

882:                                              ; preds = %932, %881
  %883 = load ptr, ptr %89, align 8, !tbaa !5
  %884 = load i8, ptr %88, align 1, !tbaa !55, !range !53, !noundef !54
  %885 = trunc i8 %884 to i1
  br i1 %885, label %891, label %886

886:                                              ; preds = %882
  store i32 58, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #10
  br label %948

887:                                              ; preds = %906, %904, %900, %898, %895, %892, %878
  %888 = landingpad { ptr, i32 }
          cleanup
  %889 = extractvalue { ptr, i32 } %888, 0
  store ptr %889, ptr %8, align 8
  %890 = extractvalue { ptr, i32 } %888, 1
  store i32 %890, ptr %9, align 4
  br label %947

891:                                              ; preds = %882
  br label %892

892:                                              ; preds = %891
  %893 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %894 unwind label %887

894:                                              ; preds = %892
  br i1 %893, label %895, label %909

895:                                              ; preds = %894
  %896 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %897 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %896, ptr noundef @__FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE)
          to label %898 unwind label %887

898:                                              ; preds = %895
  %899 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %897, ptr noundef @.str.61)
          to label %900 unwind label %887

900:                                              ; preds = %898
  %901 = load ptr, ptr %49, align 8, !tbaa !5
  %902 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %901, i32 0, i32 4
  %903 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %899, ptr noundef nonnull align 8 dereferenceable(8) %902)
          to label %904 unwind label %887

904:                                              ; preds = %900
  %905 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %903, ptr noundef @_ZSt3decRSt8ios_base)
          to label %906 unwind label %887

906:                                              ; preds = %904
  %907 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %905, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %908 unwind label %887

908:                                              ; preds = %906
  br label %909

909:                                              ; preds = %908, %894
  br label %910

910:                                              ; preds = %909
  br label %911

911:                                              ; preds = %910
  call void @llvm.lifetime.start.p0(i64 368, ptr %90) #10
  %912 = load ptr, ptr %49, align 8, !tbaa !5
  %913 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %912, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 360, ptr %91) #10
  %914 = getelementptr inbounds %"struct.HIR::TraitImpl::ImplEnt.891", ptr %91, i32 0, i32 0
  %915 = load ptr, ptr %49, align 8, !tbaa !5
  %916 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %915, i32 0, i32 3
  %917 = load i8, ptr %916, align 8, !tbaa !63, !range !53, !noundef !54
  %918 = trunc i8 %917 to i1
  %919 = zext i1 %918 to i8
  store i8 %919, ptr %914, align 8, !tbaa !124
  %920 = getelementptr inbounds %"struct.HIR::TraitImpl::ImplEnt.891", ptr %91, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %92, ptr align 8 %50, i64 56, i1 false), !tbaa.struct !142
  %921 = load ptr, ptr %49, align 8, !tbaa !5
  %922 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %921, i32 0, i32 1
  %923 = load ptr, ptr %89, align 8, !tbaa !5
  invoke void @_Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::Function") align 8 %920, ptr noundef byval(%"class.HIR::ItemPath") align 8 %92, ptr noundef nonnull align 8 dereferenceable(24) %922, ptr noundef nonnull align 8 dereferenceable(368) %923, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %924 unwind label %933

924:                                              ; preds = %911
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR9TraitImpl7ImplEntINS3_8FunctionEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind writable sret(%"struct.std::pair.889") align 8 %90, ptr noundef nonnull align 8 dereferenceable(8) %913, ptr noundef nonnull align 8 dereferenceable(360) %91)
          to label %925 unwind label %937

925:                                              ; preds = %924
  %926 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE6insertIS8_IS0_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %43, ptr noundef nonnull align 8 dereferenceable(368) %90)
          to label %927 unwind label %941

927:                                              ; preds = %925
  %928 = getelementptr inbounds { ptr, i8 }, ptr %93, i32 0, i32 0
  %929 = extractvalue { ptr, i8 } %926, 0
  store ptr %929, ptr %928, align 8
  %930 = getelementptr inbounds { ptr, i8 }, ptr %93, i32 0, i32 1
  %931 = extractvalue { ptr, i8 } %926, 1
  store i8 %931, ptr %930, align 8
  call void @_ZNSt4pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(368) %90) #10
  call void @_ZN3HIR9TraitImpl7ImplEntINS_8FunctionEED2Ev(ptr noundef nonnull align 8 dereferenceable(360) %91) #10
  call void @llvm.lifetime.end.p0(i64 360, ptr %91) #10
  call void @llvm.lifetime.end.p0(i64 368, ptr %90) #10
  br label %932

932:                                              ; preds = %927
  store i8 0, ptr %88, align 1, !tbaa !55
  br label %882, !llvm.loop !143

933:                                              ; preds = %911
  %934 = landingpad { ptr, i32 }
          cleanup
  %935 = extractvalue { ptr, i32 } %934, 0
  store ptr %935, ptr %8, align 8
  %936 = extractvalue { ptr, i32 } %934, 1
  store i32 %936, ptr %9, align 4
  br label %946

937:                                              ; preds = %924
  %938 = landingpad { ptr, i32 }
          cleanup
  %939 = extractvalue { ptr, i32 } %938, 0
  store ptr %939, ptr %8, align 8
  %940 = extractvalue { ptr, i32 } %938, 1
  store i32 %940, ptr %9, align 4
  br label %945

941:                                              ; preds = %925
  %942 = landingpad { ptr, i32 }
          cleanup
  %943 = extractvalue { ptr, i32 } %942, 0
  store ptr %943, ptr %8, align 8
  %944 = extractvalue { ptr, i32 } %942, 1
  store i32 %944, ptr %9, align 4
  call void @_ZNSt4pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(368) %90) #10
  br label %945

945:                                              ; preds = %941, %937
  call void @_ZN3HIR9TraitImpl7ImplEntINS_8FunctionEED2Ev(ptr noundef nonnull align 8 dereferenceable(360) %91) #10
  br label %946

946:                                              ; preds = %945, %933
  call void @llvm.lifetime.end.p0(i64 360, ptr %91) #10
  call void @llvm.lifetime.end.p0(i64 368, ptr %90) #10
  br label %947

947:                                              ; preds = %946, %887
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #10
  br label %953

948:                                              ; preds = %886
  br label %949

949:                                              ; preds = %948
  store i8 0, ptr %88, align 1, !tbaa !55
  br label %874, !llvm.loop !144

950:                                              ; preds = %877
  br label %951

951:                                              ; preds = %950, %872, %719, %606, %583, %560
  br label %952

952:                                              ; preds = %951
  store i8 0, ptr %51, align 1, !tbaa !55
  br label %523, !llvm.loop !145

953:                                              ; preds = %947, %869, %716, %598, %575, %555, %554, %531
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #10
  br label %959

954:                                              ; preds = %526
  br label %955

955:                                              ; preds = %954
  store i8 0, ptr %51, align 1, !tbaa !55
  br label %511, !llvm.loop !146

956:                                              ; preds = %514
  call void @llvm.lifetime.end.p0(i64 56, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %957

957:                                              ; preds = %956
  %958 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #10
  br label %497

959:                                              ; preds = %953, %515
  call void @llvm.lifetime.end.p0(i64 56, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  br label %960

960:                                              ; preds = %959, %500
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  br label %1008

961:                                              ; preds = %499
  %962 = load ptr, ptr %4, align 8, !tbaa !5
  %963 = getelementptr inbounds %"class.HIR::Crate", ptr %962, i32 0, i32 7
  %964 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt3mapIN3HIR10SimplePathENS0_5Crate9ImplGroupISt10unique_ptrINS0_9TraitImplESt14default_deleteIS5_EEEESt4lessIS1_ESaISt4pairIKS1_S9_EEEixEOS1_(ptr noundef nonnull align 8 dereferenceable(48) %963, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %965 unwind label %980

965:                                              ; preds = %961
  %966 = getelementptr inbounds %"struct.HIR::Crate::ImplGroup.892", ptr %964, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #10
  call void @llvm.lifetime.start.p0(i64 328, ptr %95) #10
  %967 = getelementptr inbounds %"class.HIR::TraitImpl", ptr %95, i32 0, i32 0
  call void @_ZN3HIR13GenericParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %967, ptr noundef nonnull align 8 dereferenceable(96) %26) #10
  %968 = getelementptr inbounds %"class.HIR::TraitImpl", ptr %95, i32 0, i32 1
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %968, ptr noundef nonnull align 8 dereferenceable(24) %40)
          to label %969 unwind label %984

969:                                              ; preds = %965
  %970 = getelementptr inbounds %"class.HIR::TraitImpl", ptr %95, i32 0, i32 2
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %970, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %971 unwind label %988

971:                                              ; preds = %969
  %972 = getelementptr inbounds %"class.HIR::TraitImpl", ptr %95, i32 0, i32 3
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2EOSC_(ptr noundef nonnull align 8 dereferenceable(48) %972, ptr noundef nonnull align 8 dereferenceable(48) %43) #10
  %973 = getelementptr inbounds %"class.HIR::TraitImpl", ptr %95, i32 0, i32 4
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2EOSC_(ptr noundef nonnull align 8 dereferenceable(48) %973, ptr noundef nonnull align 8 dereferenceable(48) %44) #10
  %974 = getelementptr inbounds %"class.HIR::TraitImpl", ptr %95, i32 0, i32 5
  call void @llvm.memset.p0.i64(ptr align 8 %974, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_6StaticEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %974) #10
  %975 = getelementptr inbounds %"class.HIR::TraitImpl", ptr %95, i32 0, i32 6
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_7TypeRefEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2EOSC_(ptr noundef nonnull align 8 dereferenceable(48) %975, ptr noundef nonnull align 8 dereferenceable(48) %45) #10
  %976 = getelementptr inbounds %"class.HIR::TraitImpl", ptr %95, i32 0, i32 7
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %976, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %977 unwind label %992

977:                                              ; preds = %971
  invoke void @_ZSt11make_uniqueIN3HIR9TraitImplEJS1_EENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.903") align 8 %94, ptr noundef nonnull align 8 dereferenceable(328) %95)
          to label %978 unwind label %998

978:                                              ; preds = %977
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %966, ptr noundef nonnull align 8 dereferenceable(8) %94)
          to label %979 unwind label %1002

979:                                              ; preds = %978
  call void @_ZNSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #10
  call void @_ZN3HIR9TraitImplD2Ev(ptr noundef nonnull align 8 dereferenceable(328) %95) #10
  call void @llvm.lifetime.end.p0(i64 328, ptr %95) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_7TypeRefEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %45) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %45) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %44) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %44) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %43) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %42) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  br label %1082

980:                                              ; preds = %961
  %981 = landingpad { ptr, i32 }
          cleanup
  %982 = extractvalue { ptr, i32 } %981, 0
  store ptr %982, ptr %8, align 8
  %983 = extractvalue { ptr, i32 } %981, 1
  store i32 %983, ptr %9, align 4
  br label %1008

984:                                              ; preds = %965
  %985 = landingpad { ptr, i32 }
          cleanup
  %986 = extractvalue { ptr, i32 } %985, 0
  store ptr %986, ptr %8, align 8
  %987 = extractvalue { ptr, i32 } %985, 1
  store i32 %987, ptr %9, align 4
  br label %997

988:                                              ; preds = %969
  %989 = landingpad { ptr, i32 }
          cleanup
  %990 = extractvalue { ptr, i32 } %989, 0
  store ptr %990, ptr %8, align 8
  %991 = extractvalue { ptr, i32 } %989, 1
  store i32 %991, ptr %9, align 4
  br label %996

992:                                              ; preds = %971
  %993 = landingpad { ptr, i32 }
          cleanup
  %994 = extractvalue { ptr, i32 } %993, 0
  store ptr %994, ptr %8, align 8
  %995 = extractvalue { ptr, i32 } %993, 1
  store i32 %995, ptr %9, align 4
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_7TypeRefEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %975) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_6StaticEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %974) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %973) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %972) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %970) #10
  br label %996

996:                                              ; preds = %992, %988
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %968) #10
  br label %997

997:                                              ; preds = %996, %984
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %967) #10
  br label %1007

998:                                              ; preds = %977
  %999 = landingpad { ptr, i32 }
          cleanup
  %1000 = extractvalue { ptr, i32 } %999, 0
  store ptr %1000, ptr %8, align 8
  %1001 = extractvalue { ptr, i32 } %999, 1
  store i32 %1001, ptr %9, align 4
  br label %1006

1002:                                             ; preds = %978
  %1003 = landingpad { ptr, i32 }
          cleanup
  %1004 = extractvalue { ptr, i32 } %1003, 0
  store ptr %1004, ptr %8, align 8
  %1005 = extractvalue { ptr, i32 } %1003, 1
  store i32 %1005, ptr %9, align 4
  call void @_ZNSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #10
  br label %1006

1006:                                             ; preds = %1002, %998
  call void @_ZN3HIR9TraitImplD2Ev(ptr noundef nonnull align 8 dereferenceable(328) %95) #10
  br label %1007

1007:                                             ; preds = %1006, %997
  call void @llvm.lifetime.end.p0(i64 328, ptr %95) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #10
  br label %1008

1008:                                             ; preds = %1007, %980, %960
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_7TypeRefEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %45) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %45) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %44) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %44) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %43) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %43) #10
  br label %1009

1009:                                             ; preds = %1008, %481
  call void @llvm.lifetime.end.p0(i64 56, ptr %42) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #10
  br label %1010

1010:                                             ; preds = %1009, %477
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  br label %1083

1011:                                             ; preds = %437
  %1012 = load ptr, ptr %24, align 8, !tbaa !5
  %1013 = invoke noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %1012)
          to label %1014 unwind label %1021

1014:                                             ; preds = %1011
  %1015 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST7ImplDef4typeEv(ptr noundef nonnull align 8 dereferenceable(448) %1013)
          to label %1016 unwind label %1021

1016:                                             ; preds = %1014
  %1017 = getelementptr inbounds %class.TypeRef, ptr %1015, i32 0, i32 1
  %1018 = invoke noundef zeroext i1 @_ZNK8TypeData7is_NoneEv(ptr noundef nonnull align 8 dereferenceable(112) %1017)
          to label %1019 unwind label %1021

1019:                                             ; preds = %1016
  br i1 %1018, label %1020, label %1025

1020:                                             ; preds = %1019
  br label %1081

1021:                                             ; preds = %1016, %1014, %1011
  %1022 = landingpad { ptr, i32 }
          cleanup
  %1023 = extractvalue { ptr, i32 } %1022, 0
  store ptr %1023, ptr %8, align 8
  %1024 = extractvalue { ptr, i32 } %1022, 1
  store i32 %1024, ptr %9, align 4
  br label %1083

1025:                                             ; preds = %1019
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #10
  %1026 = load ptr, ptr %24, align 8, !tbaa !5
  %1027 = invoke noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %1026)
          to label %1028 unwind label %1047

1028:                                             ; preds = %1025
  %1029 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST7ImplDef4typeEv(ptr noundef nonnull align 8 dereferenceable(448) %1027)
          to label %1030 unwind label %1047

1030:                                             ; preds = %1028
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %96, ptr noundef nonnull align 8 dereferenceable(120) %1029)
          to label %1031 unwind label %1047

1031:                                             ; preds = %1030
  %1032 = load ptr, ptr %4, align 8, !tbaa !5
  %1033 = getelementptr inbounds %"class.HIR::Crate", ptr %1032, i32 0, i32 8
  %1034 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt3mapIN3HIR10SimplePathENS0_5Crate9ImplGroupISt10unique_ptrINS0_10MarkerImplESt14default_deleteIS5_EEEESt4lessIS1_ESaISt4pairIKS1_S9_EEEixEOS1_(ptr noundef nonnull align 8 dereferenceable(48) %1033, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %1035 unwind label %1051

1035:                                             ; preds = %1031
  %1036 = getelementptr inbounds %"struct.HIR::Crate::ImplGroup.916", ptr %1034, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #10
  call void @llvm.lifetime.start.p0(i64 144, ptr %98) #10
  %1037 = getelementptr inbounds %"class.HIR::MarkerImpl", ptr %98, i32 0, i32 0
  call void @_ZN3HIR13GenericParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %1037, ptr noundef nonnull align 8 dereferenceable(96) %26) #10
  %1038 = getelementptr inbounds %"class.HIR::MarkerImpl", ptr %98, i32 0, i32 1
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %1038, ptr noundef nonnull align 8 dereferenceable(24) %40)
          to label %1039 unwind label %1055

1039:                                             ; preds = %1035
  %1040 = getelementptr inbounds %"class.HIR::MarkerImpl", ptr %98, i32 0, i32 2
  store i8 1, ptr %1040, align 8, !tbaa !147
  %1041 = getelementptr inbounds %"class.HIR::MarkerImpl", ptr %98, i32 0, i32 3
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1041, ptr noundef nonnull align 8 dereferenceable(8) %96)
          to label %1042 unwind label %1059

1042:                                             ; preds = %1039
  %1043 = getelementptr inbounds %"class.HIR::MarkerImpl", ptr %98, i32 0, i32 4
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1043, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %1044 unwind label %1063

1044:                                             ; preds = %1042
  invoke void @_Z15make_unique_ptrIN3HIR10MarkerImplEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.927") align 8 %97, ptr noundef nonnull align 8 dereferenceable(144) %98)
          to label %1045 unwind label %1069

1045:                                             ; preds = %1044
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR10MarkerImplESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %1036, ptr noundef nonnull align 8 dereferenceable(8) %97)
          to label %1046 unwind label %1073

1046:                                             ; preds = %1045
  call void @_ZNSt10unique_ptrIN3HIR10MarkerImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #10
  call void @_ZN3HIR10MarkerImplD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %98) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr %98) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #10
  br label %1081

1047:                                             ; preds = %1030, %1028, %1025
  %1048 = landingpad { ptr, i32 }
          cleanup
  %1049 = extractvalue { ptr, i32 } %1048, 0
  store ptr %1049, ptr %8, align 8
  %1050 = extractvalue { ptr, i32 } %1048, 1
  store i32 %1050, ptr %9, align 4
  br label %1080

1051:                                             ; preds = %1031
  %1052 = landingpad { ptr, i32 }
          cleanup
  %1053 = extractvalue { ptr, i32 } %1052, 0
  store ptr %1053, ptr %8, align 8
  %1054 = extractvalue { ptr, i32 } %1052, 1
  store i32 %1054, ptr %9, align 4
  br label %1079

1055:                                             ; preds = %1035
  %1056 = landingpad { ptr, i32 }
          cleanup
  %1057 = extractvalue { ptr, i32 } %1056, 0
  store ptr %1057, ptr %8, align 8
  %1058 = extractvalue { ptr, i32 } %1056, 1
  store i32 %1058, ptr %9, align 4
  br label %1068

1059:                                             ; preds = %1039
  %1060 = landingpad { ptr, i32 }
          cleanup
  %1061 = extractvalue { ptr, i32 } %1060, 0
  store ptr %1061, ptr %8, align 8
  %1062 = extractvalue { ptr, i32 } %1060, 1
  store i32 %1062, ptr %9, align 4
  br label %1067

1063:                                             ; preds = %1042
  %1064 = landingpad { ptr, i32 }
          cleanup
  %1065 = extractvalue { ptr, i32 } %1064, 0
  store ptr %1065, ptr %8, align 8
  %1066 = extractvalue { ptr, i32 } %1064, 1
  store i32 %1066, ptr %9, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %1041) #10
  br label %1067

1067:                                             ; preds = %1063, %1059
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1038) #10
  br label %1068

1068:                                             ; preds = %1067, %1055
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %1037) #10
  br label %1078

1069:                                             ; preds = %1044
  %1070 = landingpad { ptr, i32 }
          cleanup
  %1071 = extractvalue { ptr, i32 } %1070, 0
  store ptr %1071, ptr %8, align 8
  %1072 = extractvalue { ptr, i32 } %1070, 1
  store i32 %1072, ptr %9, align 4
  br label %1077

1073:                                             ; preds = %1045
  %1074 = landingpad { ptr, i32 }
          cleanup
  %1075 = extractvalue { ptr, i32 } %1074, 0
  store ptr %1075, ptr %8, align 8
  %1076 = extractvalue { ptr, i32 } %1074, 1
  store i32 %1076, ptr %9, align 4
  call void @_ZNSt10unique_ptrIN3HIR10MarkerImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #10
  br label %1077

1077:                                             ; preds = %1073, %1069
  call void @_ZN3HIR10MarkerImplD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %98) #10
  br label %1078

1078:                                             ; preds = %1077, %1068
  call void @llvm.lifetime.end.p0(i64 144, ptr %98) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #10
  br label %1079

1079:                                             ; preds = %1078, %1051
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #10
  br label %1080

1080:                                             ; preds = %1079, %1047
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #10
  br label %1083

1081:                                             ; preds = %1046, %1020
  br label %1082

1082:                                             ; preds = %1081, %979
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %1461

1083:                                             ; preds = %1080, %1021, %1010
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #10
  br label %1084

1084:                                             ; preds = %1083, %473
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #10
  br label %1085

1085:                                             ; preds = %1084, %469
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #10
  br label %1086

1086:                                             ; preds = %1085, %465
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #10
  br label %1087

1087:                                             ; preds = %1086, %461
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #10
  br label %1088

1088:                                             ; preds = %1087, %388, %387, %353, %352, %340
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %1467

1089:                                             ; preds = %294
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #10
  %1090 = load ptr, ptr %24, align 8, !tbaa !5
  %1091 = invoke noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %1090)
          to label %1092 unwind label %1110

1092:                                             ; preds = %1089
  %1093 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST7ImplDef4typeEv(ptr noundef nonnull align 8 dereferenceable(448) %1091)
          to label %1094 unwind label %1110

1094:                                             ; preds = %1092
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %99, ptr noundef nonnull align 8 dereferenceable(120) %1093)
          to label %1095 unwind label %1110

1095:                                             ; preds = %1094
  call void @llvm.lifetime.start.p0(i64 56, ptr %100) #10
  invoke void @_ZN3HIR8ItemPathC2ERKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(56) %100, ptr noundef nonnull align 8 dereferenceable(8) %99)
          to label %1096 unwind label %1114

1096:                                             ; preds = %1095
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #10
  %1097 = getelementptr inbounds %class.anon.935, ptr %101, i32 0, i32 0
  store ptr %5, ptr %1097, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %102) #10
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %102) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr %103) #10
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %103) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #10
  %1098 = load ptr, ptr %24, align 8, !tbaa !5
  %1099 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST4Impl5itemsEv(ptr noundef nonnull align 8 dereferenceable(472) %1098)
          to label %1100 unwind label %1118

1100:                                             ; preds = %1096
  store ptr %1099, ptr %104, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #10
  %1101 = load ptr, ptr %104, align 8, !tbaa !5
  %1102 = call ptr @_ZNKSt6vectorIN3AST4Impl8ImplItemESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1101) #10
  %1103 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.861", ptr %105, i32 0, i32 0
  store ptr %1102, ptr %1103, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #10
  %1104 = load ptr, ptr %104, align 8, !tbaa !5
  %1105 = call ptr @_ZNKSt6vectorIN3AST4Impl8ImplItemESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1104) #10
  %1106 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.861", ptr %106, i32 0, i32 0
  store ptr %1105, ptr %1106, align 8
  br label %1107

1107:                                             ; preds = %1422, %1100
  %1108 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef nonnull align 8 dereferenceable(8) %106) #10
  br i1 %1108, label %1122, label %1109

1109:                                             ; preds = %1107
  store i32 63, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #10
  br label %1426

1110:                                             ; preds = %1094, %1092, %1089
  %1111 = landingpad { ptr, i32 }
          cleanup
  %1112 = extractvalue { ptr, i32 } %1111, 0
  store ptr %1112, ptr %8, align 8
  %1113 = extractvalue { ptr, i32 } %1111, 1
  store i32 %1113, ptr %9, align 4
  br label %1460

1114:                                             ; preds = %1095
  %1115 = landingpad { ptr, i32 }
          cleanup
  %1116 = extractvalue { ptr, i32 } %1115, 0
  store ptr %1116, ptr %8, align 8
  %1117 = extractvalue { ptr, i32 } %1115, 1
  store i32 %1117, ptr %9, align 4
  br label %1459

1118:                                             ; preds = %1096
  %1119 = landingpad { ptr, i32 }
          cleanup
  %1120 = extractvalue { ptr, i32 } %1119, 0
  store ptr %1120, ptr %8, align 8
  %1121 = extractvalue { ptr, i32 } %1119, 1
  store i32 %1121, ptr %9, align 4
  br label %1425

1122:                                             ; preds = %1107
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #10
  %1123 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %105) #10
  store ptr %1123, ptr %107, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 56, ptr %108) #10
  %1124 = load ptr, ptr %107, align 8, !tbaa !5
  %1125 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %1124, i32 0, i32 4
  %1126 = invoke noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %1125)
          to label %1127 unwind label %1133

1127:                                             ; preds = %1122
  invoke void @_ZN3HIR8ItemPathC2ERKS0_PKc(ptr noundef nonnull align 8 dereferenceable(56) %108, ptr noundef nonnull align 8 dereferenceable(56) %100, ptr noundef %1126)
          to label %1128 unwind label %1133

1128:                                             ; preds = %1127
  call void @llvm.lifetime.start.p0(i64 1, ptr %109) #10
  store i8 1, ptr %109, align 1, !tbaa !55
  br label %1129

1129:                                             ; preds = %1420, %1128
  %1130 = load i8, ptr %109, align 1, !tbaa !55, !range !53, !noundef !54
  %1131 = trunc i8 %1130 to i1
  br i1 %1131, label %1137, label %1132

1132:                                             ; preds = %1129
  store i32 65, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #10
  br label %1421

1133:                                             ; preds = %1127, %1122
  %1134 = landingpad { ptr, i32 }
          cleanup
  %1135 = extractvalue { ptr, i32 } %1134, 0
  store ptr %1135, ptr %8, align 8
  %1136 = extractvalue { ptr, i32 } %1134, 1
  store i32 %1136, ptr %9, align 4
  br label %1424

1137:                                             ; preds = %1129
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #10
  %1138 = load ptr, ptr %107, align 8, !tbaa !5
  %1139 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %1138, i32 0, i32 5
  %1140 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1139) #10
  store ptr %1140, ptr %110, align 8, !tbaa !5
  br label %1141

1141:                                             ; preds = %1417, %1137
  %1142 = load i8, ptr %109, align 1, !tbaa !55, !range !53, !noundef !54
  %1143 = trunc i8 %1142 to i1
  br i1 %1143, label %1145, label %1144

1144:                                             ; preds = %1141
  store i32 68, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #10
  br label %1419

1145:                                             ; preds = %1141
  %1146 = load ptr, ptr %110, align 8, !tbaa !5
  %1147 = invoke noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %1146)
          to label %1148 unwind label %1149

1148:                                             ; preds = %1145
  switch i32 %1147, label %1154 [
    i32 0, label %1153
    i32 1, label %1179
    i32 2, label %1202
    i32 18, label %1225
    i32 17, label %1350
  ]

1149:                                             ; preds = %1163, %1145
  %1150 = landingpad { ptr, i32 }
          cleanup
  %1151 = extractvalue { ptr, i32 } %1150, 0
  store ptr %1151, ptr %8, align 8
  %1152 = extractvalue { ptr, i32 } %1150, 1
  store i32 %1152, ptr %9, align 4
  br label %1418

1153:                                             ; preds = %1148
  call void @__assert_fail(ptr noundef @.str.7, ptr noundef @.str.5, i32 noundef 2211, ptr noundef @__PRETTY_FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE) #12
  unreachable

1154:                                             ; preds = %1148
  br label %1155

1155:                                             ; preds = %1154
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #10
  %1156 = load ptr, ptr %107, align 8, !tbaa !5
  %1157 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %1156, i32 0, i32 0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef nonnull align 8 dereferenceable(8) %1157)
          to label %1158 unwind label %1164

1158:                                             ; preds = %1155
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #10
  %1159 = getelementptr inbounds %class.anon.946, ptr %113, i32 0, i32 0
  %1160 = load ptr, ptr %107, align 8, !tbaa !5
  store ptr %1160, ptr %1159, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef nonnull align 8 dereferenceable(8) %113) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef %112)
          to label %1161 unwind label %1168

1161:                                             ; preds = %1158
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %111) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #10
  %1162 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1162, ptr noundef @.str.9)
          to label %1163 unwind label %1173

1163:                                             ; preds = %1161
  invoke void @__cxa_throw(ptr %1162, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1612 unwind label %1149

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

1168:                                             ; preds = %1158
  %1169 = landingpad { ptr, i32 }
          cleanup
  %1170 = extractvalue { ptr, i32 } %1169, 0
  store ptr %1170, ptr %8, align 8
  %1171 = extractvalue { ptr, i32 } %1169, 1
  store i32 %1171, ptr %9, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %111) #10
  br label %1172

1172:                                             ; preds = %1168, %1164
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #10
  br label %1418

1173:                                             ; preds = %1161
  %1174 = landingpad { ptr, i32 }
          cleanup
  %1175 = extractvalue { ptr, i32 } %1174, 0
  store ptr %1175, ptr %8, align 8
  %1176 = extractvalue { ptr, i32 } %1174, 1
  store i32 %1176, ptr %9, align 4
  call void @__cxa_free_exception(ptr %1162) #10
  br label %1418

1177:                                             ; No predecessors!
  br label %1178

1178:                                             ; preds = %1177
  br label %1416

1179:                                             ; preds = %1148
  call void @llvm.lifetime.start.p0(i64 1, ptr %114) #10
  store i8 1, ptr %114, align 1, !tbaa !55
  br label %1180

1180:                                             ; preds = %1200, %1179
  %1181 = load i8, ptr %114, align 1, !tbaa !55, !range !53, !noundef !54
  %1182 = trunc i8 %1181 to i1
  br i1 %1182, label %1184, label %1183

1183:                                             ; preds = %1180
  store i32 74, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #10
  br label %1201

1184:                                             ; preds = %1180
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #10
  %1185 = load ptr, ptr %110, align 8, !tbaa !5
  %1186 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN3AST4Item7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(488) %1185)
          to label %1187 unwind label %1193

1187:                                             ; preds = %1184
  store ptr %1186, ptr %115, align 8, !tbaa !5
  br label %1188

1188:                                             ; preds = %1198, %1187
  %1189 = load ptr, ptr %115, align 8, !tbaa !5
  %1190 = load i8, ptr %114, align 1, !tbaa !55, !range !53, !noundef !54
  %1191 = trunc i8 %1190 to i1
  br i1 %1191, label %1197, label %1192

1192:                                             ; preds = %1188
  store i32 77, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #10
  br label %1199

1193:                                             ; preds = %1184
  %1194 = landingpad { ptr, i32 }
          cleanup
  %1195 = extractvalue { ptr, i32 } %1194, 0
  store ptr %1195, ptr %8, align 8
  %1196 = extractvalue { ptr, i32 } %1194, 1
  store i32 %1196, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #10
  br label %1418

1197:                                             ; preds = %1188
  br label %1198

1198:                                             ; preds = %1197
  store i8 0, ptr %114, align 1, !tbaa !55
  br label %1188, !llvm.loop !153

1199:                                             ; preds = %1192
  br label %1200

1200:                                             ; preds = %1199
  store i8 0, ptr %114, align 1, !tbaa !55
  br label %1180, !llvm.loop !154

1201:                                             ; preds = %1183
  br label %1416

1202:                                             ; preds = %1148
  call void @llvm.lifetime.start.p0(i64 1, ptr %116) #10
  store i8 1, ptr %116, align 1, !tbaa !55
  br label %1203

1203:                                             ; preds = %1223, %1202
  %1204 = load i8, ptr %116, align 1, !tbaa !55, !range !53, !noundef !54
  %1205 = trunc i8 %1204 to i1
  br i1 %1205, label %1207, label %1206

1206:                                             ; preds = %1203
  store i32 80, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #10
  br label %1224

1207:                                             ; preds = %1203
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #10
  %1208 = load ptr, ptr %110, align 8, !tbaa !5
  %1209 = invoke noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST4Item11as_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %1208)
          to label %1210 unwind label %1216

1210:                                             ; preds = %1207
  store ptr %1209, ptr %117, align 8, !tbaa !5
  br label %1211

1211:                                             ; preds = %1221, %1210
  %1212 = load ptr, ptr %117, align 8, !tbaa !5
  %1213 = load i8, ptr %116, align 1, !tbaa !55, !range !53, !noundef !54
  %1214 = trunc i8 %1213 to i1
  br i1 %1214, label %1220, label %1215

1215:                                             ; preds = %1211
  store i32 83, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #10
  br label %1222

1216:                                             ; preds = %1207
  %1217 = landingpad { ptr, i32 }
          cleanup
  %1218 = extractvalue { ptr, i32 } %1217, 0
  store ptr %1218, ptr %8, align 8
  %1219 = extractvalue { ptr, i32 } %1217, 1
  store i32 %1219, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #10
  br label %1418

1220:                                             ; preds = %1211
  br label %1221

1221:                                             ; preds = %1220
  store i8 0, ptr %116, align 1, !tbaa !55
  br label %1211, !llvm.loop !155

1222:                                             ; preds = %1215
  br label %1223

1223:                                             ; preds = %1222
  store i8 0, ptr %116, align 1, !tbaa !55
  br label %1203, !llvm.loop !156

1224:                                             ; preds = %1206
  br label %1416

1225:                                             ; preds = %1148
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #10
  store i8 1, ptr %118, align 1, !tbaa !55
  br label %1226

1226:                                             ; preds = %1348, %1225
  %1227 = load i8, ptr %118, align 1, !tbaa !55, !range !53, !noundef !54
  %1228 = trunc i8 %1227 to i1
  br i1 %1228, label %1230, label %1229

1229:                                             ; preds = %1226
  store i32 86, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #10
  br label %1349

1230:                                             ; preds = %1226
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #10
  %1231 = load ptr, ptr %110, align 8, !tbaa !5
  %1232 = invoke noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(488) %1231)
          to label %1233 unwind label %1239

1233:                                             ; preds = %1230
  store ptr %1232, ptr %119, align 8, !tbaa !5
  br label %1234

1234:                                             ; preds = %1345, %1233
  %1235 = load ptr, ptr %119, align 8, !tbaa !5
  %1236 = load i8, ptr %118, align 1, !tbaa !55, !range !53, !noundef !54
  %1237 = trunc i8 %1236 to i1
  br i1 %1237, label %1243, label %1238

1238:                                             ; preds = %1234
  store i32 89, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #10
  br label %1347

1239:                                             ; preds = %1243, %1230
  %1240 = landingpad { ptr, i32 }
          cleanup
  %1241 = extractvalue { ptr, i32 } %1240, 0
  store ptr %1241, ptr %8, align 8
  %1242 = extractvalue { ptr, i32 } %1240, 1
  store i32 %1242, ptr %9, align 4
  br label %1346

1243:                                             ; preds = %1234
  %1244 = load ptr, ptr %119, align 8, !tbaa !5
  %1245 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3AST6Static7s_classEv(ptr noundef nonnull align 8 dereferenceable(216) %1244)
          to label %1246 unwind label %1239

1246:                                             ; preds = %1243
  %1247 = load i32, ptr %1245, align 4, !tbaa !61
  %1248 = icmp eq i32 %1247, 0
  br i1 %1248, label %1249, label %1315

1249:                                             ; preds = %1246
  call void @llvm.lifetime.start.p0(i64 312, ptr %120) #10
  %1250 = load ptr, ptr %107, align 8, !tbaa !5
  %1251 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %1250, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 304, ptr %121) #10
  %1252 = getelementptr inbounds %"struct.HIR::TypeImpl::VisImplEnt", ptr %121, i32 0, i32 0
  %1253 = load ptr, ptr %107, align 8, !tbaa !5
  %1254 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %1253, i32 0, i32 2
  invoke void @"_ZZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEENK3$_7clERKNS_10VisibilityE"(ptr dead_on_unwind writable sret(%"class.HIR::Publicity") align 8 %1252, ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull align 8 dereferenceable(36) %1254)
          to label %1255 unwind label %1283

1255:                                             ; preds = %1249
  store i1 true, ptr %125, align 1
  %1256 = getelementptr inbounds %"struct.HIR::TypeImpl::VisImplEnt", ptr %121, i32 0, i32 1
  %1257 = load ptr, ptr %107, align 8, !tbaa !5
  %1258 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %1257, i32 0, i32 3
  %1259 = load i8, ptr %1258, align 8, !tbaa !63, !range !53, !noundef !54
  %1260 = trunc i8 %1259 to i1
  %1261 = zext i1 %1260 to i8
  store i8 %1261, ptr %1256, align 8, !tbaa !157
  %1262 = getelementptr inbounds %"struct.HIR::TypeImpl::VisImplEnt", ptr %121, i32 0, i32 2
  %1263 = getelementptr inbounds %"class.HIR::GenericParams", ptr %122, i32 0, i32 0
  call void @llvm.memset.p0.i64(ptr align 8 %1263, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR12TypeParamDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1263) #10
  %1264 = getelementptr inbounds %"class.HIR::GenericParams", ptr %122, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 8 %1264, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR11LifetimeDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1264) #10
  %1265 = getelementptr inbounds %"class.HIR::GenericParams", ptr %122, i32 0, i32 2
  call void @llvm.memset.p0.i64(ptr align 8 %1265, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR13ValueParamDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1265) #10
  %1266 = getelementptr inbounds %"class.HIR::GenericParams", ptr %122, i32 0, i32 3
  call void @llvm.memset.p0.i64(ptr align 8 %1266, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR12GenericBoundESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1266) #10
  %1267 = load ptr, ptr %119, align 8, !tbaa !5
  %1268 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST6Static4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %1267)
          to label %1269 unwind label %1287

1269:                                             ; preds = %1255
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %123, ptr noundef nonnull align 8 dereferenceable(120) %1268)
          to label %1270 unwind label %1287

1270:                                             ; preds = %1269
  %1271 = load ptr, ptr %119, align 8, !tbaa !5
  %1272 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216) %1271)
          to label %1273 unwind label %1291

1273:                                             ; preds = %1270
  invoke void @_Z13LowerHIR_ExprRKN3AST4ExprE(ptr dead_on_unwind writable sret(%"class.HIR::ExprPtr") align 8 %124, ptr noundef nonnull align 8 dereferenceable(16) %1272)
          to label %1274 unwind label %1291

1274:                                             ; preds = %1273
  invoke void @_ZN3HIR8ConstantC2ENS_13GenericParamsENS_7TypeRefENS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(280) %1262, ptr noundef %122, ptr noundef %123, ptr noundef %124)
          to label %1275 unwind label %1295

1275:                                             ; preds = %1274
  store i1 false, ptr %125, align 1
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR8TypeImpl10VisImplEntINS3_8ConstantEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind writable sret(%"struct.std::pair.951") align 8 %120, ptr noundef nonnull align 8 dereferenceable(8) %1251, ptr noundef nonnull align 8 dereferenceable(304) %121)
          to label %1276 unwind label %1299

1276:                                             ; preds = %1275
  %1277 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE6insertIS8_IS0_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %103, ptr noundef nonnull align 8 dereferenceable(312) %120)
          to label %1278 unwind label %1303

1278:                                             ; preds = %1276
  %1279 = getelementptr inbounds { ptr, i8 }, ptr %126, i32 0, i32 0
  %1280 = extractvalue { ptr, i8 } %1277, 0
  store ptr %1280, ptr %1279, align 8
  %1281 = getelementptr inbounds { ptr, i8 }, ptr %126, i32 0, i32 1
  %1282 = extractvalue { ptr, i8 } %1277, 1
  store i8 %1282, ptr %1281, align 8
  call void @_ZNSt4pairI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8ConstantEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(312) %120) #10
  call void @_ZN3HIR8TypeImpl10VisImplEntINS_8ConstantEED2Ev(ptr noundef nonnull align 8 dereferenceable(304) %121) #10
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %124) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %123) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %122) #10
  call void @llvm.lifetime.end.p0(i64 304, ptr %121) #10
  call void @llvm.lifetime.end.p0(i64 312, ptr %120) #10
  br label %1344

1283:                                             ; preds = %1249
  %1284 = landingpad { ptr, i32 }
          cleanup
  %1285 = extractvalue { ptr, i32 } %1284, 0
  store ptr %1285, ptr %8, align 8
  %1286 = extractvalue { ptr, i32 } %1284, 1
  store i32 %1286, ptr %9, align 4
  br label %1314

1287:                                             ; preds = %1269, %1255
  %1288 = landingpad { ptr, i32 }
          cleanup
  %1289 = extractvalue { ptr, i32 } %1288, 0
  store ptr %1289, ptr %8, align 8
  %1290 = extractvalue { ptr, i32 } %1288, 1
  store i32 %1290, ptr %9, align 4
  br label %1310

1291:                                             ; preds = %1273, %1270
  %1292 = landingpad { ptr, i32 }
          cleanup
  %1293 = extractvalue { ptr, i32 } %1292, 0
  store ptr %1293, ptr %8, align 8
  %1294 = extractvalue { ptr, i32 } %1292, 1
  store i32 %1294, ptr %9, align 4
  br label %1309

1295:                                             ; preds = %1274
  %1296 = landingpad { ptr, i32 }
          cleanup
  %1297 = extractvalue { ptr, i32 } %1296, 0
  store ptr %1297, ptr %8, align 8
  %1298 = extractvalue { ptr, i32 } %1296, 1
  store i32 %1298, ptr %9, align 4
  br label %1308

1299:                                             ; preds = %1275
  %1300 = landingpad { ptr, i32 }
          cleanup
  %1301 = extractvalue { ptr, i32 } %1300, 0
  store ptr %1301, ptr %8, align 8
  %1302 = extractvalue { ptr, i32 } %1300, 1
  store i32 %1302, ptr %9, align 4
  br label %1307

1303:                                             ; preds = %1276
  %1304 = landingpad { ptr, i32 }
          cleanup
  %1305 = extractvalue { ptr, i32 } %1304, 0
  store ptr %1305, ptr %8, align 8
  %1306 = extractvalue { ptr, i32 } %1304, 1
  store i32 %1306, ptr %9, align 4
  call void @_ZNSt4pairI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8ConstantEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(312) %120) #10
  br label %1307

1307:                                             ; preds = %1303, %1299
  call void @_ZN3HIR8TypeImpl10VisImplEntINS_8ConstantEED2Ev(ptr noundef nonnull align 8 dereferenceable(304) %121) #10
  br label %1308

1308:                                             ; preds = %1307, %1295
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %124) #10
  br label %1309

1309:                                             ; preds = %1308, %1291
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %123) #10
  br label %1310

1310:                                             ; preds = %1309, %1287
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %122) #10
  %1311 = load i1, ptr %125, align 1
  br i1 %1311, label %1312, label %1313

1312:                                             ; preds = %1310
  call void @_ZN3HIR9PublicityD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1252) #10
  br label %1313

1313:                                             ; preds = %1312, %1310
  br label %1314

1314:                                             ; preds = %1313, %1283
  call void @llvm.lifetime.end.p0(i64 304, ptr %121) #10
  call void @llvm.lifetime.end.p0(i64 312, ptr %120) #10
  br label %1346

1315:                                             ; preds = %1246
  br label %1316

1316:                                             ; preds = %1315
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #10
  store ptr @__FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE, ptr %127, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #10
  %1317 = load ptr, ptr %107, align 8, !tbaa !5
  %1318 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %1317, i32 0, i32 0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %128, ptr noundef nonnull align 8 dereferenceable(8) %1318)
          to label %1319 unwind label %1324

1319:                                             ; preds = %1316
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #10
  %1320 = getelementptr inbounds %class.anon.953, ptr %130, i32 0, i32 0
  store ptr %127, ptr %1320, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %129, ptr noundef nonnull align 8 dereferenceable(8) %130) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %128, ptr noundef %129)
          to label %1321 unwind label %1328

1321:                                             ; preds = %1319
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #10
  %1322 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1322, ptr noundef @.str.8)
          to label %1323 unwind label %1333

1323:                                             ; preds = %1321
  invoke void @__cxa_throw(ptr %1322, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1612 unwind label %1337

1324:                                             ; preds = %1316
  %1325 = landingpad { ptr, i32 }
          cleanup
  %1326 = extractvalue { ptr, i32 } %1325, 0
  store ptr %1326, ptr %8, align 8
  %1327 = extractvalue { ptr, i32 } %1325, 1
  store i32 %1327, ptr %9, align 4
  br label %1332

1328:                                             ; preds = %1319
  %1329 = landingpad { ptr, i32 }
          cleanup
  %1330 = extractvalue { ptr, i32 } %1329, 0
  store ptr %1330, ptr %8, align 8
  %1331 = extractvalue { ptr, i32 } %1329, 1
  store i32 %1331, ptr %9, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #10
  br label %1332

1332:                                             ; preds = %1328, %1324
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #10
  br label %1341

1333:                                             ; preds = %1321
  %1334 = landingpad { ptr, i32 }
          cleanup
  %1335 = extractvalue { ptr, i32 } %1334, 0
  store ptr %1335, ptr %8, align 8
  %1336 = extractvalue { ptr, i32 } %1334, 1
  store i32 %1336, ptr %9, align 4
  call void @__cxa_free_exception(ptr %1322) #10
  br label %1341

1337:                                             ; preds = %1323
  %1338 = landingpad { ptr, i32 }
          cleanup
  %1339 = extractvalue { ptr, i32 } %1338, 0
  store ptr %1339, ptr %8, align 8
  %1340 = extractvalue { ptr, i32 } %1338, 1
  store i32 %1340, ptr %9, align 4
  br label %1341

1341:                                             ; preds = %1337, %1333, %1332
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #10
  br label %1346

1342:                                             ; No predecessors!
  br label %1343

1343:                                             ; preds = %1342
  br label %1344

1344:                                             ; preds = %1343, %1278
  br label %1345

1345:                                             ; preds = %1344
  store i8 0, ptr %118, align 1, !tbaa !55
  br label %1234, !llvm.loop !162

1346:                                             ; preds = %1341, %1314, %1239
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #10
  br label %1418

1347:                                             ; preds = %1238
  br label %1348

1348:                                             ; preds = %1347
  store i8 0, ptr %118, align 1, !tbaa !55
  br label %1226, !llvm.loop !163

1349:                                             ; preds = %1229
  br label %1416

1350:                                             ; preds = %1148
  call void @llvm.lifetime.start.p0(i64 1, ptr %131) #10
  store i8 1, ptr %131, align 1, !tbaa !55
  br label %1351

1351:                                             ; preds = %1414, %1350
  %1352 = load i8, ptr %131, align 1, !tbaa !55, !range !53, !noundef !54
  %1353 = trunc i8 %1352 to i1
  br i1 %1353, label %1355, label %1354

1354:                                             ; preds = %1351
  store i32 94, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %131) #10
  br label %1415

1355:                                             ; preds = %1351
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #10
  %1356 = load ptr, ptr %110, align 8, !tbaa !5
  %1357 = invoke noundef nonnull align 8 dereferenceable(368) ptr @_ZN3AST4Item11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488) %1356)
          to label %1358 unwind label %1364

1358:                                             ; preds = %1355
  store ptr %1357, ptr %132, align 8, !tbaa !5
  br label %1359

1359:                                             ; preds = %1393, %1358
  %1360 = load ptr, ptr %132, align 8, !tbaa !5
  %1361 = load i8, ptr %131, align 1, !tbaa !55, !range !53, !noundef !54
  %1362 = trunc i8 %1361 to i1
  br i1 %1362, label %1368, label %1363

1363:                                             ; preds = %1359
  store i32 97, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #10
  br label %1413

1364:                                             ; preds = %1355
  %1365 = landingpad { ptr, i32 }
          cleanup
  %1366 = extractvalue { ptr, i32 } %1365, 0
  store ptr %1366, ptr %8, align 8
  %1367 = extractvalue { ptr, i32 } %1365, 1
  store i32 %1367, ptr %9, align 4
  br label %1412

1368:                                             ; preds = %1359
  call void @llvm.lifetime.start.p0(i64 384, ptr %133) #10
  %1369 = load ptr, ptr %107, align 8, !tbaa !5
  %1370 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %1369, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 376, ptr %134) #10
  %1371 = getelementptr inbounds %"struct.HIR::TypeImpl::VisImplEnt.960", ptr %134, i32 0, i32 0
  %1372 = load ptr, ptr %107, align 8, !tbaa !5
  %1373 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %1372, i32 0, i32 2
  invoke void @"_ZZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEENK3$_7clERKNS_10VisibilityE"(ptr dead_on_unwind writable sret(%"class.HIR::Publicity") align 8 %1371, ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull align 8 dereferenceable(36) %1373)
          to label %1374 unwind label %1394

1374:                                             ; preds = %1368
  %1375 = getelementptr inbounds %"struct.HIR::TypeImpl::VisImplEnt.960", ptr %134, i32 0, i32 1
  %1376 = load ptr, ptr %107, align 8, !tbaa !5
  %1377 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %1376, i32 0, i32 3
  %1378 = load i8, ptr %1377, align 8, !tbaa !63, !range !53, !noundef !54
  %1379 = trunc i8 %1378 to i1
  %1380 = zext i1 %1379 to i8
  store i8 %1380, ptr %1375, align 8, !tbaa !164
  %1381 = getelementptr inbounds %"struct.HIR::TypeImpl::VisImplEnt.960", ptr %134, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %135, ptr align 8 %108, i64 56, i1 false), !tbaa.struct !142
  %1382 = load ptr, ptr %107, align 8, !tbaa !5
  %1383 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %1382, i32 0, i32 1
  %1384 = load ptr, ptr %132, align 8, !tbaa !5
  invoke void @_Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::Function") align 8 %1381, ptr noundef byval(%"class.HIR::ItemPath") align 8 %135, ptr noundef nonnull align 8 dereferenceable(24) %1383, ptr noundef nonnull align 8 dereferenceable(368) %1384, ptr noundef nonnull align 8 dereferenceable(8) %99)
          to label %1385 unwind label %1398

1385:                                             ; preds = %1374
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR8TypeImpl10VisImplEntINS3_8FunctionEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind writable sret(%"struct.std::pair.958") align 8 %133, ptr noundef nonnull align 8 dereferenceable(8) %1370, ptr noundef nonnull align 8 dereferenceable(376) %134)
          to label %1386 unwind label %1402

1386:                                             ; preds = %1385
  %1387 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE6insertIS8_IS0_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %102, ptr noundef nonnull align 8 dereferenceable(384) %133)
          to label %1388 unwind label %1406

1388:                                             ; preds = %1386
  %1389 = getelementptr inbounds { ptr, i8 }, ptr %136, i32 0, i32 0
  %1390 = extractvalue { ptr, i8 } %1387, 0
  store ptr %1390, ptr %1389, align 8
  %1391 = getelementptr inbounds { ptr, i8 }, ptr %136, i32 0, i32 1
  %1392 = extractvalue { ptr, i8 } %1387, 1
  store i8 %1392, ptr %1391, align 8
  call void @_ZNSt4pairI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8FunctionEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(384) %133) #10
  call void @_ZN3HIR8TypeImpl10VisImplEntINS_8FunctionEED2Ev(ptr noundef nonnull align 8 dereferenceable(376) %134) #10
  call void @llvm.lifetime.end.p0(i64 376, ptr %134) #10
  call void @llvm.lifetime.end.p0(i64 384, ptr %133) #10
  br label %1393

1393:                                             ; preds = %1388
  store i8 0, ptr %131, align 1, !tbaa !55
  br label %1359, !llvm.loop !166

1394:                                             ; preds = %1368
  %1395 = landingpad { ptr, i32 }
          cleanup
  %1396 = extractvalue { ptr, i32 } %1395, 0
  store ptr %1396, ptr %8, align 8
  %1397 = extractvalue { ptr, i32 } %1395, 1
  store i32 %1397, ptr %9, align 4
  br label %1411

1398:                                             ; preds = %1374
  %1399 = landingpad { ptr, i32 }
          cleanup
  %1400 = extractvalue { ptr, i32 } %1399, 0
  store ptr %1400, ptr %8, align 8
  %1401 = extractvalue { ptr, i32 } %1399, 1
  store i32 %1401, ptr %9, align 4
  call void @_ZN3HIR9PublicityD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1371) #10
  br label %1411

1402:                                             ; preds = %1385
  %1403 = landingpad { ptr, i32 }
          cleanup
  %1404 = extractvalue { ptr, i32 } %1403, 0
  store ptr %1404, ptr %8, align 8
  %1405 = extractvalue { ptr, i32 } %1403, 1
  store i32 %1405, ptr %9, align 4
  br label %1410

1406:                                             ; preds = %1386
  %1407 = landingpad { ptr, i32 }
          cleanup
  %1408 = extractvalue { ptr, i32 } %1407, 0
  store ptr %1408, ptr %8, align 8
  %1409 = extractvalue { ptr, i32 } %1407, 1
  store i32 %1409, ptr %9, align 4
  call void @_ZNSt4pairI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8FunctionEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(384) %133) #10
  br label %1410

1410:                                             ; preds = %1406, %1402
  call void @_ZN3HIR8TypeImpl10VisImplEntINS_8FunctionEED2Ev(ptr noundef nonnull align 8 dereferenceable(376) %134) #10
  br label %1411

1411:                                             ; preds = %1410, %1398, %1394
  call void @llvm.lifetime.end.p0(i64 376, ptr %134) #10
  call void @llvm.lifetime.end.p0(i64 384, ptr %133) #10
  br label %1412

1412:                                             ; preds = %1411, %1364
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %131) #10
  br label %1418

1413:                                             ; preds = %1363
  br label %1414

1414:                                             ; preds = %1413
  store i8 0, ptr %131, align 1, !tbaa !55
  br label %1351, !llvm.loop !167

1415:                                             ; preds = %1354
  br label %1416

1416:                                             ; preds = %1415, %1349, %1224, %1201, %1178
  br label %1417

1417:                                             ; preds = %1416
  store i8 0, ptr %109, align 1, !tbaa !55
  br label %1141, !llvm.loop !168

1418:                                             ; preds = %1412, %1346, %1216, %1193, %1173, %1172, %1149
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #10
  br label %1424

1419:                                             ; preds = %1144
  br label %1420

1420:                                             ; preds = %1419
  store i8 0, ptr %109, align 1, !tbaa !55
  br label %1129, !llvm.loop !169

1421:                                             ; preds = %1132
  call void @llvm.lifetime.end.p0(i64 56, ptr %108) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #10
  br label %1422

1422:                                             ; preds = %1421
  %1423 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %105) #10
  br label %1107

1424:                                             ; preds = %1418, %1133
  call void @llvm.lifetime.end.p0(i64 56, ptr %108) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #10
  br label %1425

1425:                                             ; preds = %1424, %1118
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #10
  br label %1458

1426:                                             ; preds = %1109
  %1427 = load ptr, ptr %4, align 8, !tbaa !5
  %1428 = getelementptr inbounds %"class.HIR::Crate", ptr %1427, i32 0, i32 5
  %1429 = getelementptr inbounds %"struct.HIR::Crate::ImplGroup", ptr %1428, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #10
  call void @llvm.lifetime.start.p0(i64 208, ptr %138) #10
  %1430 = getelementptr inbounds %"class.HIR::TypeImpl", ptr %138, i32 0, i32 0
  call void @_ZN3HIR13GenericParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %1430, ptr noundef nonnull align 8 dereferenceable(96) %26) #10
  %1431 = getelementptr inbounds %"class.HIR::TypeImpl", ptr %138, i32 0, i32 1
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1431, ptr noundef nonnull align 8 dereferenceable(8) %99)
          to label %1432 unwind label %1439

1432:                                             ; preds = %1426
  %1433 = getelementptr inbounds %"class.HIR::TypeImpl", ptr %138, i32 0, i32 2
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2EOSC_(ptr noundef nonnull align 8 dereferenceable(48) %1433, ptr noundef nonnull align 8 dereferenceable(48) %102) #10
  %1434 = getelementptr inbounds %"class.HIR::TypeImpl", ptr %138, i32 0, i32 3
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2EOSC_(ptr noundef nonnull align 8 dereferenceable(48) %1434, ptr noundef nonnull align 8 dereferenceable(48) %103) #10
  %1435 = getelementptr inbounds %"class.HIR::TypeImpl", ptr %138, i32 0, i32 4
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1435, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %1436 unwind label %1443

1436:                                             ; preds = %1432
  invoke void @_Z15make_unique_ptrIN3HIR8TypeImplEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.961") align 8 %137, ptr noundef nonnull align 8 dereferenceable(208) %138)
          to label %1437 unwind label %1448

1437:                                             ; preds = %1436
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR8TypeImplESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %1429, ptr noundef nonnull align 8 dereferenceable(8) %137)
          to label %1438 unwind label %1452

1438:                                             ; preds = %1437
  call void @_ZNSt10unique_ptrIN3HIR8TypeImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #10
  call void @_ZN3HIR8TypeImplD2Ev(ptr noundef nonnull align 8 dereferenceable(208) %138) #10
  call void @llvm.lifetime.end.p0(i64 208, ptr %138) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #10
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %103) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %103) #10
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %102) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %102) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %100) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  br label %1461

1439:                                             ; preds = %1426
  %1440 = landingpad { ptr, i32 }
          cleanup
  %1441 = extractvalue { ptr, i32 } %1440, 0
  store ptr %1441, ptr %8, align 8
  %1442 = extractvalue { ptr, i32 } %1440, 1
  store i32 %1442, ptr %9, align 4
  br label %1447

1443:                                             ; preds = %1432
  %1444 = landingpad { ptr, i32 }
          cleanup
  %1445 = extractvalue { ptr, i32 } %1444, 0
  store ptr %1445, ptr %8, align 8
  %1446 = extractvalue { ptr, i32 } %1444, 1
  store i32 %1446, ptr %9, align 4
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %1434) #10
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %1433) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %1431) #10
  br label %1447

1447:                                             ; preds = %1443, %1439
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %1430) #10
  br label %1457

1448:                                             ; preds = %1436
  %1449 = landingpad { ptr, i32 }
          cleanup
  %1450 = extractvalue { ptr, i32 } %1449, 0
  store ptr %1450, ptr %8, align 8
  %1451 = extractvalue { ptr, i32 } %1449, 1
  store i32 %1451, ptr %9, align 4
  br label %1456

1452:                                             ; preds = %1437
  %1453 = landingpad { ptr, i32 }
          cleanup
  %1454 = extractvalue { ptr, i32 } %1453, 0
  store ptr %1454, ptr %8, align 8
  %1455 = extractvalue { ptr, i32 } %1453, 1
  store i32 %1455, ptr %9, align 4
  call void @_ZNSt10unique_ptrIN3HIR8TypeImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #10
  br label %1456

1456:                                             ; preds = %1452, %1448
  call void @_ZN3HIR8TypeImplD2Ev(ptr noundef nonnull align 8 dereferenceable(208) %138) #10
  br label %1457

1457:                                             ; preds = %1456, %1447
  call void @llvm.lifetime.end.p0(i64 208, ptr %138) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #10
  br label %1458

1458:                                             ; preds = %1457, %1425
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %103) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %103) #10
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %102) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %102) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #10
  br label %1459

1459:                                             ; preds = %1458, %1114
  call void @llvm.lifetime.end.p0(i64 56, ptr %100) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #10
  br label %1460

1460:                                             ; preds = %1459, %1110
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  br label %1467

1461:                                             ; preds = %1438, %1082
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %27) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr %27) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %26) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %26) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  store i32 0, ptr %22, align 4
  br label %1462

1462:                                             ; preds = %1461, %262
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  %1463 = load i32, ptr %22, align 4
  switch i32 %1463, label %1612 [
    i32 0, label %1464
    i32 9, label %1465
  ]

1464:                                             ; preds = %1462
  br label %1465

1465:                                             ; preds = %1464, %1462
  %1466 = 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) %20) #10
  br label %252

1467:                                             ; preds = %1460, %1088, %336
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %27) #10
  br label %1468

1468:                                             ; preds = %1467, %332, %328
  call void @llvm.lifetime.end.p0(i64 40, ptr %27) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %26) #10
  br label %1469

1469:                                             ; preds = %1468, %324
  call void @llvm.lifetime.end.p0(i64 96, ptr %26) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #10
  br label %1470

1470:                                             ; preds = %1469, %320
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  br label %1471

1471:                                             ; preds = %1470, %316
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  br label %1472

1472:                                             ; preds = %1471, %263
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  br label %1605

1473:                                             ; preds = %254
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #10
  %1474 = load ptr, ptr %3, align 8, !tbaa !5
  %1475 = getelementptr inbounds %"class.AST::Module", ptr %1474, i32 0, i32 1
  store ptr %1475, ptr %139, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #10
  %1476 = load ptr, ptr %139, align 8, !tbaa !5
  %1477 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1476) #10
  %1478 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.809", ptr %140, i32 0, i32 0
  store ptr %1477, ptr %1478, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #10
  %1479 = load ptr, ptr %139, align 8, !tbaa !5
  %1480 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1479) #10
  %1481 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.809", ptr %141, i32 0, i32 0
  store ptr %1480, ptr %1481, align 8
  br label %1482

1482:                                             ; preds = %1542, %1473
  %1483 = 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) %140, ptr noundef nonnull align 8 dereferenceable(8) %141) #10
  br i1 %1483, label %1485, label %1484

1484:                                             ; preds = %1482
  store i32 100, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #10
  br label %1604

1485:                                             ; preds = %1482
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #10
  %1486 = 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) %140) #10
  store ptr %1486, ptr %142, align 8, !tbaa !5
  %1487 = load ptr, ptr %142, align 8, !tbaa !5
  %1488 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1487) #10
  %1489 = getelementptr inbounds %"struct.AST::Named", ptr %1488, i32 0, i32 4
  %1490 = invoke noundef zeroext i1 @_ZNK3AST4Item10is_NegImplEv(ptr noundef nonnull align 8 dereferenceable(488) %1489)
          to label %1491 unwind label %1493

1491:                                             ; preds = %1485
  br i1 %1490, label %1497, label %1492

1492:                                             ; preds = %1491
  store i32 101, ptr %22, align 4
  br label %1539

1493:                                             ; preds = %1485
  %1494 = landingpad { ptr, i32 }
          cleanup
  %1495 = extractvalue { ptr, i32 } %1494, 0
  store ptr %1495, ptr %8, align 8
  %1496 = extractvalue { ptr, i32 } %1494, 1
  store i32 %1496, ptr %9, align 4
  br label %1603

1497:                                             ; preds = %1491
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #10
  %1498 = load ptr, ptr %142, align 8, !tbaa !5
  %1499 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1498) #10
  %1500 = getelementptr inbounds %"struct.AST::Named", ptr %1499, i32 0, i32 4
  %1501 = invoke noundef nonnull align 8 dereferenceable(448) ptr @_ZN3AST4Item10as_NegImplEv(ptr noundef nonnull align 8 dereferenceable(488) %1500)
          to label %1502 unwind label %1544

1502:                                             ; preds = %1497
  store ptr %1501, ptr %143, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 96, ptr %144) #10
  %1503 = load ptr, ptr %143, align 8, !tbaa !5
  %1504 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST7ImplDef6paramsEv(ptr noundef nonnull align 8 dereferenceable(448) %1503)
          to label %1505 unwind label %1548

1505:                                             ; preds = %1502
  invoke void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind writable sret(%"class.HIR::GenericParams") align 8 %144, ptr noundef nonnull align 8 dereferenceable(48) %1504, ptr noundef null)
          to label %1506 unwind label %1548

1506:                                             ; preds = %1505
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #10
  %1507 = load ptr, ptr %143, align 8, !tbaa !5
  %1508 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST7ImplDef4typeEv(ptr noundef nonnull align 8 dereferenceable(448) %1507)
          to label %1509 unwind label %1552

1509:                                             ; preds = %1506
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %145, ptr noundef nonnull align 8 dereferenceable(120) %1508)
          to label %1510 unwind label %1552

1510:                                             ; preds = %1509
  call void @llvm.lifetime.start.p0(i64 32, ptr %146) #10
  %1511 = load ptr, ptr %143, align 8, !tbaa !5
  %1512 = invoke noundef nonnull align 8 dereferenceable(248) ptr @_ZNK3AST7ImplDef5traitEv(ptr noundef nonnull align 8 dereferenceable(448) %1511)
          to label %1513 unwind label %1556

1513:                                             ; preds = %1510
  %1514 = getelementptr inbounds %struct.Spanned.455, ptr %1512, i32 0, i32 0
  %1515 = load ptr, ptr %143, align 8, !tbaa !5
  %1516 = invoke noundef nonnull align 8 dereferenceable(248) ptr @_ZNK3AST7ImplDef5traitEv(ptr noundef nonnull align 8 dereferenceable(448) %1515)
          to label %1517 unwind label %1556

1517:                                             ; preds = %1513
  %1518 = getelementptr inbounds %struct.Spanned.455, ptr %1516, i32 0, i32 1
  invoke void @_Z20LowerHIR_GenericPathRK4SpanRKN3AST4PathE17FromAST_PathClassb(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %146, ptr noundef nonnull align 8 dereferenceable(8) %1514, ptr noundef nonnull align 8 dereferenceable(240) %1518, i32 noundef 0, i1 noundef zeroext false)
          to label %1519 unwind label %1556

1519:                                             ; preds = %1517
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #10
  %1520 = getelementptr inbounds %"class.HIR::GenericPath", ptr %146, i32 0, i32 0
  invoke void @_ZN3HIR10SimplePathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef nonnull align 8 dereferenceable(8) %1520)
          to label %1521 unwind label %1560

1521:                                             ; preds = %1519
  call void @llvm.lifetime.start.p0(i64 24, ptr %148) #10
  %1522 = getelementptr inbounds %"class.HIR::GenericPath", ptr %146, i32 0, i32 1
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %148, ptr noundef nonnull align 8 dereferenceable(24) %1522)
          to label %1523 unwind label %1564

1523:                                             ; preds = %1521
  %1524 = load ptr, ptr %4, align 8, !tbaa !5
  %1525 = getelementptr inbounds %"class.HIR::Crate", ptr %1524, i32 0, i32 8
  %1526 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt3mapIN3HIR10SimplePathENS0_5Crate9ImplGroupISt10unique_ptrINS0_10MarkerImplESt14default_deleteIS5_EEEESt4lessIS1_ESaISt4pairIKS1_S9_EEEixEOS1_(ptr noundef nonnull align 8 dereferenceable(48) %1525, ptr noundef nonnull align 8 dereferenceable(8) %147)
          to label %1527 unwind label %1568

1527:                                             ; preds = %1523
  %1528 = getelementptr inbounds %"struct.HIR::Crate::ImplGroup.916", ptr %1526, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #10
  call void @llvm.lifetime.start.p0(i64 144, ptr %150) #10
  %1529 = getelementptr inbounds %"class.HIR::MarkerImpl", ptr %150, i32 0, i32 0
  call void @_ZN3HIR13GenericParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %1529, ptr noundef nonnull align 8 dereferenceable(96) %144) #10
  %1530 = getelementptr inbounds %"class.HIR::MarkerImpl", ptr %150, i32 0, i32 1
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %1530, ptr noundef nonnull align 8 dereferenceable(24) %148)
          to label %1531 unwind label %1572

1531:                                             ; preds = %1527
  %1532 = getelementptr inbounds %"class.HIR::MarkerImpl", ptr %150, i32 0, i32 2
  store i8 0, ptr %1532, align 8, !tbaa !147
  %1533 = getelementptr inbounds %"class.HIR::MarkerImpl", ptr %150, i32 0, i32 3
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1533, ptr noundef nonnull align 8 dereferenceable(8) %145)
          to label %1534 unwind label %1576

1534:                                             ; preds = %1531
  %1535 = getelementptr inbounds %"class.HIR::MarkerImpl", ptr %150, i32 0, i32 4
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1535, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %1536 unwind label %1580

1536:                                             ; preds = %1534
  invoke void @_Z15make_unique_ptrIN3HIR10MarkerImplEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.927") align 8 %149, ptr noundef nonnull align 8 dereferenceable(144) %150)
          to label %1537 unwind label %1586

1537:                                             ; preds = %1536
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR10MarkerImplESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %1528, ptr noundef nonnull align 8 dereferenceable(8) %149)
          to label %1538 unwind label %1590

1538:                                             ; preds = %1537
  call void @_ZNSt10unique_ptrIN3HIR10MarkerImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %149) #10
  call void @_ZN3HIR10MarkerImplD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %150) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr %150) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %148) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %148) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %147) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #10
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %144) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %144) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #10
  store i32 0, ptr %22, align 4
  br label %1539

1539:                                             ; preds = %1538, %1492
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #10
  %1540 = load i32, ptr %22, align 4
  switch i32 %1540, label %1612 [
    i32 0, label %1541
    i32 101, label %1542
  ]

1541:                                             ; preds = %1539
  br label %1542

1542:                                             ; preds = %1541, %1539
  %1543 = 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) %140) #10
  br label %1482

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

1548:                                             ; preds = %1505, %1502
  %1549 = landingpad { ptr, i32 }
          cleanup
  %1550 = extractvalue { ptr, i32 } %1549, 0
  store ptr %1550, ptr %8, align 8
  %1551 = extractvalue { ptr, i32 } %1549, 1
  store i32 %1551, ptr %9, align 4
  br label %1601

1552:                                             ; preds = %1509, %1506
  %1553 = landingpad { ptr, i32 }
          cleanup
  %1554 = extractvalue { ptr, i32 } %1553, 0
  store ptr %1554, ptr %8, align 8
  %1555 = extractvalue { ptr, i32 } %1553, 1
  store i32 %1555, ptr %9, align 4
  br label %1600

1556:                                             ; preds = %1517, %1513, %1510
  %1557 = landingpad { ptr, i32 }
          cleanup
  %1558 = extractvalue { ptr, i32 } %1557, 0
  store ptr %1558, ptr %8, align 8
  %1559 = extractvalue { ptr, i32 } %1557, 1
  store i32 %1559, ptr %9, align 4
  br label %1599

1560:                                             ; preds = %1519
  %1561 = landingpad { ptr, i32 }
          cleanup
  %1562 = extractvalue { ptr, i32 } %1561, 0
  store ptr %1562, ptr %8, align 8
  %1563 = extractvalue { ptr, i32 } %1561, 1
  store i32 %1563, ptr %9, align 4
  br label %1598

1564:                                             ; preds = %1521
  %1565 = landingpad { ptr, i32 }
          cleanup
  %1566 = extractvalue { ptr, i32 } %1565, 0
  store ptr %1566, ptr %8, align 8
  %1567 = extractvalue { ptr, i32 } %1565, 1
  store i32 %1567, ptr %9, align 4
  br label %1597

1568:                                             ; preds = %1523
  %1569 = landingpad { ptr, i32 }
          cleanup
  %1570 = extractvalue { ptr, i32 } %1569, 0
  store ptr %1570, ptr %8, align 8
  %1571 = extractvalue { ptr, i32 } %1569, 1
  store i32 %1571, ptr %9, align 4
  br label %1596

1572:                                             ; preds = %1527
  %1573 = landingpad { ptr, i32 }
          cleanup
  %1574 = extractvalue { ptr, i32 } %1573, 0
  store ptr %1574, ptr %8, align 8
  %1575 = extractvalue { ptr, i32 } %1573, 1
  store i32 %1575, ptr %9, align 4
  br label %1585

1576:                                             ; preds = %1531
  %1577 = landingpad { ptr, i32 }
          cleanup
  %1578 = extractvalue { ptr, i32 } %1577, 0
  store ptr %1578, ptr %8, align 8
  %1579 = extractvalue { ptr, i32 } %1577, 1
  store i32 %1579, ptr %9, align 4
  br label %1584

1580:                                             ; preds = %1534
  %1581 = landingpad { ptr, i32 }
          cleanup
  %1582 = extractvalue { ptr, i32 } %1581, 0
  store ptr %1582, ptr %8, align 8
  %1583 = extractvalue { ptr, i32 } %1581, 1
  store i32 %1583, ptr %9, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %1533) #10
  br label %1584

1584:                                             ; preds = %1580, %1576
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1530) #10
  br label %1585

1585:                                             ; preds = %1584, %1572
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %1529) #10
  br label %1595

1586:                                             ; preds = %1536
  %1587 = landingpad { ptr, i32 }
          cleanup
  %1588 = extractvalue { ptr, i32 } %1587, 0
  store ptr %1588, ptr %8, align 8
  %1589 = extractvalue { ptr, i32 } %1587, 1
  store i32 %1589, ptr %9, align 4
  br label %1594

1590:                                             ; preds = %1537
  %1591 = landingpad { ptr, i32 }
          cleanup
  %1592 = extractvalue { ptr, i32 } %1591, 0
  store ptr %1592, ptr %8, align 8
  %1593 = extractvalue { ptr, i32 } %1591, 1
  store i32 %1593, ptr %9, align 4
  call void @_ZNSt10unique_ptrIN3HIR10MarkerImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %149) #10
  br label %1594

1594:                                             ; preds = %1590, %1586
  call void @_ZN3HIR10MarkerImplD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %150) #10
  br label %1595

1595:                                             ; preds = %1594, %1585
  call void @llvm.lifetime.end.p0(i64 144, ptr %150) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #10
  br label %1596

1596:                                             ; preds = %1595, %1568
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %148) #10
  br label %1597

1597:                                             ; preds = %1596, %1564
  call void @llvm.lifetime.end.p0(i64 24, ptr %148) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %147) #10
  br label %1598

1598:                                             ; preds = %1597, %1560
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #10
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #10
  br label %1599

1599:                                             ; preds = %1598, %1556
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #10
  br label %1600

1600:                                             ; preds = %1599, %1552
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %144) #10
  br label %1601

1601:                                             ; preds = %1600, %1548
  call void @llvm.lifetime.end.p0(i64 96, ptr %144) #10
  br label %1602

1602:                                             ; preds = %1601, %1544
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #10
  br label %1603

1603:                                             ; preds = %1602, %1493
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #10
  br label %1605

1604:                                             ; preds = %1484
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #10
  ret void

1605:                                             ; preds = %1603, %1472, %242, %202
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #10
  br label %1606

1606:                                             ; preds = %1605, %188
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #10
  br label %1607

1607:                                             ; preds = %1606
  %1608 = load ptr, ptr %8, align 8
  %1609 = load i32, ptr %9, align 4
  %1610 = insertvalue { ptr, i32 } poison, ptr %1608, 0
  %1611 = insertvalue { ptr, i32 } %1610, i32 %1609, 1
  resume { ptr, i32 } %1611

1612:                                             ; preds = %1539, %1462, %1323, %1163, %693, %545, %378, %315
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #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: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN3AST4Item10opt_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488)) #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorISt10shared_ptrIN3AST6ModuleEESaIS3_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_cxxneIPKSt10shared_ptrIN3AST6ModuleEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN3AST4Impl8ImplItemESaIS2_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_cxxneIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #0

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRK8RcStringN3HIR9TraitImpl7ImplEntINS3_8ConstantEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.875") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(288)) #5

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, i64 noundef) #7

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRK8RcStringN3HIR9TraitImpl7ImplEntINS3_7TypeRefEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.882") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(16)) #5

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRK8RcStringN3HIR9TraitImpl7ImplEntINS3_8FunctionEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.889") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(360)) #5

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueIN3HIR9TraitImplEJS1_EENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.903") align 8, ptr noundef nonnull align 8 dereferenceable(328)) #7

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15make_unique_ptrIN3HIR10MarkerImplEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.927") align 8, ptr noundef nonnull align 8 dereferenceable(144)) #5

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRK8RcStringN3HIR8TypeImpl10VisImplEntINS3_8ConstantEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.951") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(304)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEENK3$_7clERKNS_10VisibilityE"(ptr dead_on_unwind noalias writable sret(%"class.HIR::Publicity") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(36)) #7 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRK8RcStringN3HIR8TypeImpl10VisImplEntINS3_8FunctionEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.958") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(376)) #5

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15make_unique_ptrIN3HIR8TypeImplEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.961") align 8, ptr noundef nonnull align 8 dereferenceable(208)) #5

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

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

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

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

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

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

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

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

attributes #0 = { 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 #1 = { 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 #2 = { noreturn 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 #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 = { 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 #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 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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #10 = { nounwind }
attributes #11 = { noreturn }
attributes #12 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"_ZTSN3AST16PathBinding_Type10Data_TraitE", !6, i64 0, !6, i64 8}
!13 = !{!12, !6, i64 8}
!14 = !{!15, !38, i64 128}
!15 = !{!"_ZTSN3HIR5TraitE", !16, i64 0, !33, i64 96, !34, i64 104, !38, i64 128, !39, i64 136, !45, i64 192, !47, i64 248, !49, i64 304, !10, i64 360, !34, i64 368, !51, i64 392}
!16 = !{!"_ZTSN3HIR13GenericParamsE", !17, i64 0, !21, i64 24, !25, i64 48, !29, i64 72}
!17 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!29 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!33 = !{!"_ZTSN3HIR11LifetimeRefE", !10, i64 0}
!34 = !{!"_ZTSSt6vectorIN3HIR9TraitPathESaIS1_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{!"bool", !7, i64 0}
!39 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !40, i64 0}
!40 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14AssociatedTypeEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !41, i64 8, !42, i64 16, !41, i64 24, !43, i64 32, !6, i64 48}
!41 = !{!"long", !7, i64 0}
!42 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!43 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !44, i64 0, !41, i64 8}
!44 = !{!"float", !7, i64 0}
!45 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !46, i64 0}
!46 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14TraitValueItemEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !41, i64 8, !42, i64 16, !41, i64 24, !43, i64 32, !6, i64 48}
!47 = !{!"_ZTSSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE", !48, i64 0}
!48 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_S1_IjN3HIR11GenericPathEEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb0EEEE", !6, i64 0, !41, i64 8, !42, i64 16, !41, i64 24, !43, i64 32, !6, i64 48}
!49 = !{!"_ZTSSt13unordered_mapI8RcStringjSt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_jEEE", !50, i64 0}
!50 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_jESaIS3_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !41, i64 8, !42, i64 16, !41, i64 24, !43, i64 32, !6, i64 48}
!51 = !{!"_ZTSN3HIR10SimplePathE", !52, i64 0}
!52 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!53 = !{i8 0, i8 2}
!54 = !{}
!55 = !{!38, !38, i64 0}
!56 = distinct !{!56, !57}
!57 = !{!"llvm.loop.mustprogress"}
!58 = distinct !{!58, !57}
!59 = distinct !{!59, !57}
!60 = distinct !{!60, !57}
!61 = !{!62, !62, i64 0}
!62 = !{!"_ZTSN3AST6Static5ClassE", !7, i64 0}
!63 = !{!64, !38, i64 72}
!64 = !{!"_ZTSN3AST4Impl8ImplItemE", !65, i64 0, !66, i64 8, !71, i64 32, !38, i64 72, !78, i64 80, !79, i64 88}
!65 = !{!"_ZTS4Span", !6, i64 0}
!66 = !{!"_ZTSN3AST13AttributeListE", !67, i64 0}
!67 = !{!"_ZTSSt6vectorIN3AST9AttributeESaIS1_EE", !68, i64 0}
!68 = !{!"_ZTSSt12_Vector_baseIN3AST9AttributeESaIS1_EE", !69, i64 0}
!69 = !{!"_ZTSNSt12_Vector_baseIN3AST9AttributeESaIS1_EE12_Vector_implE", !70, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseIN3AST9AttributeESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!71 = !{!"_ZTSN3AST10VisibilityE", !72, i64 0, !75, i64 16, !77, i64 32}
!72 = !{!"_ZTSSt10shared_ptrIN3AST4PathEE", !73, i64 0}
!73 = !{!"_ZTSSt12__shared_ptrIN3AST4PathELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !74, i64 8}
!74 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!75 = !{!"_ZTSSt10shared_ptrIN3AST12AbsolutePathEE", !76, i64 0}
!76 = !{!"_ZTSSt12__shared_ptrIN3AST12AbsolutePathELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !74, i64 8}
!77 = !{!"_ZTSN3AST10Visibility2TyE", !7, i64 0}
!78 = !{!"_ZTS8RcString", !6, i64 0}
!79 = !{!"_ZTSSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EE", !80, i64 0}
!80 = !{!"_ZTSSt15__uniq_ptr_dataIN3AST4ItemESt14default_deleteIS1_ELb1ELb1EE", !81, i64 0}
!81 = !{!"_ZTSSt15__uniq_ptr_implIN3AST4ItemESt14default_deleteIS1_EE", !82, i64 0}
!82 = !{!"_ZTSSt5tupleIJPN3AST4ItemESt14default_deleteIS1_EEE", !83, i64 0}
!83 = !{!"_ZTSSt11_Tuple_implILm0EJPN3AST4ItemESt14default_deleteIS1_EEE", !84, i64 0}
!84 = !{!"_ZTSSt10_Head_baseILm0EPN3AST4ItemELb0EE", !6, i64 0}
!85 = !{!86, !38, i64 0}
!86 = !{!"_ZTSN3HIR9TraitImpl7ImplEntINS_8ConstantEEE", !38, i64 0, !87, i64 8}
!87 = !{!"_ZTSN3HIR8ConstantE", !16, i64 0, !88, i64 96, !89, i64 104, !97, i64 176, !106, i64 224, !107, i64 232}
!88 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!89 = !{!"_ZTSN3HIR7ExprPtrE", !90, i64 0, !91, i64 8, !91, i64 32, !95, i64 56, !96, i64 64}
!90 = !{!"_ZTSN3HIR12ExprPtrInnerE", !6, i64 0}
!91 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !92, i64 0}
!92 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !93, i64 0}
!93 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !94, i64 0}
!94 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!95 = !{!"_ZTSN3MIR15FunctionPointerE", !6, i64 0}
!96 = !{!"_ZTSN3HIR12ExprStatePtrE", !6, i64 0}
!97 = !{!"_ZTS14EncodedLiteral", !98, i64 0, !102, i64 24}
!98 = !{!"_ZTSSt6vectorIhSaIhEE", !99, i64 0}
!99 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !100, i64 0}
!100 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !101, i64 0}
!101 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!102 = !{!"_ZTSSt6vectorI5RelocSaIS0_EE", !103, i64 0}
!103 = !{!"_ZTSSt12_Vector_baseI5RelocSaIS0_EE", !104, i64 0}
!104 = !{!"_ZTSNSt12_Vector_baseI5RelocSaIS0_EE12_Vector_implE", !105, i64 0}
!105 = !{!"_ZTSNSt12_Vector_baseI5RelocSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!106 = !{!"_ZTSN3HIR8Constant10ValueStateE", !7, i64 0}
!107 = !{!"_ZTSSt3mapIN3HIR4PathE14EncodedLiteralSt4lessIS1_ESaISt4pairIKS1_S2_EEE", !108, i64 0}
!108 = !{!"_ZTSSt8_Rb_treeIN3HIR4PathESt4pairIKS1_14EncodedLiteralESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !109, i64 0}
!109 = !{!"_ZTSNSt8_Rb_treeIN3HIR4PathESt4pairIKS1_14EncodedLiteralESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !110, i64 0, !112, i64 8}
!110 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR4PathEEE", !111, i64 0}
!111 = !{!"_ZTSSt4lessIN3HIR4PathEE"}
!112 = !{!"_ZTSSt15_Rb_tree_header", !113, i64 0, !41, i64 32}
!113 = !{!"_ZTSSt18_Rb_tree_node_base", !114, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!114 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!115 = distinct !{!115, !57}
!116 = distinct !{!116, !57}
!117 = !{!118, !6, i64 0}
!118 = !{!"_ZTSN12_GLOBAL__N_115ImplTraitSourceE", !6, i64 0, !6, i64 8, !6, i64 16}
!119 = !{i64 0, i64 8, !5, i64 8, i64 8, !5, i64 16, i64 8, !5}
!120 = !{!121, !38, i64 0}
!121 = !{!"_ZTSN3HIR9TraitImpl7ImplEntINS_7TypeRefEEE", !38, i64 0, !88, i64 8}
!122 = distinct !{!122, !57}
!123 = distinct !{!123, !57}
!124 = !{!125, !38, i64 0}
!125 = !{!"_ZTSN3HIR9TraitImpl7ImplEntINS_8FunctionEEE", !38, i64 0, !126, i64 8}
!126 = !{!"_ZTSN3HIR8FunctionE", !38, i64 0, !127, i64 8, !131, i64 80, !88, i64 88, !78, i64 96, !38, i64 104, !38, i64 105, !16, i64 112, !132, i64 208, !38, i64 232, !88, i64 240, !89, i64 248, !136, i64 320}
!127 = !{!"_ZTSN3HIR7LinkageE", !128, i64 0, !129, i64 8, !129, i64 40}
!128 = !{!"_ZTSN3HIR7Linkage4TypeE", !7, i64 0}
!129 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !130, i64 0, !41, i64 8, !7, i64 16}
!130 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!131 = !{!"_ZTSN3HIR8Function8ReceiverE", !7, i64 0}
!132 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !133, i64 0}
!133 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !134, i64 0}
!134 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !135, i64 0}
!135 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!136 = !{!"_ZTSN3HIR8Function8MarkingsE", !137, i64 0, !38, i64 24, !141, i64 28}
!137 = !{!"_ZTSSt6vectorIjSaIjEE", !138, i64 0}
!138 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !139, i64 0}
!139 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !140, i64 0}
!140 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!141 = !{!"_ZTSN3HIR8Function8Markings6InlineE", !7, i64 0}
!142 = !{i64 0, i64 8, !5, i64 8, i64 8, !5, i64 16, i64 8, !5, i64 24, i64 8, !5, i64 32, i64 8, !5, i64 40, i64 8, !5, i64 48, i64 8, !5}
!143 = distinct !{!143, !57}
!144 = distinct !{!144, !57}
!145 = distinct !{!145, !57}
!146 = distinct !{!146, !57}
!147 = !{!148, !38, i64 120}
!148 = !{!"_ZTSN3HIR10MarkerImplE", !16, i64 0, !149, i64 96, !38, i64 120, !88, i64 128, !51, i64 136}
!149 = !{!"_ZTSN3HIR10PathParamsE", !150, i64 0, !151, i64 8, !152, i64 16}
!150 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!151 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!152 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!153 = distinct !{!153, !57}
!154 = distinct !{!154, !57}
!155 = distinct !{!155, !57}
!156 = distinct !{!156, !57}
!157 = !{!158, !38, i64 16}
!158 = !{!"_ZTSN3HIR8TypeImpl10VisImplEntINS_8ConstantEEE", !159, i64 0, !38, i64 16, !87, i64 24}
!159 = !{!"_ZTSN3HIR9PublicityE", !160, i64 0}
!160 = !{!"_ZTSSt10shared_ptrIN3HIR10SimplePathEE", !161, i64 0}
!161 = !{!"_ZTSSt12__shared_ptrIN3HIR10SimplePathELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !74, i64 8}
!162 = distinct !{!162, !57}
!163 = distinct !{!163, !57}
!164 = !{!165, !38, i64 16}
!165 = !{!"_ZTSN3HIR8TypeImpl10VisImplEntINS_8FunctionEEE", !159, i64 0, !38, i64 16, !126, i64 24}
!166 = distinct !{!166, !57}
!167 = distinct !{!167, !57}
!168 = distinct !{!168, !57}
!169 = distinct !{!169, !57}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%class.RcString = type { ptr }
%"struct.(anonymous namespace)::ImplTraitSource" = type { ptr, ptr, ptr }
%"class.HIR::GenericParams" = type { %"class.std::vector.8", %"class.std::vector.13", %"class.std::vector.18", %"class.std::vector.23" }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::TypeRef" = type { ptr }
%"class.HIR::ExprPtr" = type { %"class.HIR::ExprPtrInner", %"class.std::vector.93", %"class.std::vector.93", %"class.MIR::FunctionPointer", %"class.HIR::ExprStatePtr" }
%"class.HIR::ExprPtrInner" = type { ptr }
%"class.std::vector.93" = type { %"struct.std::_Vector_base.94" }
%"struct.std::_Vector_base.94" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::FunctionPointer" = type { ptr }
%"class.HIR::ExprStatePtr" = type { ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.114, %class.ThinVector.115, %class.ThinVector.116 }
%class.ThinVector.114 = type { ptr }
%class.ThinVector.115 = type { ptr }
%class.ThinVector.116 = type { ptr }
%"class.HIR::Function" = type { i8, %"struct.HIR::Linkage", i32, %"class.HIR::TypeRef", %class.RcString, i8, i8, %"class.HIR::GenericParams", %"class.std::vector.529", i8, %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %"struct.HIR::Function::Markings" }
%"struct.HIR::Linkage" = type { i32, %"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::vector.529" = type { %"struct.std::_Vector_base.530" }
%"struct.std::_Vector_base.530" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Function::Markings" = type { %"class.std::vector.510", i8, i32 }
%"class.std::vector.510" = type { %"struct.std::_Vector_base.511" }
%"struct.std::_Vector_base.511" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, 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.__gnu_cxx::__normal_iterator.809" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.841" = type { ptr }
%struct.Span = type { 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.842 = type { ptr }
%class.anon.843 = type { ptr }
%class.anon.844 = type { i8 }
%"class.std::map.846" = type { %"class.std::_Rb_tree.847" }
%"class.std::_Rb_tree.847" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>>, std::less<RcString>>::_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.std::map.851" = type { %"class.std::_Rb_tree.852" }
%"class.std::_Rb_tree.852" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.856" = type { %"class.std::_Rb_tree.857" }
%"class.std::_Rb_tree.857" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.__gnu_cxx::__normal_iterator.861" = type { ptr }
%class.anon.870 = type { ptr }
%"struct.std::pair.875" = type { %class.RcString, %"struct.HIR::TraitImpl::ImplEnt" }
%"struct.HIR::TraitImpl::ImplEnt" = type { i8, %"class.HIR::Constant" }
%"class.HIR::Constant" = type { %"class.HIR::GenericParams", %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %struct.EncodedLiteral, i32, %"class.std::map.551" }
%struct.EncodedLiteral = type { %"class.std::vector.541", %"class.std::vector.546" }
%"class.std::vector.541" = type { %"struct.std::_Vector_base.542" }
%"struct.std::_Vector_base.542" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.546" = type { %"struct.std::_Vector_base.547" }
%"struct.std::_Vector_base.547" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.551" = type { %"class.std::_Rb_tree.552" }
%"class.std::_Rb_tree.552" = type { %"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, EncodedLiteral>, std::_Select1st<std::pair<const HIR::Path, EncodedLiteral>>, std::less<HIR::Path>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, EncodedLiteral>, std::_Select1st<std::pair<const HIR::Path, EncodedLiteral>>, std::less<HIR::Path>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%class.anon.877 = type { ptr }
%"class.std::allocator.56" = type { i8 }
%"struct.std::pair.882" = type { %class.RcString, %"struct.HIR::TraitImpl::ImplEnt.884" }
%"struct.HIR::TraitImpl::ImplEnt.884" = type { i8, %"class.HIR::TypeRef" }
%"struct.std::pair.889" = type { %class.RcString, %"struct.HIR::TraitImpl::ImplEnt.891" }
%"struct.HIR::TraitImpl::ImplEnt.891" = type { i8, %"class.HIR::Function" }
%"class.std::unique_ptr.903" = type { %"struct.std::__uniq_ptr_data.904" }
%"struct.std::__uniq_ptr_data.904" = type { %"class.std::__uniq_ptr_impl.905" }
%"class.std::__uniq_ptr_impl.905" = type { %"class.std::tuple.906" }
%"class.std::tuple.906" = type { %"struct.std::_Tuple_impl.907" }
%"struct.std::_Tuple_impl.907" = type { %"struct.std::_Head_base.910" }
%"struct.std::_Head_base.910" = type { ptr }
%"class.HIR::TraitImpl" = type { %"class.HIR::GenericParams", %"struct.HIR::PathParams", %"class.HIR::TypeRef", %"class.std::map.846", %"class.std::map.851", %"class.std::map.911", %"class.std::map.856", %"struct.HIR::SimplePath" }
%"class.std::map.911" = type { %"class.std::_Rb_tree.912" }
%"class.std::_Rb_tree.912" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::unique_ptr.927" = type { %"struct.std::__uniq_ptr_data.928" }
%"struct.std::__uniq_ptr_data.928" = type { %"class.std::__uniq_ptr_impl.929" }
%"class.std::__uniq_ptr_impl.929" = type { %"class.std::tuple.930" }
%"class.std::tuple.930" = type { %"struct.std::_Tuple_impl.931" }
%"struct.std::_Tuple_impl.931" = type { %"struct.std::_Head_base.934" }
%"struct.std::_Head_base.934" = type { ptr }
%"class.HIR::MarkerImpl" = type { %"class.HIR::GenericParams", %"struct.HIR::PathParams", i8, %"class.HIR::TypeRef", %"struct.HIR::SimplePath" }
%class.anon.935 = type { ptr }
%"class.std::map.936" = type { %"class.std::_Rb_tree.937" }
%"class.std::_Rb_tree.937" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TypeImpl::VisImplEnt<HIR::Function>>, std::_Select1st<std::pair<const RcString, HIR::TypeImpl::VisImplEnt<HIR::Function>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TypeImpl::VisImplEnt<HIR::Function>>, std::_Select1st<std::pair<const RcString, HIR::TypeImpl::VisImplEnt<HIR::Function>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.941" = type { %"class.std::_Rb_tree.942" }
%"class.std::_Rb_tree.942" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TypeImpl::VisImplEnt<HIR::Constant>>, std::_Select1st<std::pair<const RcString, HIR::TypeImpl::VisImplEnt<HIR::Constant>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TypeImpl::VisImplEnt<HIR::Constant>>, std::_Select1st<std::pair<const RcString, HIR::TypeImpl::VisImplEnt<HIR::Constant>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%class.anon.946 = type { ptr }
%"struct.std::pair.951" = type { %class.RcString, %"struct.HIR::TypeImpl::VisImplEnt" }
%"struct.HIR::TypeImpl::VisImplEnt" = type { %"class.HIR::Publicity", i8, %"class.HIR::Constant" }
%"class.HIR::Publicity" = type { %"class.std::shared_ptr" }
%"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.anon.953 = type { ptr }
%"struct.std::pair.958" = type { %class.RcString, %"struct.HIR::TypeImpl::VisImplEnt.960" }
%"struct.HIR::TypeImpl::VisImplEnt.960" = type { %"class.HIR::Publicity", i8, %"class.HIR::Function" }
%"class.std::unique_ptr.961" = type { %"struct.std::__uniq_ptr_data.962" }
%"struct.std::__uniq_ptr_data.962" = type { %"class.std::__uniq_ptr_impl.963" }
%"class.std::__uniq_ptr_impl.963" = type { %"class.std::tuple.964" }
%"class.std::tuple.964" = type { %"struct.std::_Tuple_impl.965" }
%"struct.std::_Tuple_impl.965" = type { %"struct.std::_Head_base.968" }
%"struct.std::_Head_base.968" = type { ptr }
%"class.HIR::TypeImpl" = type { %"class.HIR::GenericParams", %"class.HIR::TypeRef", %"class.std::map.936", %"class.std::map.941", %"struct.HIR::SimplePath" }

@g_crate_name = external dso_local global %class.RcString, align 8
@.str.5 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.9 = external hidden unnamed_addr constant [17 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@_ZN12_GLOBAL__N_119g_impl_trait_sourceE = external hidden local_unnamed_addr global %"struct.(anonymous namespace)::ImplTraitSource", align 8
@.str.31 = external hidden unnamed_addr constant [26 x i8], align 1
@__FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE = external hidden unnamed_addr constant [22 x i8], align 1
@__PRETTY_FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE = external hidden unnamed_addr constant [66 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [10 x i8], align 1

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

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) 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

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI8RcStringSaIS0_EED2Ev(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: mustprogress uwtable
declare dso_local void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind noalias writable sret(%"class.HIR::GenericParams") align 8, ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z13LowerHIR_ExprRKN3AST4ExprE(ptr dead_on_unwind noalias writable sret(%"class.HIR::ExprPtr") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5

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

declare void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #6

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #6

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z20LowerHIR_GenericPathRK4SpanRKN3AST4PathE17FromAST_PathClassb(ptr dead_on_unwind noalias writable sret(%"class.HIR::GenericPath") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(240), i32 noundef, i1 noundef zeroext) local_unnamed_addr #5

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #6

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress 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) #9

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

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

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

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

declare noundef zeroext i1 @_ZNK3AST5Trait9is_markerEv(ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3HIR13GenericParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #0 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE(ptr dead_on_unwind noalias writable sret(%"class.HIR::Function") align 8, ptr noundef byval(%"class.HIR::ItemPath") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(368), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

; 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 uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_8ItemPathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #5

; 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 void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) 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
define dso_local void @_Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(480) %0, ptr noundef nonnull align 8 dereferenceable(944) %1) local_unnamed_addr #5 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"struct.HIR::SimplePath", align 8
  %4 = alloca %class.RcString, align 8
  %5 = alloca %"class.std::vector", align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.809", align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.809", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.841", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator.841", align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator.809", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.809", align 8
  %12 = alloca %struct.Span, align 8
  %13 = alloca %"class.HIR::GenericParams", align 8
  %14 = alloca %class.TraceLog, align 8
  %15 = alloca %"class.std::function", align 8
  %16 = alloca %class.anon.842, align 8
  %17 = alloca %struct.Span, align 8
  %18 = alloca %"class.std::function", align 8
  %19 = alloca %class.anon.843, align 8
  %20 = alloca %struct.Span, align 8
  %21 = alloca %"class.std::function", align 8
  %22 = alloca %class.anon.844, align 1
  %23 = alloca %"class.HIR::GenericPath", align 8
  %24 = alloca %"struct.HIR::SimplePath", align 8
  %25 = alloca %"struct.HIR::PathParams", align 8
  %26 = alloca %"class.HIR::TypeRef", align 8
  %27 = alloca %"class.HIR::ItemPath", align 8
  %28 = alloca %"class.std::map.846", align 8
  %29 = alloca %"class.std::map.851", align 8
  %30 = alloca %"class.std::map.856", align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator.861", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.861", align 8
  %33 = alloca %"class.HIR::ItemPath", align 8
  %34 = alloca %struct.Span, align 8
  %35 = alloca %"class.std::function", align 8
  %36 = alloca %class.anon.870, align 8
  %37 = alloca %"struct.std::pair.875", align 8
  %38 = alloca %"struct.HIR::TraitImpl::ImplEnt", align 8
  %39 = alloca %"class.HIR::GenericParams", align 8
  %40 = alloca %"class.HIR::TypeRef", align 8
  %41 = alloca %"class.HIR::ExprPtr", align 8
  %42 = alloca ptr, align 8
  %43 = alloca %struct.Span, align 8
  %44 = alloca %"class.std::function", align 8
  %45 = alloca %class.anon.877, align 8
  %46 = alloca %"class.HIR::GenericParams", align 8
  %47 = alloca %"class.HIR::ItemPath", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::allocator.56", align 1
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.HIR::ItemPath", align 8
  %55 = alloca %"struct.(anonymous namespace)::ImplTraitSource", align 8
  %56 = alloca %"struct.std::pair.882", align 8
  %57 = alloca %"struct.HIR::TraitImpl::ImplEnt.884", align 8
  %58 = alloca %"struct.(anonymous namespace)::ImplTraitSource", align 8
  %59 = alloca %"struct.std::pair.889", align 8
  %60 = alloca %"struct.HIR::TraitImpl::ImplEnt.891", align 8
  %61 = alloca %"class.std::unique_ptr.903", align 8
  %62 = alloca %"class.HIR::TraitImpl", align 8
  %63 = alloca %"class.HIR::TypeRef", align 8
  %64 = alloca %"class.std::unique_ptr.927", align 8
  %65 = alloca %"class.HIR::MarkerImpl", align 8
  %66 = alloca %"class.HIR::TypeRef", align 8
  %67 = alloca %"class.HIR::ItemPath", align 8
  %68 = alloca %class.anon.935, align 8
  %69 = alloca %"class.std::map.936", align 8
  %70 = alloca %"class.std::map.941", align 8
  %71 = alloca %"class.__gnu_cxx::__normal_iterator.861", align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator.861", align 8
  %73 = alloca %"class.HIR::ItemPath", align 8
  %74 = alloca %struct.Span, align 8
  %75 = alloca %"class.std::function", align 8
  %76 = alloca %class.anon.946, align 8
  %77 = alloca %"struct.std::pair.951", align 8
  %78 = alloca %"struct.HIR::TypeImpl::VisImplEnt", align 8
  %79 = alloca %"class.HIR::GenericParams", align 8
  %80 = alloca %"class.HIR::TypeRef", align 8
  %81 = alloca %"class.HIR::ExprPtr", align 8
  %82 = alloca ptr, align 8
  %83 = alloca %struct.Span, align 8
  %84 = alloca %"class.std::function", align 8
  %85 = alloca %class.anon.953, align 8
  %86 = alloca %"struct.std::pair.958", align 8
  %87 = alloca %"struct.HIR::TypeImpl::VisImplEnt.960", align 8
  %88 = alloca %"class.std::unique_ptr.961", align 8
  %89 = alloca %"class.HIR::TypeImpl", align 8
  %90 = alloca %"class.__gnu_cxx::__normal_iterator.809", align 8
  %91 = alloca %"class.__gnu_cxx::__normal_iterator.809", align 8
  %92 = alloca %"class.HIR::GenericParams", align 8
  %93 = alloca %"class.HIR::TypeRef", align 8
  %94 = alloca %"class.HIR::GenericPath", align 8
  %95 = alloca %"struct.HIR::SimplePath", align 8
  %96 = alloca %"struct.HIR::PathParams", align 8
  %97 = alloca %"class.std::unique_ptr.927", align 8
  %98 = alloca %"class.HIR::MarkerImpl", align 8
  %99 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %99, label %100, label %107

100:                                              ; preds = %2
  %101 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %102 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %101, ptr noundef nonnull @__FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE)
  %103 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %0)
  %104 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef nonnull align 8 dereferenceable(32) %103)
  %105 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef nonnull @_ZSt3decRSt8ios_base)
  %106 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %107

107:                                              ; preds = %2, %100
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #10
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) @g_crate_name)
  %108 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %0)
  %109 = getelementptr inbounds i8, ptr %108, i64 8
  invoke void @_ZNSt6vectorI8RcStringSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %109)
          to label %110 unwind label %120

110:                                              ; preds = %107
  invoke void @_ZN3HIR10SimplePathC2E8RcStringSt6vectorIS1_SaIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull %4, ptr noundef nonnull %5)
          to label %111 unwind label %122

111:                                              ; preds = %110
  call void @_ZNSt6vectorI8RcStringSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #10
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #10
  %112 = getelementptr inbounds i8, ptr %0, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #10
  %113 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %112) #10
  store ptr %113, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #10
  %114 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %112) #10
  store ptr %114, ptr %7, align 8
  %115 = 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) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #10
  br i1 %115, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %132, %111
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  %116 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST6Module9anon_modsEv(ptr noundef nonnull align 8 dereferenceable(480) %0)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #10
  %117 = call ptr @_ZNKSt6vectorISt10shared_ptrIN3AST6ModuleEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %116) #10
  store ptr %117, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #10
  %118 = call ptr @_ZNKSt6vectorISt10shared_ptrIN3AST6ModuleEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %116) #10
  store ptr %118, ptr %9, align 8
  %119 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10shared_ptrIN3AST6ModuleEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #10
  br i1 %119, label %.lr.ph506, label %._crit_edge507

120:                                              ; preds = %107
  %121 = landingpad { ptr, i32 }
          cleanup
  br label %124

122:                                              ; preds = %110
  %123 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI8RcStringSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #10
  br label %124

124:                                              ; preds = %122, %120
  %.pn = phi { ptr, i32 } [ %123, %122 ], [ %121, %120 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #10
  br label %688

.lr.ph:                                           ; preds = %111, %132
  %125 = 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) %6) #10
  %126 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %125) #10
  %127 = getelementptr inbounds i8, ptr %126, i64 80
  %128 = call noundef ptr @_ZN3AST4Item10opt_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488) %127)
  %.not333 = icmp eq ptr %128, null
  br i1 %.not333, label %132, label %129

129:                                              ; preds = %.lr.ph
  invoke void @_Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(480) %128, ptr noundef nonnull align 8 dereferenceable(944) %1)
          to label %132 unwind label %130

130:                                              ; preds = %129
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  br label %687

132:                                              ; preds = %129, %.lr.ph
  %133 = 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) %6) #10
  %134 = 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) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #10
  br i1 %134, label %.lr.ph, label %._crit_edge

._crit_edge507:                                   ; preds = %176, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #10
  %135 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %112) #10
  store ptr %135, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #10
  %136 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %112) #10
  store ptr %136, ptr %11, align 8
  %137 = 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) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  br i1 %137, label %.lr.ph867, label %._crit_edge868

.lr.ph867:                                        ; preds = %._crit_edge507
  %138 = getelementptr inbounds i8, ptr %87, i64 16
  %139 = getelementptr inbounds i8, ptr %87, i64 24
  %140 = getelementptr inbounds i8, ptr %78, i64 16
  %141 = getelementptr inbounds i8, ptr %78, i64 24
  %142 = getelementptr inbounds i8, ptr %79, i64 24
  %143 = getelementptr inbounds i8, ptr %79, i64 48
  %144 = getelementptr inbounds i8, ptr %79, i64 72
  %145 = getelementptr inbounds i8, ptr %1, i64 352
  %146 = getelementptr inbounds i8, ptr %89, i64 96
  %147 = getelementptr inbounds i8, ptr %89, i64 104
  %148 = getelementptr inbounds i8, ptr %89, i64 152
  %149 = getelementptr inbounds i8, ptr %89, i64 200
  %150 = getelementptr inbounds i8, ptr %23, i64 8
  %151 = getelementptr inbounds i8, ptr %60, i64 8
  %152 = getelementptr inbounds i8, ptr %57, i64 8
  %153 = getelementptr inbounds i8, ptr %38, i64 8
  %154 = getelementptr inbounds i8, ptr %39, i64 24
  %155 = getelementptr inbounds i8, ptr %39, i64 48
  %156 = getelementptr inbounds i8, ptr %39, i64 72
  %157 = getelementptr inbounds i8, ptr %1, i64 424
  %158 = getelementptr inbounds i8, ptr %62, i64 96
  %159 = getelementptr inbounds i8, ptr %62, i64 120
  %160 = getelementptr inbounds i8, ptr %62, i64 128
  %161 = getelementptr inbounds i8, ptr %62, i64 176
  %162 = getelementptr inbounds i8, ptr %62, i64 224
  %163 = getelementptr inbounds i8, ptr %62, i64 272
  %164 = getelementptr inbounds i8, ptr %62, i64 320
  %165 = getelementptr inbounds i8, ptr %1, i64 472
  %166 = getelementptr inbounds i8, ptr %65, i64 96
  %167 = getelementptr inbounds i8, ptr %65, i64 120
  %168 = getelementptr inbounds i8, ptr %65, i64 128
  %169 = getelementptr inbounds i8, ptr %65, i64 136
  br label %188

.lr.ph506:                                        ; preds = %._crit_edge, %176
  %170 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10shared_ptrIN3AST6ModuleEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  %171 = call noundef zeroext i1 @_ZNKSt12__shared_ptrIN3AST6ModuleELN9__gnu_cxx12_Lock_policyE2EEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %170) #10
  br i1 %171, label %172, label %176

172:                                              ; preds = %.lr.ph506
  %173 = call noundef nonnull align 8 dereferenceable(480) ptr @_ZNKSt19__shared_ptr_accessIN3AST6ModuleELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %170) #10
  invoke void @_Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(480) %173, ptr noundef nonnull align 8 dereferenceable(944) %1)
          to label %176 unwind label %174

174:                                              ; preds = %172
  %175 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #10
  br label %687

176:                                              ; preds = %172, %.lr.ph506
  %177 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10shared_ptrIN3AST6ModuleEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  %178 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10shared_ptrIN3AST6ModuleEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #10
  br i1 %178, label %.lr.ph506, label %._crit_edge507

._crit_edge868:                                   ; preds = %623, %._crit_edge507
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %90) #10
  %179 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %112) #10
  store ptr %179, ptr %90, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %91) #10
  %180 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %112) #10
  store ptr %180, ptr %91, align 8
  %181 = 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) %90, ptr noundef nonnull align 8 dereferenceable(8) %91) #10
  br i1 %181, label %.lr.ph870, label %._crit_edge871

.lr.ph870:                                        ; preds = %._crit_edge868
  %182 = getelementptr inbounds i8, ptr %94, i64 8
  %183 = getelementptr inbounds i8, ptr %1, i64 472
  %184 = getelementptr inbounds i8, ptr %98, i64 96
  %185 = getelementptr inbounds i8, ptr %98, i64 120
  %186 = getelementptr inbounds i8, ptr %98, i64 128
  %187 = getelementptr inbounds i8, ptr %98, i64 136
  br label %629

188:                                              ; preds = %.lr.ph867, %623
  %189 = 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) %10) #10
  %190 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %189) #10
  %191 = getelementptr inbounds i8, ptr %190, i64 80
  %192 = call noundef zeroext i1 @_ZNK3AST4Item7is_ImplEv(ptr noundef nonnull align 8 dereferenceable(488) %191)
  br i1 %192, label %193, label %623

193:                                              ; preds = %188
  %194 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %189) #10
  %195 = getelementptr inbounds i8, ptr %194, i64 80
  %196 = call noundef nonnull align 8 dereferenceable(472) ptr @_ZN3AST4Item7as_ImplEv(ptr noundef nonnull align 8 dereferenceable(488) %195)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #10
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %13) #10
  %197 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %196)
  %198 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST7ImplDef6paramsEv(ptr noundef nonnull align 8 dereferenceable(448) %197)
  invoke void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericParams") align 8 %13, ptr noundef nonnull align 8 dereferenceable(48) %198, ptr noundef null)
          to label %199 unwind label %216

199:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %14) #10
  %200 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %201 unwind label %218

201:                                              ; preds = %199
  %202 = select i1 %200, ptr @__FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #10
  store ptr %196, ptr %16, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef %202, ptr noundef nonnull %15)
          to label %203 unwind label %220

203:                                              ; preds = %201
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  %204 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %196)
  %205 = call noundef nonnull align 8 dereferenceable(248) ptr @_ZNK3AST7ImplDef5traitEv(ptr noundef nonnull align 8 dereferenceable(448) %204)
  %206 = getelementptr inbounds i8, ptr %205, i64 8
  %207 = call noundef zeroext i1 @_ZNK3AST4Path8is_validEv(ptr noundef nonnull align 8 dereferenceable(240) %206)
  br i1 %207, label %208, label %514

208:                                              ; preds = %203
  %209 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %196)
  %210 = call noundef nonnull align 8 dereferenceable(248) ptr @_ZNK3AST7ImplDef5traitEv(ptr noundef nonnull align 8 dereferenceable(448) %209)
  %211 = getelementptr inbounds i8, ptr %210, i64 160
  %212 = call noundef zeroext i1 @_ZNK3AST16PathBinding_Type8is_TraitEv(ptr noundef nonnull align 8 dereferenceable(32) %211)
  br i1 %212, label %228, label %213

213:                                              ; preds = %208
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #10
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #10
  store ptr %196, ptr %19, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull %18)
          to label %214 unwind label %224

214:                                              ; preds = %213
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  %215 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %215, ptr noundef nonnull @.str.9)
          to label %.invoke unwind label %226

216:                                              ; preds = %193
  %217 = landingpad { ptr, i32 }
          cleanup
  br label %628

218:                                              ; preds = %199
  %219 = landingpad { ptr, i32 }
          cleanup
  br label %627

220:                                              ; preds = %201
  %221 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  br label %627

222:                                              ; preds = %.invoke
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %626

224:                                              ; preds = %213
  %225 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  br label %626

226:                                              ; preds = %214
  %227 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %215) #10
  br label %626

228:                                              ; preds = %208
  %229 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST16PathBinding_Type8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(32) %211)
  %230 = load ptr, ptr %229, align 8, !tbaa !11
  %.not = icmp eq ptr %230, null
  br i1 %.not, label %231, label %243

231:                                              ; preds = %228
  %232 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST16PathBinding_Type8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(32) %211)
  %233 = getelementptr inbounds i8, ptr %232, i64 8
  %234 = load ptr, ptr %233, align 8, !tbaa !13
  %.not277 = icmp eq ptr %234, null
  br i1 %.not277, label %235, label %243

235:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #10
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 1 dereferenceable(1) %22) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull %21)
          to label %236 unwind label %239

236:                                              ; preds = %235
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  %237 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %237, ptr noundef nonnull @.str.9)
          to label %.invoke unwind label %241

.invoke:                                          ; preds = %214, %236
  %238 = phi ptr [ %237, %236 ], [ %215, %214 ]
  invoke void @__cxa_throw(ptr nonnull %238, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %.cont unwind label %222

.cont:                                            ; preds = %.invoke
  unreachable

239:                                              ; preds = %235
  %240 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  br label %626

241:                                              ; preds = %236
  %242 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %237) #10
  br label %626

243:                                              ; preds = %231, %228
  %244 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST16PathBinding_Type8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(32) %211)
  %245 = load ptr, ptr %244, align 8, !tbaa !11
  %.not278 = icmp eq ptr %245, null
  %246 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST16PathBinding_Type8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(32) %211)
  br i1 %.not278, label %250, label %247

247:                                              ; preds = %243
  %248 = load ptr, ptr %246, align 8, !tbaa !11
  %249 = invoke noundef zeroext i1 @_ZNK3AST5Trait9is_markerEv(ptr noundef nonnull align 8 dereferenceable(128) %248)
          to label %256 unwind label %281

250:                                              ; preds = %243
  %251 = getelementptr inbounds i8, ptr %246, i64 8
  %252 = load ptr, ptr %251, align 8, !tbaa !13
  %253 = getelementptr inbounds i8, ptr %252, i64 128
  %254 = load i8, ptr %253, align 8, !tbaa !14, !range !53, !noundef !54
  %255 = trunc nuw i8 %254 to i1
  br label %256

256:                                              ; preds = %247, %250
  %257 = phi i1 [ %255, %250 ], [ %249, %247 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #10
  %258 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %196)
  %259 = call noundef nonnull align 8 dereferenceable(248) ptr @_ZNK3AST7ImplDef5traitEv(ptr noundef nonnull align 8 dereferenceable(448) %258)
  %260 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %196)
  %261 = call noundef nonnull align 8 dereferenceable(248) ptr @_ZNK3AST7ImplDef5traitEv(ptr noundef nonnull align 8 dereferenceable(448) %260)
  %262 = getelementptr inbounds i8, ptr %261, i64 8
  invoke void @_Z20LowerHIR_GenericPathRK4SpanRKN3AST4PathE17FromAST_PathClassb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %23, ptr noundef nonnull align 8 dereferenceable(8) %259, ptr noundef nonnull align 8 dereferenceable(240) %262, i32 noundef 0, i1 noundef zeroext false)
          to label %263 unwind label %283

263:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #10
  invoke void @_ZN3HIR10SimplePathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %264 unwind label %285

264:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #10
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(24) %150)
          to label %265 unwind label %287

265:                                              ; preds = %264
  br i1 %257, label %476, label %266

266:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #10
  %267 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %196)
  %268 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST7ImplDef4typeEv(ptr noundef nonnull align 8 dereferenceable(448) %267)
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %26, ptr noundef nonnull align 8 dereferenceable(120) %268)
          to label %269 unwind label %289

269:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %27) #10
  call void @_ZN3HIR8ItemPathC2ERKNS_7TypeRefERKNS_10SimplePathERKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(56) %27, ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(24) %25)
  %270 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %271 unwind label %291

271:                                              ; preds = %269
  br i1 %270, label %272, label %.split864

272:                                              ; preds = %271
  %273 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %274 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %273, ptr noundef nonnull @__FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE)
          to label %275 unwind label %291

275:                                              ; preds = %272
  %276 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_8ItemPathE(ptr noundef nonnull align 8 dereferenceable(8) %274, ptr noundef nonnull align 8 dereferenceable(56) %27)
          to label %277 unwind label %291

277:                                              ; preds = %275
  %278 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %276, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %279 unwind label %291

279:                                              ; preds = %277
  %280 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %278, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.split864 unwind label %291

281:                                              ; preds = %247
  %282 = landingpad { ptr, i32 }
          cleanup
  br label %626

283:                                              ; preds = %256
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %513

285:                                              ; preds = %263
  %286 = landingpad { ptr, i32 }
          cleanup
  br label %512

287:                                              ; preds = %264
  %288 = landingpad { ptr, i32 }
          cleanup
  br label %511

289:                                              ; preds = %266
  %290 = landingpad { ptr, i32 }
          cleanup
  br label %475

291:                                              ; preds = %279, %277, %275, %272, %269
  %292 = landingpad { ptr, i32 }
          cleanup
  br label %474

.split864:                                        ; preds = %279, %271
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %28) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %29) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %29) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %30) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_7TypeRefEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #10
  %293 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST4Impl5itemsEv(ptr noundef nonnull align 8 dereferenceable(472) %196)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #10
  %294 = call ptr @_ZNKSt6vectorIN3AST4Impl8ImplItemESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %293) #10
  store ptr %294, ptr %31, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #10
  %295 = call ptr @_ZNKSt6vectorIN3AST4Impl8ImplItemESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %293) #10
  store ptr %295, ptr %32, align 8
  %296 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #10
  br i1 %296, label %.split862.lr.ph, label %._crit_edge865

.split862.lr.ph:                                  ; preds = %.split864
  %297 = ptrtoint ptr %196 to i64
  br label %.lr.ph861

._crit_edge865:                                   ; preds = %.loopexit365, %.split864
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #10
  %298 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt3mapIN3HIR10SimplePathENS0_5Crate9ImplGroupISt10unique_ptrINS0_9TraitImplESt14default_deleteIS5_EEEESt4lessIS1_ESaISt4pairIKS1_S9_EEEixEOS1_(ptr noundef nonnull align 8 dereferenceable(48) %157, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %454 unwind label %460

.loopexit365:                                     ; preds = %.preheader349, %.preheader, %..loopexit343_crit_edge, %..loopexit341_crit_edge, %..loopexit342_crit_edge
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %33) #10
  %299 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #10
  %300 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #10
  br i1 %300, label %.lr.ph861, label %._crit_edge865

.lr.ph861:                                        ; preds = %.loopexit365, %.split862.lr.ph
  %301 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #10
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %33) #10
  %302 = getelementptr inbounds i8, ptr %301, i64 80
  %303 = call noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %302)
  call void @_ZN3HIR8ItemPathC2ERKS0_PKc(ptr noundef nonnull align 8 dereferenceable(56) %33, ptr noundef nonnull align 8 dereferenceable(56) %27, ptr noundef %303)
  %304 = getelementptr inbounds i8, ptr %301, i64 88
  %305 = getelementptr inbounds i8, ptr %301, i64 72
  %306 = getelementptr inbounds i8, ptr %301, i64 8
  %307 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %304) #10
  %308 = call noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %307)
  switch i32 %308, label %316 [
    i32 0, label %315
    i32 1, label %.preheader
    i32 2, label %.preheader349
    i32 18, label %.lr.ph801
    i32 11, label %.lr.ph798
    i32 17, label %.preheader355
  ]

.preheader355:                                    ; preds = %.lr.ph861
  %309 = call noundef nonnull align 8 dereferenceable(368) ptr @_ZN3AST4Item11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488) %307)
  %310 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %431 unwind label %.split672.split

.preheader349:                                    ; preds = %.lr.ph861
  %311 = call noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST4Item11as_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %307)
  br label %.loopexit365

.preheader:                                       ; preds = %.lr.ph861
  %312 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN3AST4Item7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(488) %307)
  br label %.loopexit365

313:                                              ; preds = %320
  %314 = landingpad { ptr, i32 }
          cleanup
  br label %453

315:                                              ; preds = %.lr.ph861
  call void @__assert_fail(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.5, i32 noundef 2124, ptr noundef nonnull @__PRETTY_FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE) #12
  unreachable

316:                                              ; preds = %.lr.ph861
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %301)
          to label %317 unwind label %321

317:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #10
  store ptr %301, ptr %36, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(8) %36) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull %35)
          to label %318 unwind label %323

318:                                              ; preds = %317
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #10
  %319 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %319, ptr noundef nonnull @.str.9)
          to label %320 unwind label %326

320:                                              ; preds = %318
  invoke void @__cxa_throw(ptr nonnull %319, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %689 unwind label %313

321:                                              ; preds = %316
  %322 = landingpad { ptr, i32 }
          cleanup
  br label %325

323:                                              ; preds = %317
  %324 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #10
  br label %325

325:                                              ; preds = %323, %321
  %.pn310 = phi { ptr, i32 } [ %324, %323 ], [ %322, %321 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #10
  br label %453

326:                                              ; preds = %318
  %327 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %319) #10
  br label %453

.lr.ph801:                                        ; preds = %.lr.ph861
  %328 = call noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(488) %307)
  %329 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3AST6Static7s_classEv(ptr noundef nonnull align 8 dereferenceable(216) %328)
  %330 = load i32, ptr %329, align 4, !tbaa !55
  %331 = icmp eq i32 %330, 0
  br i1 %331, label %332, label %355

332:                                              ; preds = %.lr.ph801
  call void @llvm.lifetime.start.p0(i64 296, ptr nonnull %37) #10
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %38) #10
  %333 = load i8, ptr %305, align 8, !tbaa !57, !range !53, !noundef !54
  store i8 %333, ptr %38, align 8, !tbaa !79
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %39, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR12TypeParamDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %154, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR11LifetimeDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %154) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %155, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR13ValueParamDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %155) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %156, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR12GenericBoundESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %156) #10
  %334 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST6Static4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %328)
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %40, ptr noundef nonnull align 8 dereferenceable(120) %334)
          to label %335 unwind label %341

335:                                              ; preds = %332
  %336 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216) %328)
  invoke void @_Z13LowerHIR_ExprRKN3AST4ExprE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::ExprPtr") align 8 %41, ptr noundef nonnull align 8 dereferenceable(16) %336)
          to label %337 unwind label %343

337:                                              ; preds = %335
  invoke void @_ZN3HIR8ConstantC2ENS_13GenericParamsENS_7TypeRefENS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(280) %153, ptr noundef nonnull %39, ptr noundef nonnull %40, ptr noundef nonnull %41)
          to label %338 unwind label %345

338:                                              ; preds = %337
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR9TraitImpl7ImplEntINS3_8ConstantEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.875") align 8 %37, ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef nonnull align 8 dereferenceable(288) %38)
          to label %339 unwind label %347

339:                                              ; preds = %338
  %340 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE6insertIS8_IS0_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %29, ptr noundef nonnull align 8 dereferenceable(296) %37)
          to label %..loopexit341_crit_edge unwind label %349

..loopexit341_crit_edge:                          ; preds = %339
  call void @_ZNSt4pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_8ConstantEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(296) %37) #10
  call void @_ZN3HIR9TraitImpl7ImplEntINS_8ConstantEED2Ev(ptr noundef nonnull align 8 dereferenceable(288) %38) #10
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %41) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %39) #10
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %38) #10
  call void @llvm.lifetime.end.p0(i64 296, ptr nonnull %37) #10
  br label %.loopexit365

341:                                              ; preds = %332
  %342 = landingpad { ptr, i32 }
          cleanup
  br label %354

343:                                              ; preds = %335
  %344 = landingpad { ptr, i32 }
          cleanup
  br label %353

345:                                              ; preds = %337
  %346 = landingpad { ptr, i32 }
          cleanup
  br label %352

347:                                              ; preds = %338
  %348 = landingpad { ptr, i32 }
          cleanup
  br label %351

349:                                              ; preds = %339
  %350 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_8ConstantEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(296) %37) #10
  br label %351

351:                                              ; preds = %349, %347
  %.pn304 = phi { ptr, i32 } [ %350, %349 ], [ %348, %347 ]
  call void @_ZN3HIR9TraitImpl7ImplEntINS_8ConstantEED2Ev(ptr noundef nonnull align 8 dereferenceable(288) %38) #10
  br label %352

352:                                              ; preds = %351, %345
  %.pn304.pn = phi { ptr, i32 } [ %.pn304, %351 ], [ %346, %345 ]
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %41) #10
  br label %353

353:                                              ; preds = %352, %343
  %.pn304.pn.pn = phi { ptr, i32 } [ %.pn304.pn, %352 ], [ %344, %343 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #10
  br label %354

354:                                              ; preds = %353, %341
  %.pn304.pn.pn.pn = phi { ptr, i32 } [ %.pn304.pn.pn, %353 ], [ %342, %341 ]
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %39) #10
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %38) #10
  call void @llvm.lifetime.end.p0(i64 296, ptr nonnull %37) #10
  br label %453

355:                                              ; preds = %.lr.ph801
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #10
  store ptr @__FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE, ptr %42, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %301)
          to label %356 unwind label %360

356:                                              ; preds = %355
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #10
  store ptr %42, ptr %45, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull %44)
          to label %357 unwind label %362

357:                                              ; preds = %356
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #10
  %358 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %358, ptr noundef nonnull @.str.8)
          to label %359 unwind label %365

359:                                              ; preds = %357
  invoke void @__cxa_throw(ptr nonnull %358, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %689 unwind label %367

360:                                              ; preds = %355
  %361 = landingpad { ptr, i32 }
          cleanup
  br label %364

362:                                              ; preds = %356
  %363 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #10
  br label %364

364:                                              ; preds = %362, %360
  %.pn300 = phi { ptr, i32 } [ %363, %362 ], [ %361, %360 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #10
  br label %369

365:                                              ; preds = %357
  %366 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %358) #10
  br label %369

367:                                              ; preds = %359
  %368 = landingpad { ptr, i32 }
          cleanup
  br label %369

369:                                              ; preds = %367, %365, %364
  %.pn302 = phi { ptr, i32 } [ %368, %367 ], [ %366, %365 ], [ %.pn300, %364 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #10
  br label %453

370:                                              ; preds = %384, %382, %380, %378, %375, %.lr.ph798
  %371 = landingpad { ptr, i32 }
          cleanup
  br label %453

.lr.ph798:                                        ; preds = %.lr.ph861
  %372 = call noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item7as_TypeEv(ptr noundef nonnull align 8 dereferenceable(488) %307)
  %373 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %374 unwind label %370

374:                                              ; preds = %.lr.ph798
  br i1 %373, label %375, label %386

375:                                              ; preds = %374
  %376 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %377 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %376, ptr noundef nonnull @__FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE)
          to label %378 unwind label %370

378:                                              ; preds = %375
  %379 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %377, ptr noundef nonnull @.str.58)
          to label %380 unwind label %370

380:                                              ; preds = %378
  %381 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %379, ptr noundef nonnull align 8 dereferenceable(8) %302)
          to label %382 unwind label %370

382:                                              ; preds = %380
  %383 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %381, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %384 unwind label %370

384:                                              ; preds = %382
  %385 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %383, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %386 unwind label %370

386:                                              ; preds = %384, %374
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %46) #10
  %387 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN3AST9TypeAlias6paramsEv(ptr noundef nonnull align 8 dereferenceable(216) %372)
  invoke void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericParams") align 8 %46, ptr noundef nonnull align 8 dereferenceable(48) %387, ptr noundef null)
          to label %388 unwind label %391

388:                                              ; preds = %386
  %389 = load ptr, ptr @_ZN12_GLOBAL__N_119g_impl_trait_sourceE, align 8, !tbaa !109
  %.not288 = icmp eq ptr %389, null
  br i1 %.not288, label %393, label %390

390:                                              ; preds = %388
  call void @__assert_fail(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.5, i32 noundef 2149, ptr noundef nonnull @__PRETTY_FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE) #12
  unreachable

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

393:                                              ; preds = %388
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %47) #10
  call void @_ZN3HIR8ItemPathC2ERKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(56) %47, ptr noundef nonnull align 8 dereferenceable(8) %3)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %48) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %49) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %51) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %52) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull @.str.59, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %394 unwind label %406

394:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %53) #10
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %53, i64 noundef %297)
          to label %395 unwind label %408

395:                                              ; preds = %394
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %50, ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %396 unwind label %410

396:                                              ; preds = %395
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %49, ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull @.str.60)
          to label %397 unwind label %412

397:                                              ; preds = %396
  %398 = call noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %302)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %48, ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef %398)
          to label %399 unwind label %414

399:                                              ; preds = %397
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #10
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %54) #10
  %400 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %48) #10
  call void @_ZN3HIR8ItemPathC2ERKS0_PKc(ptr noundef nonnull align 8 dereferenceable(56) %54, ptr noundef nonnull align 8 dereferenceable(56) %47, ptr noundef %400)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %55) #10
  call void @_ZN12_GLOBAL__N_115ImplTraitSourceC2EPKN3HIR8ItemPathEPKNS1_13GenericParamsES7_(ptr noundef nonnull align 8 dereferenceable(24) %55, ptr noundef nonnull %54, ptr noundef nonnull %13, ptr noundef nonnull %46)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) @_ZN12_GLOBAL__N_119g_impl_trait_sourceE, ptr noundef nonnull align 8 dereferenceable(24) %55, i64 24, i1 false), !tbaa.struct !111
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %55) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %56) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %57) #10
  %401 = load i8, ptr %305, align 8, !tbaa !57, !range !53, !noundef !54
  store i8 %401, ptr %57, align 8, !tbaa !112
  %402 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST9TypeAlias4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %372)
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %152, ptr noundef nonnull align 8 dereferenceable(120) %402)
          to label %403 unwind label %420

403:                                              ; preds = %399
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR9TraitImpl7ImplEntINS3_7TypeRefEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.882") align 8 %56, ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef nonnull align 8 dereferenceable(16) %57)
          to label %404 unwind label %422

404:                                              ; preds = %403
  %405 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_7TypeRefEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE6insertIS8_IS0_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %30, ptr noundef nonnull align 8 dereferenceable(24) %56)
          to label %..loopexit342_crit_edge unwind label %424

..loopexit342_crit_edge:                          ; preds = %404
  call void @_ZNSt4pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_7TypeRefEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #10
  call void @_ZN3HIR9TraitImpl7ImplEntINS_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %56) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %58) #10
  call void @_ZN12_GLOBAL__N_115ImplTraitSourceC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) @_ZN12_GLOBAL__N_119g_impl_trait_sourceE, ptr noundef nonnull align 8 dereferenceable(24) %58, i64 24, i1 false), !tbaa.struct !111
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %58) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %54) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %47) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %46) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %46) #10
  br label %.loopexit365

406:                                              ; preds = %393
  %407 = landingpad { ptr, i32 }
          cleanup
  br label %419

408:                                              ; preds = %394
  %409 = landingpad { ptr, i32 }
          cleanup
  br label %418

410:                                              ; preds = %395
  %411 = landingpad { ptr, i32 }
          cleanup
  br label %417

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

414:                                              ; preds = %397
  %415 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #10
  br label %416

416:                                              ; preds = %414, %412
  %.pn289 = phi { ptr, i32 } [ %415, %414 ], [ %413, %412 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #10
  br label %417

417:                                              ; preds = %416, %410
  %.pn289.pn = phi { ptr, i32 } [ %.pn289, %416 ], [ %411, %410 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #10
  br label %418

418:                                              ; preds = %417, %408
  %.pn289.pn.pn = phi { ptr, i32 } [ %.pn289.pn, %417 ], [ %409, %408 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #10
  br label %419

419:                                              ; preds = %418, %406
  %.pn289.pn.pn.pn = phi { ptr, i32 } [ %.pn289.pn.pn, %418 ], [ %407, %406 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #10
  br label %428

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

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

424:                                              ; preds = %404
  %425 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_7TypeRefEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #10
  br label %426

426:                                              ; preds = %424, %422
  %.pn294 = phi { ptr, i32 } [ %425, %424 ], [ %423, %422 ]
  call void @_ZN3HIR9TraitImpl7ImplEntINS_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #10
  br label %427

427:                                              ; preds = %426, %420
  %.pn294.pn = phi { ptr, i32 } [ %.pn294, %426 ], [ %421, %420 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %56) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %54) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #10
  br label %428

428:                                              ; preds = %427, %419
  %.pn294.pn.pn = phi { ptr, i32 } [ %.pn294.pn, %427 ], [ %.pn289.pn.pn.pn, %419 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %47) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %46) #10
  br label %429

429:                                              ; preds = %428, %391
  %.pn294.pn.pn.pn = phi { ptr, i32 } [ %.pn294.pn.pn, %428 ], [ %392, %391 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %46) #10
  br label %453

.split672.split:                                  ; preds = %441, %439, %437, %435, %432, %.preheader355
  %430 = landingpad { ptr, i32 }
          cleanup
  br label %453

431:                                              ; preds = %.preheader355
  br i1 %310, label %432, label %443

432:                                              ; preds = %431
  %433 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %434 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %433, ptr noundef nonnull @__FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE)
          to label %435 unwind label %.split672.split

435:                                              ; preds = %432
  %436 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %434, ptr noundef nonnull @.str.61)
          to label %437 unwind label %.split672.split

437:                                              ; preds = %435
  %438 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %436, ptr noundef nonnull align 8 dereferenceable(8) %302)
          to label %439 unwind label %.split672.split

439:                                              ; preds = %437
  %440 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %438, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %441 unwind label %.split672.split

441:                                              ; preds = %439
  %442 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %440, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %443 unwind label %.split672.split

443:                                              ; preds = %441, %431
  call void @llvm.lifetime.start.p0(i64 368, ptr nonnull %59) #10
  call void @llvm.lifetime.start.p0(i64 360, ptr nonnull %60) #10
  %444 = load i8, ptr %305, align 8, !tbaa !57, !range !53, !noundef !54
  store i8 %444, ptr %60, align 8, !tbaa !114
  invoke void @_Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Function") align 8 %151, ptr noundef nonnull byval(%"class.HIR::ItemPath") align 8 %33, ptr noundef nonnull align 8 dereferenceable(24) %306, ptr noundef nonnull align 8 dereferenceable(368) %309, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %445 unwind label %.split675.split

445:                                              ; preds = %443
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR9TraitImpl7ImplEntINS3_8FunctionEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.889") align 8 %59, ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef nonnull align 8 dereferenceable(360) %60)
          to label %446 unwind label %.split678.split

446:                                              ; preds = %445
  %447 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE6insertIS8_IS0_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %28, ptr noundef nonnull align 8 dereferenceable(368) %59)
          to label %..loopexit343_crit_edge unwind label %.split681.split

..loopexit343_crit_edge:                          ; preds = %446
  call void @_ZNSt4pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(368) %59) #10
  call void @_ZN3HIR9TraitImpl7ImplEntINS_8FunctionEED2Ev(ptr noundef nonnull align 8 dereferenceable(360) %60) #10
  call void @llvm.lifetime.end.p0(i64 360, ptr nonnull %60) #10
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %59) #10
  br label %.loopexit365

.split675.split:                                  ; preds = %443
  %448 = landingpad { ptr, i32 }
          cleanup
  br label %452

.split678.split:                                  ; preds = %445
  %449 = landingpad { ptr, i32 }
          cleanup
  br label %451

.split681.split:                                  ; preds = %446
  %450 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(368) %59) #10
  br label %451

451:                                              ; preds = %.split681.split, %.split678.split
  %.pn284 = phi { ptr, i32 } [ %450, %.split681.split ], [ %449, %.split678.split ]
  call void @_ZN3HIR9TraitImpl7ImplEntINS_8FunctionEED2Ev(ptr noundef nonnull align 8 dereferenceable(360) %60) #10
  br label %452

452:                                              ; preds = %451, %.split675.split
  %.pn284.pn = phi { ptr, i32 } [ %.pn284, %451 ], [ %448, %.split675.split ]
  call void @llvm.lifetime.end.p0(i64 360, ptr nonnull %60) #10
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %59) #10
  br label %453

453:                                              ; preds = %.split672.split, %452, %370, %429, %354, %369, %326, %325, %313
  %.pn312 = phi { ptr, i32 } [ %314, %313 ], [ %327, %326 ], [ %.pn310, %325 ], [ %.pn304.pn.pn.pn, %354 ], [ %.pn302, %369 ], [ %.pn294.pn.pn.pn, %429 ], [ %371, %370 ], [ %.pn284.pn, %452 ], [ %430, %.split672.split ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #10
  br label %473

454:                                              ; preds = %._crit_edge865
  %455 = getelementptr inbounds i8, ptr %298, i64 72
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #10
  call void @llvm.lifetime.start.p0(i64 328, ptr nonnull %62) #10
  call void @_ZN3HIR13GenericParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %62, ptr noundef nonnull align 8 dereferenceable(96) %13) #10
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %158, ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %456 unwind label %462

456:                                              ; preds = %454
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %159, ptr noundef nonnull align 8 dereferenceable(8) %26)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2EOSC_(ptr noundef nonnull align 8 dereferenceable(48) %160, ptr noundef nonnull align 8 dereferenceable(48) %28) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2EOSC_(ptr noundef nonnull align 8 dereferenceable(48) %161, ptr noundef nonnull align 8 dereferenceable(48) %29) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %162, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_6StaticEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %162) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_7TypeRefEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2EOSC_(ptr noundef nonnull align 8 dereferenceable(48) %163, ptr noundef nonnull align 8 dereferenceable(48) %30) #10
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %164, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %457 unwind label %464

457:                                              ; preds = %456
  invoke void @_ZSt11make_uniqueIN3HIR9TraitImplEJS1_EENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.903") align 8 %61, ptr noundef nonnull align 8 dereferenceable(328) %62)
          to label %458 unwind label %467

458:                                              ; preds = %457
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %455, ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %459 unwind label %469

459:                                              ; preds = %458
  call void @_ZNSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #10
  call void @_ZN3HIR9TraitImplD2Ev(ptr noundef nonnull align 8 dereferenceable(328) %62) #10
  call void @llvm.lifetime.end.p0(i64 328, ptr nonnull %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_7TypeRefEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %30) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %29) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %29) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %27) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #10
  br label %509

460:                                              ; preds = %._crit_edge865
  %461 = landingpad { ptr, i32 }
          cleanup
  br label %473

462:                                              ; preds = %454
  %463 = landingpad { ptr, i32 }
          cleanup
  br label %466

464:                                              ; preds = %456
  %465 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_7TypeRefEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %163) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_6StaticEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %162) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %161) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %160) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %159) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %158) #10
  br label %466

466:                                              ; preds = %464, %462
  %.pn279 = phi { ptr, i32 } [ %465, %464 ], [ %463, %462 ]
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %62) #10
  br label %472

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

469:                                              ; preds = %458
  %470 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #10
  br label %471

471:                                              ; preds = %469, %467
  %.pn281 = phi { ptr, i32 } [ %470, %469 ], [ %468, %467 ]
  call void @_ZN3HIR9TraitImplD2Ev(ptr noundef nonnull align 8 dereferenceable(328) %62) #10
  br label %472

472:                                              ; preds = %471, %466
  %.pn281.pn = phi { ptr, i32 } [ %.pn281, %471 ], [ %.pn279, %466 ]
  call void @llvm.lifetime.end.p0(i64 328, ptr nonnull %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #10
  br label %473

473:                                              ; preds = %472, %460, %453
  %.pn312.pn = phi { ptr, i32 } [ %.pn312, %453 ], [ %.pn281.pn, %472 ], [ %461, %460 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_7TypeRefEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %30) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %29) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %29) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28) #10
  br label %474

474:                                              ; preds = %473, %291
  %.pn312.pn.pn = phi { ptr, i32 } [ %.pn312.pn, %473 ], [ %292, %291 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %27) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #10
  br label %475

475:                                              ; preds = %474, %289
  %.pn312.pn.pn.pn = phi { ptr, i32 } [ %.pn312.pn.pn, %474 ], [ %290, %289 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #10
  br label %510

476:                                              ; preds = %265
  %477 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %196)
  %478 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST7ImplDef4typeEv(ptr noundef nonnull align 8 dereferenceable(448) %477)
  %479 = getelementptr inbounds i8, ptr %478, i64 8
  %480 = call noundef zeroext i1 @_ZNK8TypeData7is_NoneEv(ptr noundef nonnull align 8 dereferenceable(112) %479)
  br i1 %480, label %509, label %481

481:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #10
  %482 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %196)
  %483 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST7ImplDef4typeEv(ptr noundef nonnull align 8 dereferenceable(448) %482)
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %63, ptr noundef nonnull align 8 dereferenceable(120) %483)
          to label %484 unwind label %492

484:                                              ; preds = %481
  %485 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt3mapIN3HIR10SimplePathENS0_5Crate9ImplGroupISt10unique_ptrINS0_10MarkerImplESt14default_deleteIS5_EEEESt4lessIS1_ESaISt4pairIKS1_S9_EEEixEOS1_(ptr noundef nonnull align 8 dereferenceable(48) %165, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %486 unwind label %494

486:                                              ; preds = %484
  %487 = getelementptr inbounds i8, ptr %485, i64 72
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #10
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %65) #10
  call void @_ZN3HIR13GenericParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %65, ptr noundef nonnull align 8 dereferenceable(96) %13) #10
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %166, ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %488 unwind label %496

488:                                              ; preds = %486
  store i8 1, ptr %167, align 8, !tbaa !132
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %168, ptr noundef nonnull align 8 dereferenceable(8) %63)
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %169, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %489 unwind label %498

489:                                              ; preds = %488
  invoke void @_Z15make_unique_ptrIN3HIR10MarkerImplEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.927") align 8 %64, ptr noundef nonnull align 8 dereferenceable(144) %65)
          to label %490 unwind label %501

490:                                              ; preds = %489
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR10MarkerImplESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %487, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %491 unwind label %503

491:                                              ; preds = %490
  call void @_ZNSt10unique_ptrIN3HIR10MarkerImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #10
  call void @_ZN3HIR10MarkerImplD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %65) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %65) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #10
  br label %509

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

494:                                              ; preds = %484
  %495 = landingpad { ptr, i32 }
          cleanup
  br label %507

496:                                              ; preds = %486
  %497 = landingpad { ptr, i32 }
          cleanup
  br label %500

498:                                              ; preds = %488
  %499 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %168) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %166) #10
  br label %500

500:                                              ; preds = %498, %496
  %.pn317 = phi { ptr, i32 } [ %499, %498 ], [ %497, %496 ]
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %65) #10
  br label %506

501:                                              ; preds = %489
  %502 = landingpad { ptr, i32 }
          cleanup
  br label %505

503:                                              ; preds = %490
  %504 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3HIR10MarkerImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #10
  br label %505

505:                                              ; preds = %503, %501
  %.pn319 = phi { ptr, i32 } [ %504, %503 ], [ %502, %501 ]
  call void @_ZN3HIR10MarkerImplD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %65) #10
  br label %506

506:                                              ; preds = %505, %500
  %.pn319.pn = phi { ptr, i32 } [ %.pn319, %505 ], [ %.pn317, %500 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %65) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #10
  br label %507

507:                                              ; preds = %506, %494
  %.pn319.pn.pn = phi { ptr, i32 } [ %.pn319.pn, %506 ], [ %495, %494 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #10
  br label %508

508:                                              ; preds = %507, %492
  %.pn319.pn.pn.pn = phi { ptr, i32 } [ %.pn319.pn.pn, %507 ], [ %493, %492 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #10
  br label %510

509:                                              ; preds = %491, %476, %459
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #10
  br label %622

510:                                              ; preds = %508, %475
  %.pn319.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn319.pn.pn.pn, %508 ], [ %.pn312.pn.pn.pn, %475 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  br label %511

511:                                              ; preds = %510, %287
  %.pn319.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn319.pn.pn.pn.pn, %510 ], [ %288, %287 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  br label %512

512:                                              ; preds = %511, %285
  %.pn319.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn319.pn.pn.pn.pn.pn, %511 ], [ %286, %285 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  br label %513

513:                                              ; preds = %512, %283
  %.pn319.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn319.pn.pn.pn.pn.pn.pn, %512 ], [ %284, %283 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #10
  br label %626

514:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %66) #10
  %515 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %196)
  %516 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST7ImplDef4typeEv(ptr noundef nonnull align 8 dereferenceable(448) %515)
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %66, ptr noundef nonnull align 8 dereferenceable(120) %516)
          to label %.split667 unwind label %521

.split667:                                        ; preds = %514
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %67) #10
  call void @_ZN3HIR8ItemPathC2ERKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef nonnull align 8 dereferenceable(8) %66)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #10
  store ptr %3, ptr %68, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %69) #10
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %69) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %70) #10
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %70) #10
  %517 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST4Impl5itemsEv(ptr noundef nonnull align 8 dereferenceable(472) %196)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #10
  %518 = call ptr @_ZNKSt6vectorIN3AST4Impl8ImplItemESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %517) #10
  store ptr %518, ptr %71, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #10
  %519 = call ptr @_ZNKSt6vectorIN3AST4Impl8ImplItemESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %517) #10
  store ptr %519, ptr %72, align 8
  %520 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %72) #10
  br i1 %520, label %.lr.ph664, label %._crit_edge668

._crit_edge668:                                   ; preds = %.loopexit366, %.split667
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %88) #10
  call void @llvm.lifetime.start.p0(i64 208, ptr nonnull %89) #10
  call void @_ZN3HIR13GenericParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %89, ptr noundef nonnull align 8 dereferenceable(96) %13) #10
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef nonnull align 8 dereferenceable(8) %66)
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2EOSC_(ptr noundef nonnull align 8 dereferenceable(48) %147, ptr noundef nonnull align 8 dereferenceable(48) %69) #10
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEEC2EOSC_(ptr noundef nonnull align 8 dereferenceable(48) %148, ptr noundef nonnull align 8 dereferenceable(48) %70) #10
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %149, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %609 unwind label %612

521:                                              ; preds = %514
  %522 = landingpad { ptr, i32 }
          cleanup
  br label %621

.loopexit366:                                     ; preds = %.preheader359, %.preheader357, %..loopexit347_crit_edge, %..loopexit346_crit_edge
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %73) #10
  %523 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #10
  %524 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %72) #10
  br i1 %524, label %.lr.ph664, label %._crit_edge668

.lr.ph664:                                        ; preds = %.split667, %.loopexit366
  %525 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #10
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %73) #10
  %526 = getelementptr inbounds i8, ptr %525, i64 80
  %527 = call noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %526)
  call void @_ZN3HIR8ItemPathC2ERKS0_PKc(ptr noundef nonnull align 8 dereferenceable(56) %73, ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %527)
  %528 = getelementptr inbounds i8, ptr %525, i64 88
  %529 = getelementptr inbounds i8, ptr %525, i64 32
  %530 = getelementptr inbounds i8, ptr %525, i64 72
  %531 = getelementptr inbounds i8, ptr %525, i64 8
  %532 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %528) #10
  %533 = call noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %532)
  switch i32 %533, label %540 [
    i32 0, label %539
    i32 1, label %.preheader357
    i32 2, label %.preheader359
    i32 18, label %.lr.ph624
    i32 17, label %.preheader363
  ]

.preheader363:                                    ; preds = %.lr.ph664
  %534 = call noundef nonnull align 8 dereferenceable(368) ptr @_ZN3AST4Item11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488) %532)
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %86) #10
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %87) #10
  invoke void @"_ZZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEENK3$_7clERKNS_10VisibilityE"(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Publicity") align 8 %87, ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(36) %529)
          to label %597 unwind label %.split.split

.preheader359:                                    ; preds = %.lr.ph664
  %535 = call noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST4Item11as_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %532)
  br label %.loopexit366

.preheader357:                                    ; preds = %.lr.ph664
  %536 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN3AST4Item7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(488) %532)
  br label %.loopexit366

537:                                              ; preds = %544
  %538 = landingpad { ptr, i32 }
          cleanup
  br label %608

539:                                              ; preds = %.lr.ph664
  call void @__assert_fail(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.5, i32 noundef 2211, ptr noundef nonnull @__PRETTY_FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE) #12
  unreachable

540:                                              ; preds = %.lr.ph664
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull align 8 dereferenceable(8) %525)
          to label %541 unwind label %545

541:                                              ; preds = %540
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #10
  store ptr %525, ptr %76, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull align 8 dereferenceable(8) %76) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull %75)
          to label %542 unwind label %547

542:                                              ; preds = %541
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #10
  %543 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %543, ptr noundef nonnull @.str.9)
          to label %544 unwind label %550

544:                                              ; preds = %542
  invoke void @__cxa_throw(ptr nonnull %543, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %689 unwind label %537

545:                                              ; preds = %540
  %546 = landingpad { ptr, i32 }
          cleanup
  br label %549

547:                                              ; preds = %541
  %548 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #10
  br label %549

549:                                              ; preds = %547, %545
  %.pn271 = phi { ptr, i32 } [ %548, %547 ], [ %546, %545 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #10
  br label %608

550:                                              ; preds = %542
  %551 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %543) #10
  br label %608

.lr.ph624:                                        ; preds = %.lr.ph664
  %552 = call noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(488) %532)
  %553 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3AST6Static7s_classEv(ptr noundef nonnull align 8 dereferenceable(216) %552)
  %554 = load i32, ptr %553, align 4, !tbaa !55
  %555 = icmp eq i32 %554, 0
  br i1 %555, label %556, label %582

556:                                              ; preds = %.lr.ph624
  call void @llvm.lifetime.start.p0(i64 312, ptr nonnull %77) #10
  call void @llvm.lifetime.start.p0(i64 304, ptr nonnull %78) #10
  invoke void @"_ZZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEENK3$_7clERKNS_10VisibilityE"(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Publicity") align 8 %78, ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(36) %529)
          to label %557 unwind label %566

557:                                              ; preds = %556
  %558 = load i8, ptr %530, align 8, !tbaa !57, !range !53, !noundef !54
  store i8 %558, ptr %140, align 8, !tbaa !138
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %79, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR12TypeParamDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %142, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR11LifetimeDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %142) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %143, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR13ValueParamDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %143) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %144, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR12GenericBoundESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %144) #10
  %559 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST6Static4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %552)
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %80, ptr noundef nonnull align 8 dereferenceable(120) %559)
          to label %560 unwind label %.thread

560:                                              ; preds = %557
  %561 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216) %552)
  invoke void @_Z13LowerHIR_ExprRKN3AST4ExprE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::ExprPtr") align 8 %81, ptr noundef nonnull align 8 dereferenceable(16) %561)
          to label %562 unwind label %569

562:                                              ; preds = %560
  invoke void @_ZN3HIR8ConstantC2ENS_13GenericParamsENS_7TypeRefENS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(280) %141, ptr noundef nonnull %79, ptr noundef nonnull %80, ptr noundef nonnull %81)
          to label %563 unwind label %571

563:                                              ; preds = %562
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR8TypeImpl10VisImplEntINS3_8ConstantEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.951") align 8 %77, ptr noundef nonnull align 8 dereferenceable(8) %526, ptr noundef nonnull align 8 dereferenceable(304) %78)
          to label %564 unwind label %573

564:                                              ; preds = %563
  %565 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE6insertIS8_IS0_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %70, ptr noundef nonnull align 8 dereferenceable(312) %77)
          to label %..loopexit346_crit_edge unwind label %575

..loopexit346_crit_edge:                          ; preds = %564
  call void @_ZNSt4pairI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8ConstantEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(312) %77) #10
  call void @_ZN3HIR8TypeImpl10VisImplEntINS_8ConstantEED2Ev(ptr noundef nonnull align 8 dereferenceable(304) %78) #10
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %81) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %79) #10
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %78) #10
  call void @llvm.lifetime.end.p0(i64 312, ptr nonnull %77) #10
  br label %.loopexit366

566:                                              ; preds = %556
  %567 = landingpad { ptr, i32 }
          cleanup
  br label %581

.thread:                                          ; preds = %557
  %568 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %79) #10
  br label %580

569:                                              ; preds = %560
  %570 = landingpad { ptr, i32 }
          cleanup
  br label %579

571:                                              ; preds = %562
  %572 = landingpad { ptr, i32 }
          cleanup
  br label %578

573:                                              ; preds = %563
  %574 = landingpad { ptr, i32 }
          cleanup
  br label %577

575:                                              ; preds = %564
  %576 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8ConstantEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(312) %77) #10
  br label %577

577:                                              ; preds = %575, %573
  %.pn264 = phi { ptr, i32 } [ %576, %575 ], [ %574, %573 ]
  call void @_ZN3HIR8TypeImpl10VisImplEntINS_8ConstantEED2Ev(ptr noundef nonnull align 8 dereferenceable(304) %78) #10
  br label %578

578:                                              ; preds = %577, %571
  %.0228 = phi i1 [ false, %577 ], [ true, %571 ]
  %.pn264.pn = phi { ptr, i32 } [ %.pn264, %577 ], [ %572, %571 ]
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %81) #10
  br label %579

579:                                              ; preds = %569, %578
  %.1229 = phi i1 [ %.0228, %578 ], [ true, %569 ]
  %.pn264.pn.pn = phi { ptr, i32 } [ %.pn264.pn, %578 ], [ %570, %569 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %79) #10
  br i1 %.1229, label %580, label %581

580:                                              ; preds = %.thread, %579
  %.pn264.pn.pn.pn339 = phi { ptr, i32 } [ %568, %.thread ], [ %.pn264.pn.pn, %579 ]
  call void @_ZN3HIR9PublicityD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #10
  br label %581

581:                                              ; preds = %579, %580, %566
  %.pn264.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn264.pn.pn.pn339, %580 ], [ %.pn264.pn.pn, %579 ], [ %567, %566 ]
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %78) #10
  call void @llvm.lifetime.end.p0(i64 312, ptr nonnull %77) #10
  br label %608

582:                                              ; preds = %.lr.ph624
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #10
  store ptr @__FUNCTION__._Z21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateE, ptr %82, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %83) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef nonnull align 8 dereferenceable(8) %525)
          to label %583 unwind label %587

583:                                              ; preds = %582
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %85) #10
  store ptr %82, ptr %85, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 8 dereferenceable(8) %85) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef nonnull %84)
          to label %584 unwind label %589

584:                                              ; preds = %583
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %85) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #10
  %585 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %585, ptr noundef nonnull @.str.8)
          to label %586 unwind label %592

586:                                              ; preds = %584
  invoke void @__cxa_throw(ptr nonnull %585, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %689 unwind label %594

587:                                              ; preds = %582
  %588 = landingpad { ptr, i32 }
          cleanup
  br label %591

589:                                              ; preds = %583
  %590 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %85) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #10
  br label %591

591:                                              ; preds = %589, %587
  %.pn260 = phi { ptr, i32 } [ %590, %589 ], [ %588, %587 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #10
  br label %596

592:                                              ; preds = %584
  %593 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %585) #10
  br label %596

594:                                              ; preds = %586
  %595 = landingpad { ptr, i32 }
          cleanup
  br label %596

596:                                              ; preds = %594, %592, %591
  %.pn262 = phi { ptr, i32 } [ %595, %594 ], [ %593, %592 ], [ %.pn260, %591 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #10
  br label %608

597:                                              ; preds = %.preheader363
  %598 = load i8, ptr %530, align 8, !tbaa !57, !range !53, !noundef !54
  store i8 %598, ptr %138, align 8, !tbaa !143
  invoke void @_Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Function") align 8 %139, ptr noundef nonnull byval(%"class.HIR::ItemPath") align 8 %73, ptr noundef nonnull align 8 dereferenceable(24) %531, ptr noundef nonnull align 8 dereferenceable(368) %534, ptr noundef nonnull align 8 dereferenceable(8) %66)
          to label %599 unwind label %.split511.split

599:                                              ; preds = %597
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR8TypeImpl10VisImplEntINS3_8FunctionEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.958") align 8 %86, ptr noundef nonnull align 8 dereferenceable(8) %526, ptr noundef nonnull align 8 dereferenceable(376) %87)
          to label %600 unwind label %.split514.split

600:                                              ; preds = %599
  %601 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE6insertIS8_IS0_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %69, ptr noundef nonnull align 8 dereferenceable(384) %86)
          to label %..loopexit347_crit_edge unwind label %.split517.split

..loopexit347_crit_edge:                          ; preds = %600
  call void @_ZNSt4pairI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8FunctionEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(384) %86) #10
  call void @_ZN3HIR8TypeImpl10VisImplEntINS_8FunctionEED2Ev(ptr noundef nonnull align 8 dereferenceable(376) %87) #10
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %87) #10
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %86) #10
  br label %.loopexit366

.split.split:                                     ; preds = %.preheader363
  %602 = landingpad { ptr, i32 }
          cleanup
  br label %607

.split511.split:                                  ; preds = %597
  %603 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR9PublicityD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %87) #10
  br label %607

.split514.split:                                  ; preds = %599
  %604 = landingpad { ptr, i32 }
          cleanup
  br label %606

.split517.split:                                  ; preds = %600
  %605 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8FunctionEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(384) %86) #10
  br label %606

606:                                              ; preds = %.split517.split, %.split514.split
  %.pn257 = phi { ptr, i32 } [ %605, %.split517.split ], [ %604, %.split514.split ]
  call void @_ZN3HIR8TypeImpl10VisImplEntINS_8FunctionEED2Ev(ptr noundef nonnull align 8 dereferenceable(376) %87) #10
  br label %607

607:                                              ; preds = %606, %.split511.split, %.split.split
  %.pn257.pn = phi { ptr, i32 } [ %.pn257, %606 ], [ %603, %.split511.split ], [ %602, %.split.split ]
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %87) #10
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %86) #10
  br label %608

608:                                              ; preds = %581, %596, %607, %550, %549, %537
  %.pn273 = phi { ptr, i32 } [ %538, %537 ], [ %551, %550 ], [ %.pn271, %549 ], [ %.pn257.pn, %607 ], [ %.pn264.pn.pn.pn.pn, %581 ], [ %.pn262, %596 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %73) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #10
  br label %620

609:                                              ; preds = %._crit_edge668
  invoke void @_Z15make_unique_ptrIN3HIR8TypeImplEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.961") align 8 %88, ptr noundef nonnull align 8 dereferenceable(208) %89)
          to label %610 unwind label %614

610:                                              ; preds = %609
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR8TypeImplESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %145, ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %611 unwind label %616

611:                                              ; preds = %610
  call void @_ZNSt10unique_ptrIN3HIR8TypeImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #10
  call void @_ZN3HIR8TypeImplD2Ev(ptr noundef nonnull align 8 dereferenceable(208) %89) #10
  call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %89) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #10
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %70) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %70) #10
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %69) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %69) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %67) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #10
  br label %622

612:                                              ; preds = %._crit_edge668
  %613 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %148) #10
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %147) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %146) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %89) #10
  br label %619

614:                                              ; preds = %609
  %615 = landingpad { ptr, i32 }
          cleanup
  br label %618

616:                                              ; preds = %610
  %617 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3HIR8TypeImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #10
  br label %618

618:                                              ; preds = %616, %614
  %.pn254 = phi { ptr, i32 } [ %617, %616 ], [ %615, %614 ]
  call void @_ZN3HIR8TypeImplD2Ev(ptr noundef nonnull align 8 dereferenceable(208) %89) #10
  br label %619

619:                                              ; preds = %618, %612
  %.pn254.pn = phi { ptr, i32 } [ %.pn254, %618 ], [ %613, %612 ]
  call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %89) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #10
  br label %620

620:                                              ; preds = %619, %608
  %.pn273.pn = phi { ptr, i32 } [ %.pn273, %608 ], [ %.pn254.pn, %619 ]
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8ConstantEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %70) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %70) #10
  call void @_ZNSt3mapI8RcStringN3HIR8TypeImpl10VisImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %69) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %69) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %67) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #10
  br label %621

621:                                              ; preds = %620, %521
  %.pn273.pn.pn = phi { ptr, i32 } [ %.pn273.pn, %620 ], [ %522, %521 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #10
  br label %626

622:                                              ; preds = %611, %509
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %14) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %13) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %13) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  br label %623

623:                                              ; preds = %188, %622
  %624 = 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) %10) #10
  %625 = 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) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  br i1 %625, label %188, label %._crit_edge868

626:                                              ; preds = %222, %224, %226, %239, %241, %513, %281, %621
  %.pn319.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn273.pn.pn, %621 ], [ %223, %222 ], [ %242, %241 ], [ %240, %239 ], [ %227, %226 ], [ %225, %224 ], [ %.pn319.pn.pn.pn.pn.pn.pn.pn, %513 ], [ %282, %281 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #10
  br label %627

627:                                              ; preds = %626, %220, %218
  %.pn319.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn319.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %626 ], [ %221, %220 ], [ %219, %218 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %14) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %13) #10
  br label %628

628:                                              ; preds = %627, %216
  %.pn319.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn319.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %627 ], [ %217, %216 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %13) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  br label %687

._crit_edge871:                                   ; preds = %655, %._crit_edge868
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  ret void

629:                                              ; preds = %.lr.ph870, %655
  %630 = 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) %90) #10
  %631 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %630) #10
  %632 = getelementptr inbounds i8, ptr %631, i64 80
  %633 = call noundef zeroext i1 @_ZNK3AST4Item10is_NegImplEv(ptr noundef nonnull align 8 dereferenceable(488) %632)
  br i1 %633, label %634, label %655

634:                                              ; preds = %629
  %635 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %630) #10
  %636 = getelementptr inbounds i8, ptr %635, i64 80
  %637 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZN3AST4Item10as_NegImplEv(ptr noundef nonnull align 8 dereferenceable(488) %636)
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %92) #10
  %638 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST7ImplDef6paramsEv(ptr noundef nonnull align 8 dereferenceable(448) %637)
  invoke void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericParams") align 8 %92, ptr noundef nonnull align 8 dereferenceable(48) %638, ptr noundef null)
          to label %639 unwind label %658

639:                                              ; preds = %634
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %93) #10
  %640 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST7ImplDef4typeEv(ptr noundef nonnull align 8 dereferenceable(448) %637)
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %93, ptr noundef nonnull align 8 dereferenceable(120) %640)
          to label %641 unwind label %660

641:                                              ; preds = %639
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %94) #10
  %642 = call noundef nonnull align 8 dereferenceable(248) ptr @_ZNK3AST7ImplDef5traitEv(ptr noundef nonnull align 8 dereferenceable(448) %637)
  %643 = call noundef nonnull align 8 dereferenceable(248) ptr @_ZNK3AST7ImplDef5traitEv(ptr noundef nonnull align 8 dereferenceable(448) %637)
  %644 = getelementptr inbounds i8, ptr %643, i64 8
  invoke void @_Z20LowerHIR_GenericPathRK4SpanRKN3AST4PathE17FromAST_PathClassb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %94, ptr noundef nonnull align 8 dereferenceable(8) %642, ptr noundef nonnull align 8 dereferenceable(240) %644, i32 noundef 0, i1 noundef zeroext false)
          to label %645 unwind label %662

645:                                              ; preds = %641
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %95) #10
  invoke void @_ZN3HIR10SimplePathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %95, ptr noundef nonnull align 8 dereferenceable(8) %94)
          to label %646 unwind label %664

646:                                              ; preds = %645
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %96) #10
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %96, ptr noundef nonnull align 8 dereferenceable(24) %182)
          to label %647 unwind label %666

647:                                              ; preds = %646
  %648 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt3mapIN3HIR10SimplePathENS0_5Crate9ImplGroupISt10unique_ptrINS0_10MarkerImplESt14default_deleteIS5_EEEESt4lessIS1_ESaISt4pairIKS1_S9_EEEixEOS1_(ptr noundef nonnull align 8 dereferenceable(48) %183, ptr noundef nonnull align 8 dereferenceable(8) %95)
          to label %649 unwind label %668

649:                                              ; preds = %647
  %650 = getelementptr inbounds i8, ptr %648, i64 72
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %97) #10
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %98) #10
  call void @_ZN3HIR13GenericParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %98, ptr noundef nonnull align 8 dereferenceable(96) %92) #10
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %184, ptr noundef nonnull align 8 dereferenceable(24) %96)
          to label %651 unwind label %670

651:                                              ; preds = %649
  store i8 0, ptr %185, align 8, !tbaa !132
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %186, ptr noundef nonnull align 8 dereferenceable(8) %93)
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %187, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %652 unwind label %672

652:                                              ; preds = %651
  invoke void @_Z15make_unique_ptrIN3HIR10MarkerImplEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.927") align 8 %97, ptr noundef nonnull align 8 dereferenceable(144) %98)
          to label %653 unwind label %675

653:                                              ; preds = %652
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR10MarkerImplESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %650, ptr noundef nonnull align 8 dereferenceable(8) %97)
          to label %654 unwind label %677

654:                                              ; preds = %653
  call void @_ZNSt10unique_ptrIN3HIR10MarkerImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #10
  call void @_ZN3HIR10MarkerImplD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %98) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %98) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %96) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %95) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %95) #10
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %94) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %92) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %92) #10
  br label %655

655:                                              ; preds = %629, %654
  %656 = 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) %90) #10
  %657 = 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) %90, ptr noundef nonnull align 8 dereferenceable(8) %91) #10
  br i1 %657, label %629, label %._crit_edge871

658:                                              ; preds = %634
  %659 = landingpad { ptr, i32 }
          cleanup
  br label %686

660:                                              ; preds = %639
  %661 = landingpad { ptr, i32 }
          cleanup
  br label %685

662:                                              ; preds = %641
  %663 = landingpad { ptr, i32 }
          cleanup
  br label %684

664:                                              ; preds = %645
  %665 = landingpad { ptr, i32 }
          cleanup
  br label %683

666:                                              ; preds = %646
  %667 = landingpad { ptr, i32 }
          cleanup
  br label %682

668:                                              ; preds = %647
  %669 = landingpad { ptr, i32 }
          cleanup
  br label %681

670:                                              ; preds = %649
  %671 = landingpad { ptr, i32 }
          cleanup
  br label %674

672:                                              ; preds = %651
  %673 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %186) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %184) #10
  br label %674

674:                                              ; preds = %672, %670
  %.pn243 = phi { ptr, i32 } [ %673, %672 ], [ %671, %670 ]
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %98) #10
  br label %680

675:                                              ; preds = %652
  %676 = landingpad { ptr, i32 }
          cleanup
  br label %679

677:                                              ; preds = %653
  %678 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3HIR10MarkerImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #10
  br label %679

679:                                              ; preds = %677, %675
  %.pn245 = phi { ptr, i32 } [ %678, %677 ], [ %676, %675 ]
  call void @_ZN3HIR10MarkerImplD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %98) #10
  br label %680

680:                                              ; preds = %679, %674
  %.pn245.pn = phi { ptr, i32 } [ %.pn245, %679 ], [ %.pn243, %674 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %98) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #10
  br label %681

681:                                              ; preds = %680, %668
  %.pn245.pn.pn = phi { ptr, i32 } [ %.pn245.pn, %680 ], [ %669, %668 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #10
  br label %682

682:                                              ; preds = %681, %666
  %.pn245.pn.pn.pn = phi { ptr, i32 } [ %.pn245.pn.pn, %681 ], [ %667, %666 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %96) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %95) #10
  br label %683

683:                                              ; preds = %682, %664
  %.pn245.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn245.pn.pn.pn, %682 ], [ %665, %664 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %95) #10
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #10
  br label %684

684:                                              ; preds = %683, %662
  %.pn245.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn245.pn.pn.pn.pn, %683 ], [ %663, %662 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %94) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #10
  br label %685

685:                                              ; preds = %684, %660
  %.pn245.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn245.pn.pn.pn.pn.pn, %684 ], [ %661, %660 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %92) #10
  br label %686

686:                                              ; preds = %685, %658
  %.pn245.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn245.pn.pn.pn.pn.pn.pn, %685 ], [ %659, %658 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %92) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #10
  br label %687

687:                                              ; preds = %686, %628, %174, %130
  %.pn334 = phi { ptr, i32 } [ %131, %130 ], [ %175, %174 ], [ %.pn319.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %628 ], [ %.pn245.pn.pn.pn.pn.pn.pn.pn, %686 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #10
  br label %688

688:                                              ; preds = %687, %124
  %.pn334.pn = phi { ptr, i32 } [ %.pn334, %687 ], [ %.pn, %124 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  resume { ptr, i32 } %.pn334.pn

689:                                              ; preds = %586, %544, %359, %320
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_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: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN3AST4Item10opt_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorISt10shared_ptrIN3AST6ModuleEESaIS3_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_cxxneIPKSt10shared_ptrIN3AST6ModuleEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN3AST4Impl8ImplItemESaIS2_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_cxxneIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEdeEv(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(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRK8RcStringN3HIR9TraitImpl7ImplEntINS3_8ConstantEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.875") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(288)) local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, i64 noundef) local_unnamed_addr #7

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRK8RcStringN3HIR9TraitImpl7ImplEntINS3_7TypeRefEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.882") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRK8RcStringN3HIR9TraitImpl7ImplEntINS3_8FunctionEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.889") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(360)) local_unnamed_addr #5

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueIN3HIR9TraitImplEJS1_EENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.903") align 8, ptr noundef nonnull align 8 dereferenceable(328)) local_unnamed_addr #7

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15make_unique_ptrIN3HIR10MarkerImplEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.927") align 8, ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #5

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRK8RcStringN3HIR8TypeImpl10VisImplEntINS3_8ConstantEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.951") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(304)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZ21LowerHIR_Module_ImplsRKN3AST6ModuleERN3HIR5CrateEENK3$_7clERKNS_10VisibilityE"(ptr dead_on_unwind noalias writable sret(%"class.HIR::Publicity") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(36)) local_unnamed_addr #7 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRK8RcStringN3HIR8TypeImpl10VisImplEntINS3_8FunctionEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.958") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(376)) local_unnamed_addr #5

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15make_unique_ptrIN3HIR8TypeImplEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.961") align 8, ptr noundef nonnull align 8 dereferenceable(208)) local_unnamed_addr #5

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

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

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

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

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

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

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

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

attributes #0 = { 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 #1 = { 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 #2 = { noreturn 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 #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 = { 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 #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 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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #10 = { nounwind }
attributes #11 = { noreturn }
attributes #12 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"_ZTSN3AST16PathBinding_Type10Data_TraitE", !10, i64 0, !10, i64 8}
!13 = !{!12, !10, i64 8}
!14 = !{!15, !38, i64 128}
!15 = !{!"_ZTSN3HIR5TraitE", !16, i64 0, !33, i64 96, !34, i64 104, !38, i64 128, !39, i64 136, !45, i64 192, !47, i64 248, !49, i64 304, !6, i64 360, !34, i64 368, !51, i64 392}
!16 = !{!"_ZTSN3HIR13GenericParamsE", !17, i64 0, !21, i64 24, !25, i64 48, !29, i64 72}
!17 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!21 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!25 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!29 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!33 = !{!"_ZTSN3HIR11LifetimeRefE", !6, i64 0}
!34 = !{!"_ZTSSt6vectorIN3HIR9TraitPathESaIS1_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!38 = !{!"bool", !7, i64 0}
!39 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !40, i64 0}
!40 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14AssociatedTypeEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !10, i64 0, !41, i64 8, !42, i64 16, !41, i64 24, !43, i64 32, !10, i64 48}
!41 = !{!"long", !7, i64 0}
!42 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !10, i64 0}
!43 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !44, i64 0, !41, i64 8}
!44 = !{!"float", !7, i64 0}
!45 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !46, i64 0}
!46 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14TraitValueItemEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !10, i64 0, !41, i64 8, !42, i64 16, !41, i64 24, !43, i64 32, !10, i64 48}
!47 = !{!"_ZTSSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE", !48, i64 0}
!48 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_S1_IjN3HIR11GenericPathEEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb0EEEE", !10, i64 0, !41, i64 8, !42, i64 16, !41, i64 24, !43, i64 32, !10, i64 48}
!49 = !{!"_ZTSSt13unordered_mapI8RcStringjSt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_jEEE", !50, i64 0}
!50 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_jESaIS3_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE", !10, i64 0, !41, i64 8, !42, i64 16, !41, i64 24, !43, i64 32, !10, i64 48}
!51 = !{!"_ZTSN3HIR10SimplePathE", !52, i64 0}
!52 = !{!"_ZTS10ThinVectorI8RcStringE", !10, i64 0}
!53 = !{i8 0, i8 2}
!54 = !{}
!55 = !{!56, !56, i64 0}
!56 = !{!"_ZTSN3AST6Static5ClassE", !7, i64 0}
!57 = !{!58, !38, i64 72}
!58 = !{!"_ZTSN3AST4Impl8ImplItemE", !59, i64 0, !60, i64 8, !65, i64 32, !38, i64 72, !72, i64 80, !73, i64 88}
!59 = !{!"_ZTS4Span", !10, i64 0}
!60 = !{!"_ZTSN3AST13AttributeListE", !61, i64 0}
!61 = !{!"_ZTSSt6vectorIN3AST9AttributeESaIS1_EE", !62, i64 0}
!62 = !{!"_ZTSSt12_Vector_baseIN3AST9AttributeESaIS1_EE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseIN3AST9AttributeESaIS1_EE12_Vector_implE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseIN3AST9AttributeESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!65 = !{!"_ZTSN3AST10VisibilityE", !66, i64 0, !69, i64 16, !71, i64 32}
!66 = !{!"_ZTSSt10shared_ptrIN3AST4PathEE", !67, i64 0}
!67 = !{!"_ZTSSt12__shared_ptrIN3AST4PathELN9__gnu_cxx12_Lock_policyE2EE", !10, i64 0, !68, i64 8}
!68 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !10, i64 0}
!69 = !{!"_ZTSSt10shared_ptrIN3AST12AbsolutePathEE", !70, i64 0}
!70 = !{!"_ZTSSt12__shared_ptrIN3AST12AbsolutePathELN9__gnu_cxx12_Lock_policyE2EE", !10, i64 0, !68, i64 8}
!71 = !{!"_ZTSN3AST10Visibility2TyE", !7, i64 0}
!72 = !{!"_ZTS8RcString", !10, i64 0}
!73 = !{!"_ZTSSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EE", !74, i64 0}
!74 = !{!"_ZTSSt15__uniq_ptr_dataIN3AST4ItemESt14default_deleteIS1_ELb1ELb1EE", !75, i64 0}
!75 = !{!"_ZTSSt15__uniq_ptr_implIN3AST4ItemESt14default_deleteIS1_EE", !76, i64 0}
!76 = !{!"_ZTSSt5tupleIJPN3AST4ItemESt14default_deleteIS1_EEE", !77, i64 0}
!77 = !{!"_ZTSSt11_Tuple_implILm0EJPN3AST4ItemESt14default_deleteIS1_EEE", !78, i64 0}
!78 = !{!"_ZTSSt10_Head_baseILm0EPN3AST4ItemELb0EE", !10, i64 0}
!79 = !{!80, !38, i64 0}
!80 = !{!"_ZTSN3HIR9TraitImpl7ImplEntINS_8ConstantEEE", !38, i64 0, !81, i64 8}
!81 = !{!"_ZTSN3HIR8ConstantE", !16, i64 0, !82, i64 96, !83, i64 104, !91, i64 176, !100, i64 224, !101, i64 232}
!82 = !{!"_ZTSN3HIR7TypeRefE", !10, i64 0}
!83 = !{!"_ZTSN3HIR7ExprPtrE", !84, i64 0, !85, i64 8, !85, i64 32, !89, i64 56, !90, i64 64}
!84 = !{!"_ZTSN3HIR12ExprPtrInnerE", !10, i64 0}
!85 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !86, i64 0}
!86 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !88, i64 0}
!88 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!89 = !{!"_ZTSN3MIR15FunctionPointerE", !10, i64 0}
!90 = !{!"_ZTSN3HIR12ExprStatePtrE", !10, i64 0}
!91 = !{!"_ZTS14EncodedLiteral", !92, i64 0, !96, i64 24}
!92 = !{!"_ZTSSt6vectorIhSaIhEE", !93, i64 0}
!93 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !94, i64 0}
!94 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !95, i64 0}
!95 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!96 = !{!"_ZTSSt6vectorI5RelocSaIS0_EE", !97, i64 0}
!97 = !{!"_ZTSSt12_Vector_baseI5RelocSaIS0_EE", !98, i64 0}
!98 = !{!"_ZTSNSt12_Vector_baseI5RelocSaIS0_EE12_Vector_implE", !99, i64 0}
!99 = !{!"_ZTSNSt12_Vector_baseI5RelocSaIS0_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!100 = !{!"_ZTSN3HIR8Constant10ValueStateE", !7, i64 0}
!101 = !{!"_ZTSSt3mapIN3HIR4PathE14EncodedLiteralSt4lessIS1_ESaISt4pairIKS1_S2_EEE", !102, i64 0}
!102 = !{!"_ZTSSt8_Rb_treeIN3HIR4PathESt4pairIKS1_14EncodedLiteralESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !103, i64 0}
!103 = !{!"_ZTSNSt8_Rb_treeIN3HIR4PathESt4pairIKS1_14EncodedLiteralESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !104, i64 0, !106, i64 8}
!104 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR4PathEEE", !105, i64 0}
!105 = !{!"_ZTSSt4lessIN3HIR4PathEE"}
!106 = !{!"_ZTSSt15_Rb_tree_header", !107, i64 0, !41, i64 32}
!107 = !{!"_ZTSSt18_Rb_tree_node_base", !108, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!108 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!109 = !{!110, !10, i64 0}
!110 = !{!"_ZTSN12_GLOBAL__N_115ImplTraitSourceE", !10, i64 0, !10, i64 8, !10, i64 16}
!111 = !{i64 0, i64 8, !9, i64 8, i64 8, !9, i64 16, i64 8, !9}
!112 = !{!113, !38, i64 0}
!113 = !{!"_ZTSN3HIR9TraitImpl7ImplEntINS_7TypeRefEEE", !38, i64 0, !82, i64 8}
!114 = !{!115, !38, i64 0}
!115 = !{!"_ZTSN3HIR9TraitImpl7ImplEntINS_8FunctionEEE", !38, i64 0, !116, i64 8}
!116 = !{!"_ZTSN3HIR8FunctionE", !38, i64 0, !117, i64 8, !121, i64 80, !82, i64 88, !72, i64 96, !38, i64 104, !38, i64 105, !16, i64 112, !122, i64 208, !38, i64 232, !82, i64 240, !83, i64 248, !126, i64 320}
!117 = !{!"_ZTSN3HIR7LinkageE", !118, i64 0, !119, i64 8, !119, i64 40}
!118 = !{!"_ZTSN3HIR7Linkage4TypeE", !7, i64 0}
!119 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !120, i64 0, !41, i64 8, !7, i64 16}
!120 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!121 = !{!"_ZTSN3HIR8Function8ReceiverE", !7, i64 0}
!122 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !123, i64 0}
!123 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !124, i64 0}
!124 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !125, i64 0}
!125 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!126 = !{!"_ZTSN3HIR8Function8MarkingsE", !127, i64 0, !38, i64 24, !131, i64 28}
!127 = !{!"_ZTSSt6vectorIjSaIjEE", !128, i64 0}
!128 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !129, i64 0}
!129 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !130, i64 0}
!130 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!131 = !{!"_ZTSN3HIR8Function8Markings6InlineE", !7, i64 0}
!132 = !{!133, !38, i64 120}
!133 = !{!"_ZTSN3HIR10MarkerImplE", !16, i64 0, !134, i64 96, !38, i64 120, !82, i64 128, !51, i64 136}
!134 = !{!"_ZTSN3HIR10PathParamsE", !135, i64 0, !136, i64 8, !137, i64 16}
!135 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !10, i64 0}
!136 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !10, i64 0}
!137 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !10, i64 0}
!138 = !{!139, !38, i64 16}
!139 = !{!"_ZTSN3HIR8TypeImpl10VisImplEntINS_8ConstantEEE", !140, i64 0, !38, i64 16, !81, i64 24}
!140 = !{!"_ZTSN3HIR9PublicityE", !141, i64 0}
!141 = !{!"_ZTSSt10shared_ptrIN3HIR10SimplePathEE", !142, i64 0}
!142 = !{!"_ZTSSt12__shared_ptrIN3HIR10SimplePathELN9__gnu_cxx12_Lock_policyE2EE", !10, i64 0, !68, i64 8}
!143 = !{!144, !38, i64 16}
!144 = !{!"_ZTSN3HIR8TypeImpl10VisImplEntINS_8FunctionEEE", !140, i64 0, !38, i64 16, !116, i64 24}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass